FPGA设计基础第3章FPGA设计入门课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《FPGA设计基础第3章FPGA设计入门课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 设计 基础 入门 课件
- 资源描述:
-
1、第三章 FPGA设计入门n有效的建模风格是控制综合结果的最有力手段。n绝大多数系统设计都是使用HDL来实现 。n利用Verilog HDL进行FPGA设计规则、方法和技巧。 Page 1组合逻辑电路组合逻辑电路 n是指数字电路在任何时刻的是指数字电路在任何时刻的输出仅仅取输出仅仅取决于该时刻数字电路的输入决于该时刻数字电路的输入,而与电路,而与电路原来的状态原来的状态 无关。无关。n组合逻辑电路分类:组合逻辑电路分类: 门电路门电路 编码器、译码器和选择器编码器、译码器和选择器 数据缓冲器数据缓冲器时序逻辑电路时序逻辑电路 n时序逻辑电路就是指数字电路在任何时刻的输出不仅时序逻辑电路就是指数字
2、电路在任何时刻的输出不仅 仅取决于该时刻数字电路的输入,还取决于电路原来仅取决于该时刻数字电路的输入,还取决于电路原来 的状态。的状态。n时钟:进程敏感信号时钟:进程敏感信号n同步与异步复位同步与异步复位 同步复位:复位语句是在以时钟为进程中执行同步复位:复位语句是在以时钟为进程中执行 异步复位:进程敏感信号包括时钟和复位信号异步复位:进程敏感信号包括时钟和复位信号n 分类:分类:触发器触发器 计数器:同步:在时钟下,各触发器状态同时变化计数器:同步:在时钟下,各触发器状态同时变化 异步:上一位数据是下个触发器的时钟信号异步:上一位数据是下个触发器的时钟信号 3.1 系统的抽象层次与Veril
3、og 一个系统可以在不同的抽象层次上进行描述,也可以从不同的描述域(行为结构物理)进行描述。1、系统描述的三个 “域”n 说明一个特定的系统完成什么功能n 说明不同的实体之间是如何连接的n 则说明如何构造出一个实际的器件 Page 33.1 系统的抽象层次与Verilog Verilog可以在三个域、五个抽象层次上描述一个系统。n行为模型-着重于描述系统的功能,忽略系统的实现(系统级或体系结构级,也可能是算法级)。n结构模型-较为详细地至少描述到寄存器数据流的方式,大体的描述到了系统的结构和实现(RTL/门级/开关级)。 Page 43.1 系统的抽象层次与Verilog2、系统描述的五个层次
4、 工程师可以在系统级、算法级、RTL(Register Transfer Level 寄存器传输)级、逻辑级和电路级五个层次上描述一个系统,其中系统级的抽象层次最高,而电路级的抽象层次最低。抽象层次越高,所包含的细节信息就越少,抽象层次越低,所包含的细节就越多。 物理域行为域结构域系统级算法级RTL级电路级逻辑级晶体管门电路ALU控制器处理器/存储器晶体管版图标准单元宏单元芯片/板级模块系统规范算法寄存器传输布尔等式晶体管函数Page 5Page 63.1 系统的抽象层次与Verilogmodule adder(a,b,c0,c, sum); input 3:0 a,b; input c0;
5、output 3:0 sum; output c; wire 4:0 mid_res; assign mid_res = a + b + c0; assign sum = mid_res3:0; assign c = mid_res4;endmodule 例如:行为级建模4bit全加器。n 因为在系统设计初期,人们更关心所设计系统的逻辑功能,还未关心系统的性能。n 行为级功能确认后,可进一步细化得到结构模型。Page 73.1 系统的抽象层次与Verilog 行为级综合有时也称为高层次综合(highlevel synthesis),高层次综合工具对行为级描述电路的综合效果没有用RTL级描述的电
6、路综合的效果好,故大部分的电路是在RTL级进行描述的。 我们通常用 Verilog 在RTL级描述一个设计,借助于自动综合工具,设计人员可以将RTL级代码快速且便捷地变换成逻辑级描述。 Page 83.1 系统的抽象层次与Verilog RTL级描述的典型模型 Page 93.1 系统的抽象层次与Verilog 对于有些特殊的电路,我们有时也采用“门级描述”来描述结构模型-即通过逻辑门及其互连线描述电路。在Verilog中可以通过三种实例化语句描述结构模型。n Verilog內建的基本逻辑门n 用户定义原语UPDn Module实例语句 (Book P86/87分别有RTL描述和门级描述例子)
7、Page 103.2 用Verilog建立数字电路模型 设计的最终目标是将设计电路映射到具体的物理器件上。Verilog功能强大,用途范围广泛,语句丰富,但其中只有部分子集描述的设计可以通过EDA工具综合成具体的电路-Verilog可综合子集。 良好的建模风格是控制综合结果的最有力的手段。Page 113.2.1 代码的书写风格n编写代码的目的是对系统进行精确的描述,进行人-机(人-人)交流1、完备清晰的版本信息2、简洁扼要的功能说明,端口说明、变量说明,注释信息3、规范的端口定义,端口、变量命名规则4、模块互连时采用 “显式关联方式”Page 123.2.2 可综合代码的编码风格always
8、 (posedge clk) begin begin begin q1 = d; q3 = q2; q1 = d; q2 = q1; q2 = q1; q2 = q1; q3 = q2; q1 = d; q3 = q2; end end end /A 1 /B /C1、正确地理解和使用“阻塞/非阻塞”赋值备注:综合结果见 P91、P92 图示。例3.2 见 ModelSim 例集例3.1 三级移位寄存器的设计。B、C: 三移位寄存器 A : D触发器 Page 13Page 143.2.2 可综合代码的编码风格n建议: 在用always过程建立组合电路时 ,使用阻塞赋值(=),在用always
9、过程描述时序电路时,使用非阻塞赋值语句 (可综合组合电路的三种描述形式Page 163.2.2 可综合代码的编码风格b 简单组合电路设计方法1、定义入、定义入/出逻辑变量出逻辑变量2、列真值表,写表达式,、列真值表,写表达式,化简化简3、电路图设计、电路图设计4、实验验证、实验验证n手工设计步骤nHDL设计步骤1、定义入、定义入/出逻辑变量出逻辑变量2、列真值表,写表达式、列真值表,写表达式3、Verilog 编码编码4、仿真验证、仿真验证5、综合、综合(优化、电路实现)(优化、电路实现)Page 17例3.7 半加器3.2.2 可综合代码的编码风格module HA (a,b,c,s); i
10、nput a, b; output c,s; wire c,s; wire 1:0 adder; assign adder = a + b; assign s =adder0; assign c = adder1; endmodule 备注:多种描述方法描述同样功能。Page 183.2.2 可综合代码的编码风格例3.8 全加器/实例化半加器,结构描述“全加器”module FA(a,b,c_i,s,c_o) input a, b,c_i; output s,c_o; wire c,s,c1; HA HA_1(.a(a),.b(b),.c(c),.s(s); HA HA_2(.a(s),.b(
11、c),.c(c1),.s(s); assign c_o = c | c1;endmodule Page 193.2.2 可综合代码的编码风格/ 根据功能描述 “全加器”module FA (a,b,c_i,s,c_o) ; input a, b,c_i; output s,c_o; wire 1:0 full_adder; /2比特变量,高位为进位,低位为和。 assign full_adder = a + b + c_i; assign s = full_adder0; assign c_o = full_adder1; endmodule 3.2.2 可综合代码的编码风格可以利用多个 “1
12、位全加器” 构成多位的二进制加法器,即所谓的 “行波加法器” 。Page 20Page 213.2.2 可综合代码的编码风格module adder_3(a,b,c0,s,cy);input 2:0 a,b;input c0; output 2:0 s;output cy; wire c1,c2;FA_1 FA1(.a(a0),.b(b0),.c_i(c0),.s(s0) ,.c_o(c1);FA_1 FA2(.a(a1),.b(b1),.c_i(c1),.s(s1) ,.c_o(c2);FA_1 FA3(.a(a2),.b(b2),.c_i(c2),.s(s2) ,.c_o(cy);endm
13、odulen实例化1位全加器,设计 “3位全加器”Page 223.2.2 可综合代码的编码风格例3.10 多路选择器可以通过CASE结构与IF-THEN-ELSE结构实现 。要注意的是:ncase 结构无优先级特征nif else 结构隐含着优先级电路综合的结果有些差别。module single_if(a, b, c, d, sel, z); input a, b, c, d; input 3:0 sel; output z; reg z; always (a or b or c or d or sel) begin if (sel3) z = d; else if (sel2) z =
14、c; else if (sel1) z = b; else if (sel0) z = a; else z =0 ; endendmodulen选择控制端sel3:0高位有高优先级Page 23module case1(a, b, c, d, sel, z); input a, b, c, d; input 1:0 sel; output z; reg z; always (a or b or c or d or sel) begin casex (sel) 2b00: z = d; 2b01: z = c; 2b10: z = b; 2b11: z = a; default: z = 1b0
15、; endcase endendmodule n选择控制端sel1:0无优先级Page 24Page 25c 组合电路设计中应注意的问题3.2.2 可综合代码的编码风格不要有逻辑反馈(不能产生组合环)在敏感变量表中列全所有的敏感信号(RHS中以及“条件”中的信号都要进入敏感信号表) 避免设计中无意间产生锁存器 (case 语句有 default,if 语句 else 末分支,EXP 3.13)Page 26D Q组合逻辑组合逻辑组合逻辑D QclkD inQ outabcD QD QclkD inQ out组合逻辑组合逻辑组合逻辑有组合环Page 273.2.2 可综合代码的编码风格3、三态总
16、线接口电路的设计n三态总线接口电路主要应用于微机接口(使能三态总线接口电路主要应用于微机接口(使能时传送,禁能时高阻)。时传送,禁能时高阻)。n三态总线接口电路设计使用三态总线接口电路设计使用 “ “连续赋值连续赋值” ” (assign)语句,其中一个分支被赋值成高阻语句,其中一个分支被赋值成高阻zz状态。状态。Page 283.2.2 可综合代码的编码风格 单向三态总线assign data_to_bus = (bus_enable) ? (core_log_to_bus) : 8hz;Page 293.2.2 可综合代码的编码风格 双向三态总线Page 30module bi_dir_b
17、us(rst_n, wr_clk, wr_en, rd_en,addr, data_to_from_bus );input rst_n; /复位信号;input wr_clk; /写数据时钟;input wr_en; /写使能;input rd_en; /读使能;input 1:0 addr; /地址;inout 7:0 data_to_from_bus; /双向数据总线;reg 7:0 reg1,reg2,reg3,reg4;wire 7:0 core_logic;assign data_to_from_bus = (rd_en) ? core_logic: 8hz; always (neg
18、edge rst_n or posedge wr_clk) if (!rst_n) reg1 = 8h 00; else if (wr_en & addr = 2b 00) reg1 = data_to_from_bus; Page 31./reg2,reg3 同样的处理. always (negedge rst_n or posedge wr_clk) if (!rst_n) reg4 = 8h 00; else if (wr_en & addr = 2b 11) reg4 = data_to_from_bus; assign core_logic = (addr = 2b 00) ? re
19、g1 : (addr = 2b 01) ? reg2: (addr = 2b 10) ? reg3 : reg4 ;endmodule 3.2.2 可综合代码的编码风格-双向三态总线3.2.3 时序电路的设计1、时序电路的基本概念 时序电路的模型 n(通常)时序电路的输出不仅与当前的输入有关,而且与电路过去的状态也有关系。n时序电路由存储元件(记忆功能,FF实现)和组合电路(用于完成运算)组成。nFPGA中,一般使用D触发器作为存储元件 。组 合 电 路x1.xnz1.zm存 储 元 件Y1.Yny1ynPage 32Page 333.2.3 时序电路的设计 触发器的建立时间(tsu)、保持时
20、间(th) tsu - 触发器的时钟信号有效沿到来前,数据稳定 不变的时间。 th - 触发器的时钟信号有效沿到来以后,数据保持稳定不变的时间。Page 343.2.3 时序电路的设计 同步电路/异步电路n如果时序电路中的所有D触发器的时钟端(锁存器除外)都与同一个时钟相连接,则称为同步时序电路,否则就称为是异步时序电路。 n本课程只研究同步电路设计。同步电路设计相对简单,设计出的电路可靠性高。 Page 353.2.3 时序电路的设计 时钟树n在同步设计中,要求时钟信号必须在同一时间到达电路中每个寄存器的时钟输入端,而且时钟信号经过输入管脚到达触发器的路径延时很小。 n在FPGA中,给专用的
21、I/O模块配置了速度非常快的时钟驱动缓存器,这些缓冲器驱动输入时钟信号到芯片内部的时钟树上。n时钟树的结构像一个树,它的每个分支都驱动固定数目的触发器,每个分支都有相同的长度。时钟驱动能快速驱动整个时钟树,时钟信号延时最小,一致性最好。 Page 363.2.3 时序电路的设计 时钟类型(四种类型)n全局时钟-有专用的全局时钟管脚,直接连接到器件中的每个寄存器的时钟端,以提供最小的时钟信号延迟和时钟歪斜(skew)。 n门控时钟-由逻辑门和时钟进行逻辑操作后产生的时钟。设计不当的门控时钟往往容易产生毛刺,从而影响电路的可靠性。Page 373.2.3 时序电路的设计n行波时钟-用一个D触发器的
展开阅读全文