已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章 设计方法与设计优化,EDA技术与应用,教学重点,可综合的设计技术 可综合的结构 流水线设计技术,资源共享 阻塞与非阻塞赋值 毛刺的消除,10.1 设计的可综合性,10.1.1 可综合的设计,综合过程,Verilog行为级或数据流电路建模,RTL级功能块,逻辑优化,优化后的门级网表,目标工艺 面积和定时约束,Verilog基本元素与硬件电路元件间的映射,数据类型 (wire, reg, integer) 常量 语句 (if, case, assign) 结构 (门, 模块),值 (0, 1, 无关值, 不定值) 元件 (连线, 触发器, 寄存器, 锁存器, ALU, MUX),不使用initial、延时描述和forever、while、repeat 尽量采用同步方式 建议采用行为语句 always描述组合逻辑,敏感信号列出所有输入信号 尽量使用器件的全局复位端和时钟端 任务和函数通常被综合成组合逻辑,不支持=, != 要求/, %除数是2的指数,运算符 +, -, *, %, &, &, |, |, , =, !=, &, |, !=, , , ?:, ,端口类型 input, output, inout,parameter,数据类型 wire, reg, integer,module, macromodule,可综合说明,Verilog结构,条件语句 if-else, case, casex, casez, endcase,同一reg采用一种,过程赋值: 阻塞 =, 非阻塞 =,持续赋值 assign,基本门元件 and, nand, or, nor, xor, xnor, not buf, bufif1, bufif0, notif1, notif0 pullup, pulldown,可综合说明,Verilog结构,编译向导 include, define, ifdef, else, endif,task, endtask,function, endfunction,过程语句 always 块语句 begin-end,循环语句 for,可综合说明,Verilog结构,忽略的verilog结构,不支持的verilog结构,不支持的verilog结构,10.2 流水线设计技术,流水线操作,【例10.1】非流水线 8位全加器 module adder8( cout, sum, ina, inb, cin, clk ); output7:0 sum; output cout; input7:0 ina, inb; input cin, clk; reg7:0 tempa, tempb, sum; reg cout; reg tempc;,always ( posedge clk ) begin tempa = ina; tempb = inb; tempc = cin; end always ( posedge clk ) begin cout, sum = tempa + tempb + tempc; end endmodule,普通8位全加器RTL图,时序分析 Tools | Timing Analyzer Tool 目标器件 FLEX10K EPF10K10TC144-3,普通8位全加器,【例10.2】4级流水线 8位全加器 module pipeline( cout, sum, ina, inb, cin, clk ); output7:0 sum; output cout; input7:0 ina, inb; input cin, clk; reg7:0 tempa, tempb, sum; reg tempci, firstco, secondco, thirdco, cout; reg1:0 firsts, thirda, thirdb; reg3:0 seconda, secondb, seconds; reg5:0 firsta, firstb, thirds;,always ( posedge clk ) begin tempa = ina; tempb = inb; tempci = cin; end always ( posedge clk ) / 第一级加(低2位) begin firstco, firsts = tempa1:0 + tempb1:0 + tempci; firsta = tempa7:2; firstb = tempb7:2; end always ( posedge clk ) / 第二级加(第2 、3位相加) begin secondco, seconds = firsta1:0+firstb1:0+firstco, firsts ; seconda = firsta5:2; secondb = firstb5:2; end,always ( posedge clk ) / 第三级加(第4、5位相加) begin thirdco, thirds = seconda1:0 + secondb1:0 + secondco, seconds ; thirda = seconda3:2; thirdb = secondb3:2; end always ( posedge clk ) / 第四级加(高两位相加) begin cout, sum = thirda1:0 + thirdb1:0 + thirdco, thirds ; end endmodule,4级流水线8位全加器,10.3 资源共享,采用函数或任务,共享复杂的运算单元 用括号控制综合结果,重用计算结果 模块数据宽度尽量小,【例10.3】2个加法器和1个选择器 module resource1( sum, a, b, c, d, sel ); parameter size = 4; outputsize:0 sum; input sel; inputsize-1:0 a, b, c, d; regsize:0 sum; always ( a or b or c or d or sel ) begin if( sel ) sum = a + b; else sum = c + d; end endmodule,【例10.4】2个选择器和1个加法器 module resource2( sum, a, b, c, d, sel ); parameter size = 4; outputsize:0 sum; input sel; inputsize-1:0 a, b, c, d; regsize:0 sum; regsize-1:0 atemp, btemp; always ( a or b or c or d or sel ) begin if( sel ) begin atemp = a; btemp = b; end else begin atemp = c; btemp = d; end sum = atemp + btemp; end endmodule,器件资源消耗比较,【例10.5】设计可重用举例1 module adder( s1, s2, a, b, c ); output4:0 s1, s2; input3:0 a, b, c; reg4:0 s1, s2; always ( a or b or c ) begin s1 = a + b; s2 = c + a + b; end endmodule,RTL图,【例10.6】设计可重用举例2 module adder( s1, s2, a, b, c ); output4:0 s1, s2; input3:0 a, b, c; reg4:0 s1, s2; always ( a or b or c ) begin s1 = a + b; s2 = c + ( a + b ); end endmodule,RTL图,10.4 过程,过程是一个独立的运行单元 always过程 initial过程 assign赋值语句 元件调用,10.4.1 过程,过程的特点 过程只有执行和等待两种状态 过程一般由敏感信号的变化启动 各过程并发执行 1个过程只能描述1个同步时序逻辑,组合与时序逻辑尽量分配到不同过程 各过程通过握手信号相互通信和协调,10.4.1 过程间的通信,DATA,10.5 阻塞与非阻塞赋值,阻塞与非阻塞赋值的定义,(1)非阻塞(non_blocking)赋值方式 赋值符号为=,在整个过程块结束时完成赋值, 可以理解为并行执行。 (2)阻塞(blocking)赋值方式 赋值符号为=,在该语句结束时就完成赋值。 如果一个块语句有多条阻塞赋值语句,那么在前面的赋值语句没有完成之前,后面的语句就不能执行,可以理解为顺序执行。,在可综合的硬件设计中,使用阻塞和非阻塞赋值语句时,应注意以下原则 (1)当用“always”块来描述组合逻辑时,既可以用阻塞赋值,也可以采用非阻塞赋值,应尽量使用阻塞赋值。 (2)对时序逻辑描述和建模,使用非阻塞赋值方式。 (3)为锁存器(Latch)建模,应使用非阻塞赋值。 (4)若在同一个“always”过程块中既为组合逻辑建模,又为时序逻辑建模,最好使用非阻塞赋值方式。,在可综合的硬件设计中,使用阻塞和非阻塞赋值语句时,应注意以下原则 (5)在一个“always”过程块中,最好不要混合使用阻塞赋值和非阻塞赋值,虽然同时使用这两种赋值方式在综合时并不一定会出错,但对同一个变量不能既进行阻塞赋值,又进行非阻塞赋值,这样在综合时会报错。 (6)不能在两个个或两个以上的“always”过程块中对同一个变量赋值,这样会引发冲突,在综合时会报错。 (7)仿真时使用$strobe显示非阻塞赋值的变量。,时序逻辑建模应尽量使用非阻塞赋值方式,【例10.9】 阻塞赋值方式描述的移位寄存器1 module block1(q0,q1,q2,q3,din,clk); input clk,din; output reg q0,q1,q2,q3; always (posedge clk) begin q3=q2; /注意赋值语句的顺序 q2=q1; q1=q0; q0=din; end endmodule,例10.9的RTL综合结果,【例10.10】 阻塞赋值方式描述的移位寄存器2。 module block2(q0,q1,q2,q3,din,clk); input clk,din; output reg q0,q1,q2,q3; always (posedge clk) begin q3=q2; q1=q0; /该句与下句的顺序与例10.9颠倒 q2=q1; q0=din; end endmodule,例10.10的RTL综合结果,【例10.11】 阻塞赋值方式描述的移位寄存器3。 module block3(q0,q1,q2,q3,din,clk); input clk,din; output reg q0,q1,q2,q3; always (posedge clk) begin q0=din; /4条赋值语句的顺序与例10.9中完全颠倒 q1=q0; q2=q1; q3=q2; end endmodule,例10.11的RTL综合结果,【例10.12】 非阻塞赋值方式描述的移位寄存器。 module block4(q0,q1,q2,q3,din,clk); input clk,din; output reg q0,q1,q2,q3; always (posedge clk) begin q3=q2; q1=q0; q2=q1; q0=din; end endmodule,结 论,对于阻塞赋值来说,赋值语句的顺序对最后的综合结果有着直接的影响。而如果采用非阻塞赋值方式来描述的话,则可以不考虑赋值语句的排列顺序,只需将其连接关系描述清楚即可。,信号在FPGA器件内部通过连线和逻辑门时,都有一定的延时。因此多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,往往会出现一些不正确的“毛刺”(Glitch),称为“冒险”(Hazard)现象。 这些毛刺在电路板的设计中由于PCB走线时,存在分布电感和分布电容,所以许多毛刺能够被自然滤除,而在PLD内部没有分布电感和电容,这些毛刺将被完整地保留并向下一级传递,所以在FPGA设计中,如何消除毛刺就变得很重要。,10.6 毛刺的消除,可通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器。 还可根据D触发器的D输入端对毛刺不敏感的特点而消除毛刺,举例说明,【例10.23】 长帧同步时钟的产生 module longframe1(clk,strb); parameter DELAY=8; input clk; output reg strb; reg7:0 counter; always(posedge clk) begin if(counter=255) counter=0; else counter=counter+1; end always(counter) begin if(counter=(DELAY-1) strb=1; else strb=0; end endmodule,毛刺,时序仿真输出波形,引入了D触发器的长帧同步时钟的产生 module longframe2(clk,strb); p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19148.3-2026灯座的型式和尺寸第3部分:预聚焦式灯座
- 2025-2026年四川省初中物理电学综合测试卷
- 2026年情绪管理能力自测试题
- 2025-2026年四川省人教版三年级语文上册第1单元测试卷
- 2026年人教版高中化学必修第二册元素周期律练习题
- 2025-2026年江苏省八年级化学上册第四单元化学计算测试题
- 2026年重庆市苏教版高中数学选修第二册综合测试卷
- 2025年山东省苏教版初中数学下册第4章同步练习题
- 2025-2026年重庆市北师大版初中物理实验探究能力测试卷
- 2026年二级建造师考试施工管理实务模拟试卷
- 第1课 开启物联网之门 课件(内嵌视频)2026-2027学年人教版初中信息科技八年级全一册
- 2026年工商注册代理从业人员考核模拟试题及答案
- 2026国家能源集团科学技术研究总院(北京低碳清洁能源研究院)社会招聘84人考前冲刺试卷【典优】附答案详解
- 2026年跨境电商海外仓建设与运营管理
- 国家开放大学汉语言文学本科《古代诗歌散文专题》历年期末纸质考试真题总题库2027珍藏版
- 2026新教材全国培训:统编版小学语文五年级教材解析
- 2026年秋季开学第一课:强国复兴有我
- 踔厉奋发 2026-2027学年第一学期初中一年级道德与法治教学工作计划
- 2026-2030瓶装水行业市场深度分析及竞争格局与投资价值研究报告
- 2026年四川成都市初中学业水平考试生物试卷真题(含答案详解)
- 天津交通数字科技有限公司招聘笔试题库2026
评论
0/150
提交评论