FPGA课程演示ppt课件_第1页
FPGA课程演示ppt课件_第2页
FPGA课程演示ppt课件_第3页
FPGA课程演示ppt课件_第4页
FPGA课程演示ppt课件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一一. FPGA. FPGA的简单介绍的简单介绍二二.VERILOG.VERILOG的简单介绍的简单介绍三三.QUARTUS2.QUARTUS2的简单介绍的简单介绍 一个简单的工程实一个简单的工程实例例;2可编程逻辑最简单的实现逻辑门和寄存器固定可编程乘积和阵列以及输出控制可编程阵列逻辑(PAL)ABi i乘积项输入可编程阵列时钟X宏单元*注释:某些器件和文档把所有这 3部分当做宏单元;3从PAL到可编程逻辑器件(PLD)在单个器件中排列多个PAL阵列可编程宏单元8可变乘积项分配101214;4从CPLD到FPGA高密度CPLD需要额外的全局布线,不够灵活LAB本身重新排列到一个阵列中CPLD

2、CPLDFPGA!FPGA!;5现场可编程门阵列 (FPGA)LAB排列在阵列中行列可编程互联互联可以跨过所有或者部分阵列LAB行互联列互联分段互联;6 6VERILOG HDL定义Verilog HDL并不是软件编程语言软件编程语言实现的功能可以通过指令集在处理器上执行Verilog HDL是硬件描述语言可综合和可仿真的代码,使用目标器件的结构单元在硬件中实现,例如触发器和查找表等。HDL - Hardware Description Language硬件描述语言是软件编程语言,用于对硬件进行建模。RTL Register Transfer Level寄存器传送级定义了信号和寄存器数据流输入

3、输出的相互关系。;7VERILOG HDL基本模型结构module module_name (port_list);module module_name (port_list);端口声明数据类型声明电路功能时序规范endmoduleendmodulen CASE-CASE-敏感敏感n 所有关键字为小写所有关键字为小写n 空白用于提高可读性空白用于提高可读性n 分号是声明结束符分号是声明结束符n 单行注释:单行注释:/ /n 多行注释:多行注释: / /* * * */ /n 时序规范用于仿真时序规范用于仿真;8 8端口端口列表:端口名称列表例如:module mult_acc (out, in

4、a, inb, clk, clr); 端口类型:input- 输入端口output- 输出端口inout- 双向端口端口声明: ;例子:input 7:0 ina, inb;input clk, clr;output 15:0 out;9 9数据类型网数据类型网数据类型 表示进程之间的物理互联表示进程之间的物理互联( (活动流程活动流程) )功能模块: MUX (nets)功能模块: Adders (nets)进程进程 nets nets nets nets nets netsn寄存器数据类型寄存器数据类型 表示暂时存储数据的变量表示暂时存储数据的变量n可以表示寄存或者组合节点可以表示寄存或者

5、组合节点;10连续赋值声明n 使用算子,对组合逻辑行为进行建模n 1) 左手侧(LHS)必须是net数据类型n 2) 保持主动:当一个右手侧(RHS)操作数变化时,评估表达式,立即更新LHS netn 3) RHS可以是net、寄存器或者函数调用n 4) 延迟值可以赋值给模型逻辑门延迟wire adder_out = mult_out + outwire adder_out = mult_out + out/ /* *implicit continuous assignment implicit continuous assignment * */ /等价于等价于 wire adder_out

6、;wire adder_out;assign adder_out = mult_out + outassign adder_out = mult_out + outassign #5 adder_out = mult_out + outassign #5 adder_out = mult_out + out;1111进程赋值模块initialinitial模块模块用于初始化仿真的行为声明用于初始化仿真的行为声明( (被综合器忽略被综合器忽略) )alwaysalways模块模块使用行为声明,用于描述电路功能使用行为声明,用于描述电路功能每个每个alwaysalways和和initialinit

7、ial模块代表不同的进程模块代表不同的进程进程并行运行,在仿真时间进程并行运行,在仿真时间0 0开始。开始。而进程中的声明顺序执行而进程中的声明顺序执行 alwaysalways和和initialinitial模块不能嵌套模块不能嵌套;1212ALWAYS模块由行为声明构成如果有多个always模块,同时执行每个模块。用于对数字电路中不断重复的进程进行建模一个always模块在时间0启动,以循环的方式连续执行行为声明。初始模块中的行为声明顺序执行因此,声明的顺序并不重要。;13ALWAYS模块例子时间时间执行的声明执行的声明 0 0 clk = 1b0 clk = 1b0 25 25 clk

8、= 1b1 clk = 1b1 50 50 clk = 1b0 clk = 1b0 75 75 clk = 1b1 clk = 1b1 100 100 $finish $finishmodule clock_gen (clk);module clock_gen (clk);output clk;output clk;reg clk;reg clk;parameter period=50, duty_cycle=50;parameter period=50, duty_cycle=50;initialinitialclk = 1b0;clk = 1b0;alwaysalways#(duty_cy

9、cle#(duty_cycle* *period/100) clk = clk;period/100) clk = clk;initialinitial#100 $finish;#100 $finish;endmoduleendmodule;1414两类进程赋值阻塞赋值 (=) : 按顺序模块中指定的次序执行非阻塞赋值(=) : 不对顺序模块后的声明进行阻塞赋值,支持对赋值的调度。驻留在进程模块中更新reg、integer、real, time或者realtime变量值(例如,左手侧类型);15阻塞和非阻塞赋值initialinitial begin begin#5 #5 a = b;a =

10、b;#10#10c = d;c = d; end endinitialinitial begin begin#5 #5 a = b;a = b;#10#10c = d;c = d; end end5 10 155 10 15阻塞阻塞 (=) (=)非阻塞非阻塞 (=) (=)5 10 155 10 15a=ba=bc=dc=da=ba=bc=dc=d;16同步和异步同步预设和清除同步预设和清除 异步清除异步清除module sync (d,clk, clr, pre, q);module sync (d,clk, clr, pre, q);input d, clk, clr, pre ;inp

11、ut d, clk, clr, pre ;output q ;output q ;reg q ;reg q ;always (posedge clk) always (posedge clk) beginbegin if (clr) if (clr) q = 1b0 ; q = 1b0 ; else if (pre) else if (pre) q = 1b1 ; q = 1b1 ; else else q = d ; q = d ; end endendmoduleendmodulemodule async (d,clk, clr, q);module async (d,clk, clr, q);input d, clk, clr ;input d, clk, clr ;output q ;output q ;reg q ;reg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论