版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六讲verilog的可综合性逻辑综合Verilog的逻辑综合Verilog的可综合风格6.1逻辑综合逻辑综合l 逻辑综合逻辑综合: :在标准单元库和特定的设计约束的基础上,把设在标准单元库和特定的设计约束的基础上,把设计的计的高层次描述转换成优化的门级网表的高层次描述转换成优化的门级网表的过程。过程。l标准单元库可以包含简单的单元,例如与门、或门和或非门标准单元库可以包含简单的单元,例如与门、或门和或非门等基本逻辑门,也可以包含宏单元,例如加法器、多路选择器等基本逻辑门,也可以包含宏单元,例如加法器、多路选择器和特殊的触发器。和特殊的触发器。l 计算机辅助逻辑综合计算机辅助逻辑综合工具的出现
2、已经把高层次描述向逻辑门工具的出现已经把高层次描述向逻辑门的转化过程自动化了。设计者现在可以把精力集中在体系结构的转化过程自动化了。设计者现在可以把精力集中在体系结构的方案、设计的硬件语言描述上,由综合工具在内部进行几次的方案、设计的硬件语言描述上,由综合工具在内部进行几次反复,生成优化的门级描述。反复,生成优化的门级描述。l 自动化的逻辑综合自动化的逻辑综合已经非常有效地减少了高层次设计到门级已经非常有效地减少了高层次设计到门级网表的转化时间。它使设计者可以把更多的时间用于更高层次网表的转化时间。它使设计者可以把更多的时间用于更高层次的描述上,因为把设计转换到门级网表所需的时间大大减少了。的
3、描述上,因为把设计转换到门级网表所需的时间大大减少了。l 寄存器传输级寄存器传输级(RTL)(RTL)层次用硬件描述语言层次用硬件描述语言verilogverilog编写编写设计。设计。l术语术语RTLRTL用于表示用于表示HDLHDL的一种风格,该风格的描述采用的一种风格,该风格的描述采用了了数据流和行为结构相结合数据流和行为结构相结合的方式。的方式。l逻辑综合工具接受逻辑综合工具接受RTLRTL级描述并把它转化为优化的门级级描述并把它转化为优化的门级网表。网表。lVerilogVerilog和和VHDLVHDL是两种最流行的是两种最流行的RTLRTL描述语言描述语言 6.2Verilog
4、HDL综合综合结构类型结构类型关键字或描述注释关键字或描述注释端口端口参数参数模块定义模块定义信号和变量信号和变量调用(实例引用)调用(实例引用)函数和任务函数和任务过程过程过程块过程块数据流数据流循环循环input, inout, outputparametermodulewire , reg , tri 允许使用向量表示允许使用向量表示模块调用和门级原语调用模块调用和门级原语调用 function, task 不考虑时序结构不考虑时序结构always, if, else, case,casex, casez 不支持不支持initialbegin, end, named blocks, di
5、sableassign 不考虑延迟信息不考虑延迟信息for , while, forever while和和forever循环必循环必 须须包括包括(posedge clock)或或(negedge clock)支持综合的支持综合的Verilog结构类型结构类型l逻辑综合工具并不能处理随意编写的逻辑综合工具并不能处理随意编写的verilog结构描述:通常,结构描述:通常,周周期期到到周期周期的任何的任何RTL verilog结构描述都能为逻辑综合工具所接受。结构描述都能为逻辑综合工具所接受。一、一、verilog结构类型结构类型l只有周期到周期只有周期到周期的任何的任何RTL verilogR
6、TL verilog结构描述都能结构描述都能为逻辑综合工具所接受。例为逻辑综合工具所接受。例whilewhile和和foreverforever语句必须语句必须由由(posedge(posedge clock) clock)或或(negedge(negedge clock) clock)终止循环,终止循环,使其具有强制性的周期到周期的描述。使其具有强制性的周期到周期的描述。l结构指定的延迟将被忽略结构指定的延迟将被忽略l不支持不支持initialinitial语句,必须用复位机制来代替。语句,必须用复位机制来代替。l要明确指定信号和变量的宽度。要明确指定信号和变量的宽度。否则,综合后的可否则,
7、综合后的可能会产生大量的门级网表能会产生大量的门级网表注意事项:注意事项:二、操作符二、操作符l几乎所有的操作符都可以综合。几乎所有的操作符都可以综合。l和!与和!与x x和和z z有关的操作符不可综合有关的操作符不可综合l写表达式时,要用写表达式时,要用圆括号使逻辑关系明确圆括号使逻辑关系明确,最好不要依赖运算的优先级,最好不要依赖运算的优先级操作符类型操作符类型符号符号连接及复制操作符连接及复制操作符一元操作符一元操作符算术操作符算术操作符逻辑移位操作符逻辑移位操作符关系操作符关系操作符相等操作符相等操作符按位操作符按位操作符逻辑操作符逻辑操作符条件操作符条件操作符 ! & | +
8、 - * % = = = != & | &|?:三三、部分、部分verilog结构的综合结构的综合赋值语句赋值语句assignl赋值语句综合为赋值语句综合为组合逻辑电路组合逻辑电路un1_outoutcbaoutassign out= (a & b) | c;l综合为以下门级电路综合为以下门级电路XOR2XOR2OR2AND2c_inbac_outsumassign c_out,sum=a + b + c_in;OR2AND2d1d0soutassign out= (s) ? d1 : d0;if-else语句语句OR2AND2d1d0soutmodule compif
9、 (out, d0, d1, s); input d0, d1, s; output out; reg out; always ( s or d0 or d1) if (s) out = d1; else out = d0;endmodule单条的单条的if-else语句语句综合为一个二选综合为一个二选1数数据选择器据选择器module compif (a, b, c, d, e); input a, b, c, d; output e; reg e; always ( a or b or c or d) if (a & b) e = d; else if (a & b) e
10、= c; else if ( a & b) e = 1b0; else if ( a & b) e = 1b1;endmoduleOR2m3AND2m3_b_0AND2m2AND2m1m3_b.Oedcba 定义了所有可能的选项的定义了所有可能的选项的ifelse嵌套语句,综合结嵌套语句,综合结果是受条件控制的纯组合逻辑电路。果是受条件控制的纯组合逻辑电路。module increment (phy, ones,z);input phy;input 1:0 ones;output 1:0 z;reg 1:0 z;always (phy or ones)if (phy)z = o
11、nes +1;endmodule 不给出所有不给出所有if分支值,则综合出的结果会带有分支值,则综合出的结果会带有锁存器,变为时序逻辑电路锁存器,变为时序逻辑电路。AND2z_ld00AND2z_ld10AND2z_ld01AND2z_ld11XOR2z_1_1.SUM1_0_x2z_1_.QRSz_0_.QRSz1:01:0ones1:01:0phy00001101101Q0D1000Q0D0XOR2z_1.SUM1_0_x2XOR2z_1.SUM0_0_x2OR2z_1.CO1_0_o2z_1.N_6_i_i.Oz1:01:0ones1:01:0phy10001else z = ones;
12、case语句语句 case语句综合为语句综合为数据选择器数据选择器,一般用于设计庞大的,一般用于设计庞大的数据选择器数据选择器。OR2z_7_0AND2z_7_0_b_0OR2z_6_0AND2z_6_0_b_0OR2z_5_0AND2z_5_0_b_0OR2z_4_0AND2z_4_0_b_0OR2z_3_0AND2z_3_0_b_0OR2z_2_0AND2z_2_0_b_0OR2z_1_0AND2z_1_0_b_0z_5_0_b.Oz_4_0_b.Oz_2_0_b.Oz_1_0_b.Oz_3_0_b.Oz_6_0_b.Oz_7_0_b.Ozd7d6d5d4d3d2d1d0s2:02:001
13、221222222110module increment (s, d0,d1,d2,d3,d4,d5,d6,d7,z);input 2:0 s;input d0,d1,d2,d3,d4,d5,d6,d7;output z;reg z;always (*)case (s)3b000: z = d0;3b001: z = d1;3b010: z = d2;3b011: z = d3;3b100: z = d4;3b101: z = d5;3b110: z = d6;3b111: z = d7;endcaseendmoduleAND2z_ld0AND2z_ld1OR2z_1_4_0_i_m2AND2
14、z_1_4_0_i_m2_b_0OR2z_1_3_0_i_m2AND2z_1_3_0_i_m2_b_0OR2z_1_2_0_i_m2AND2z_1_2_0_i_m2_b_0OR2z_1_1_0_i_m2AND2z_1_1_0_i_m2_b_0AND2un1_s_6_i_a2OR2z_1_5_0AND2z_1_5_0_b_0z.QRSz_1_5_0_b.Oz_1_4_0_i_m2_b.Oz_1_2_0_i_m2_b.Oz_1_3_0_i_m2_b.Oz_1_1_0_i_m2_b.Ozd5d4d3d2d1d0s2:02:021211200Q0D02211module increment (s, d
15、0,d1,d2,d3,d4,d5,d6,d7,z);input 2:0 s;input d0,d1,d2,d3,d4,d5,d6,d7;output z;reg z;always (*)case (s)3b000: z = d0;3b001: z = d1;3b010: z = d2;3b011: z = d3;3b100: z = d4;3b101: z = d5;endcaseendmodule 与与if语句类似,语句类似,如果如果没有给出所有分支的值,没有给出所有分支的值,则综合后会出现锁存器则综合后会出现锁存器。 casez和和casex与与case类似,只是条件的判断类似,只是条件的
16、判断不同。不同。sum_11:0+un19_sum1:0+un40_sum1:0+un61_sum1:0+un82_sum1:0+un103_sum1:0+un124_sum1:0+un145_sum1:0+c_inb7:07:0a7:07:0c_out1sum7:00000000001:0011:01121:02131:03141:04151:05161:06171:071for语句语句module increment (sum, c_out,a,b,c_in);input 7:0 a,b;output 7:0 sum;input c_in;output c_out;reg 7:0 sum;
17、reg c_out;reg c;integer i;always (a or b or c_in)beginc = c_in;for (i=0;i=7;i=i+1)c,sumi=ai+bi+c;c_out =c;endendmodulefor循环语句综合产循环语句综合产生级联的链式组合生级联的链式组合逻辑电路逻辑电路XOR2sum_1_1.SUM0XOR2un145_sum_1.m2OR2un145_sum_1.m3AND2un145_sum_1.m3_b_0XOR2un124_sum_1.m2OR2un124_sum_1.m3AND2un124_sum_1.m3_b_0XOR2un103_s
18、um_1.m2OR2un103_sum_1.m3AND2un103_sum_1.m3_b_0XOR2un82_sum_1.m2OR2un82_sum_1.m3AND2un82_sum_1.m3_b_0XOR2un61_sum_1.m2OR2un61_sum_1.m3AND2un61_sum_1.m3_b_0XOR2un40_sum_1.m2OR2un40_sum_1.m3AND2un40_sum_1.m3_b_0OR2un19_sum_1.m3AND2un19_sum_1.m3_b_0OR2sum_1_1.m3AND2sum_1_1.m3_b_0XOR2sum_1_1.SUM0_0XOR2un
19、19_sum_1.SUM0_0XOR2un40_sum_1.SUM0_0XOR2un61_sum_1.SUM0_0XOR2un82_sum_1.SUM0_0XOR2un103_sum_1.SUM0_0XOR2un124_sum_1.SUM0_0XOR2un145_sum_1.SUM0_0XOR2un145_sum_1.SUM0XOR2un124_sum_1.SUM0XOR2un103_sum_1.SUM0XOR2un82_sum_1.SUM0XOR2un61_sum_1.SUM0XOR2un40_sum_1.SUM0XOR2un19_sum_1.SUM0sum_1_1.m3_b.Oun19_s
20、um_1.m3_b.Oun40_sum_1.m3_b.Oun61_sum_1.m3_b.Oun82_sum_1.m3_b.Oun103_sum_1.m3_b.Oun124_sum_1.m3_b.Oun145_sum_1.m3_b.Oc_inb7:07:0a7:07:0c_outsum7:00776655443322100122334455667711234567always语句语句 alwaysalways语句可用于生成时序和组合逻辑。对于语句可用于生成时序和组合逻辑。对于时序逻辑时序逻辑来说,来说,alwaysalways语句必须由时钟信号语句必须由时钟信号clkclk的变化所控制。的变化所
21、控制。q.QclkdqQDmodule increment (q, d,clk);input d,clk;output q;reg q;always ( posedge clk)q = d;endmodulemodule increment (q, d,clk,rst);input d,clk,rst;output q;reg q;always ( posedge rst or negedge clk)if (!rst)q = d;elseq =0;endmoduleq.QRrstclkdqQD 带异步复位端的带异步复位端的D D触发器。触发器。阻塞或非阻塞阻塞或非阻塞使用的赋值类型依赖于所描
22、述的逻辑类型:使用的赋值类型依赖于所描述的逻辑类型: 在时序块在时序块RTLRTL代码中使用非阻塞赋值代码中使用非阻塞赋值 非阻塞赋值保存值直到时间片段的结束,从而避非阻塞赋值保存值直到时间片段的结束,从而避免仿真时的竞争情况或结果的不确定性免仿真时的竞争情况或结果的不确定性 在组合的在组合的RTLRTL代码中使用阻塞赋值代码中使用阻塞赋值 阻塞赋值立即执行阻塞赋值立即执行阻塞、非阻塞对比阻塞、非阻塞对比非阻塞赋值语句非阻塞赋值语句并行执行并行执行,因此临时变量不可避免地在一个周期中,因此临时变量不可避免地在一个周期中被赋值,在下一个周期中被采样。被赋值,在下一个周期中被采样。 module
23、bloc (clk, a, b); input clk, a; output b; reg y; reg b; always ( posedge clk) begin y =a; b =y; endendmodulemodule nonbloc (clk, a, b); input clk, a; output b; reg y; reg b; always ( posedge clk) begin y = a; b = y; endendmodule使用阻塞赋值,此描述综合使用阻塞赋值,此描述综合出一个出一个D flip-flop:使用非阻塞赋值,此描述将使用非阻塞赋值,此描述将综合出两个综
24、合出两个D Flip-flop。b.QbaclkQDy.Qb.QbaclkQDQD函数和任务函数和任务module orand (out, a, b, c, d, e); input a, b, c, d, e; output out; wire out; assign out = forand (a, b, c, d, e); function forand; input a, b, c, d, e; if (e = 1) forand = (a| b) & (c| d); else forand = 0; endfunctionendmodule 函数没有时序控制,因此综合结果为组
25、合逻辑。函数没有时序控制,因此综合结果为组合逻辑。函数可以在过程块内或持续赋值语句中调用。函数可以在过程块内或持续赋值语句中调用。下例中的下例中的or/andor/and块由持续赋值语句调用函数实现块由持续赋值语句调用函数实现 AND2out_0AND2outOR2forand_0.un2_forandOR2forand_0.un1_forandedcbaout任务任务module orandtask (out, a, b, c, d, e); input a, b, c, d, e; output out; reg out; always ( a or b or c or d or e) o
26、rand (out, a, b, c, d, e); task orand; output out; input a, b, c, d, e; if (e = 1) out = (a| b) & (c| d); else out = 0; endtaskendmodule任务一般只在测试基准使用,因为:任务一般只在测试基准使用,因为: 没有时序控制的任务如同函数没有时序控制的任务如同函数 带有时序控制的任务不可综合带有时序控制的任务不可综合下面是用任务描述的下面是用任务描述的or/and块:块:AND2out_0AND2outOR2orand_0.un2_outOR2orand_0.u
27、n1_outedcbaout复位复位复位是可综合编码风格的重要环节。状态机中一般都有复位。复位是可综合编码风格的重要环节。状态机中一般都有复位。module sync( q, ck, r, d); input ck, d, r; output q; reg q; always ( negedge ck) if (r) q = 0; else q = d;endmodulemodule async( q, ck, r, d); input ck, d, r; output q; reg q; always ( negedge ck or posedge r) if (r) q = 0; else
28、 q = d;endmodule同步复位同步复位同步块的异步复位同步块的异步复位同步复位描述:同步复位描述:在同步块内,当复位信号有效时,进行复位操作;当复位信号无在同步块内,当复位信号有效时,进行复位操作;当复位信号无效时,执行该块的同步行为。如果将复位信号作为条件语句的条件,且在第一个效时,执行该块的同步行为。如果将复位信号作为条件语句的条件,且在第一个分支中进行复位,综合工具可以更容易的识别复位信号。分支中进行复位,综合工具可以更容易的识别复位信号。异步复位:异步复位:在同步块的敏感表中包含复位信号的激活边沿。在块内,复位描述方在同步块的敏感表中包含复位信号的激活边沿。在块内,复位描述方
29、式与同步方式相同式与同步方式相同。qdrckqQDRq.Qq_0.OdrckqQD同步复位同步复位qRdrckqQDq.QRdrckqQD同步块的异步复位同步块的异步复位6.3 verilog可综合设计 设计者使用的设计者使用的verilogverilog设计风格会影响逻辑综合最终产设计风格会影响逻辑综合最终产生的门级网表。根据描述风格的不同,逻辑综合可能产生生的门级网表。根据描述风格的不同,逻辑综合可能产生高效率或者低效率的门级网表。因此,设计者必须清楚高高效率或者低效率的门级网表。因此,设计者必须清楚高效率电路的描述技巧,本节讨论建模方案的技巧以及编写效率电路的描述技巧,本节讨论建模方案的
30、技巧以及编写出高效率、可综合的出高效率、可综合的verilogverilog模块方法。模块方法。 verilogverilog描述的风格对最终设计有很大的影响。就逻辑综合描述的风格对最终设计有很大的影响。就逻辑综合而言,重要的是考虑实际的硬件实现问题:而言,重要的是考虑实际的硬件实现问题:在不牺牲高抽象在不牺牲高抽象层次优势的情况下,层次优势的情况下,RTLRTL描述应该尽可能地接近预期的结构描述应该尽可能地接近预期的结构。在设计抽象层次和控制逻辑综合输出结构之间存在一个折中。在设计抽象层次和控制逻辑综合输出结构之间存在一个折中。下面列出的是班下面列出的是班RTLRTL设计中设计者应该考虑的一
31、些设计原则。设计中设计者应该考虑的一些设计原则。一、一、 verilogverilog编码风格编码风格1.1.当为时序逻辑建模,使用当为时序逻辑建模,使用“非阻塞赋值非阻塞赋值”。2.2.当用当用alwaysalways块为组合逻辑建模,使用块为组合逻辑建模,使用“阻塞赋值阻塞赋值”3.3.当在同一个当在同一个alwaysalways块里面既为组合逻辑又为时序逻辑建模,块里面既为组合逻辑又为时序逻辑建模,使用使用“非阻塞赋值非阻塞赋值”。4.4.不要在同一个不要在同一个alwaysalways块里面混合使用块里面混合使用“阻塞赋值阻塞赋值”和和“非非阻塞赋值阻塞赋值”。5.5.不要在两个或两个以上不要在两个或两个以上alwaysalways块里面对同一个块里面对同一个变量变量进行赋进行赋值。值。6.6.在在VERILOGVERILOG语法中,语法中, if.else if . elseif.else if . else 语句是有优先语句是有优先级的,一般说来第一个级的,一般说来第一个ifif的优先级最高,最后一个的优先级最高,最后一个elseelse的优的优先级最低。先级最低。 而而casecase语句是语句是“平行平行”的结构的结构,所有的,所有的casecase的的条件和执行都没有条件和执行都没有“优先级优先级”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年房地产估价师现场评估试题
- 2026年智能城市规划试题城市光伏电站布局与优化策略
- 2026年金融投资试题集股票市场基础知识及分析技巧
- 2026年计算机二级考试办公软件高级应用专项突破题
- 承办文化活动诚信保证承诺书7篇
- 电视媒体编导节目质量绩效考核表
- 阳光初中2026年春季学期初二年级暑期社会实践活动方案听证会会议记录
- 学生自主命题作业互评活动详细组织方案与效果分析报告书
- 2026年春季学期学校心理健康教育专题讲座方案:呵护心灵助力学生健康成长
- 安全培训生产安全承诺函(3篇)
- 2025年贵州事业编a类考试真题及答案
- GB/T 21558-2025建筑绝热用硬质聚氨酯泡沫塑料
- 贷款担保人免责协议书
- 研发岗位廉洁从业教育
- 《电力机车牵引控制技术》课件全套 第1-6章 电力机车牵引控制概述- HXD3B型电力机车总线及TCMS系统
- 胃镜室院感知识培训
- 长期照护师内部技能考核试卷及答案
- 2025年中考英语复习必背1600课标词汇(30天记背)
- 2025小红书7月家居家装行业月报
- 城镇排水管道检测培训考核试题(附答案)
- 煤矿机电运输安全知识培训课件
评论
0/150
提交评论