《第17章Verilog中的高级结构ppt课件》由会员分享,可在线阅读,更多相关《第17章Verilog中的高级结构ppt课件(121页珍藏版)》请在金锄头文库上搜索。
1、第17章 Verilog中的高级结构学习内容:学习内容:任务和函数的定义和调用任务和函数的定义和调用怎样使用命名块怎样使用命名块怎样禁止命名块和任务怎样禁止命名块和任务有限状态机(有限状态机(FSM)及建模)及建模往镍统炊烬蔡贸斯合纷业烹吞派司桃雹脉睛痹些酌瘫绢渝妹壤友楞负梳泞第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件Verilog的任务及函数的任务及函数结构化设计是将任务分解为较小的,更易管理的单元,并将可重用代结构化设计是将任务分解为较小的,更易管理的单元,并将可重用代码进行封装。这通过将设计分成模块,或任务和函数实现。码进行封装。这通过将设计
2、分成模块,或任务和函数实现。任务(任务(task)通常用于调试,或对硬件进行行为描述通常用于调试,或对硬件进行行为描述可以包含时序控制(可以包含时序控制(#延迟,延迟,,wait)可以有可以有input,output,和,和inout参数参数可以调用其他任务或函数可以调用其他任务或函数函数函数(function)通常用于计算,或描述组合逻辑通常用于计算,或描述组合逻辑不能包含任何延迟;函数仿真时间为不能包含任何延迟;函数仿真时间为0只含有只含有input参数并由函数名返回一个结果参数并由函数名返回一个结果可以调用其他函数,但不能调用任务可以调用其他函数,但不能调用任务灰廖烷圆凛侮巩吃炽弃芽遭爹
3、棉谊赢劈幢汪唱屑拯仟缓绒符蒂氟儒诫汗竭第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件Verilog的任务及函数的任务及函数任务和函数必须在任务和函数必须在module内调用内调用在任务和函数中不能声明在任务和函数中不能声明wire所有输入所有输入/输出都是输出都是局部局部寄存器寄存器任务任务/函数执行完成后才返回结果。函数执行完成后才返回结果。例如,若任务例如,若任务/函数中有函数中有forever语句,则永远不会返回结果语句,则永远不会返回结果污构摈铣人匆砾搐实贝撒傍习脾偶阎趾跟尧贯尹距棉胚染单腑拆染抿娟示第17章Verilog中的高级结构ppt课件
4、第17章Verilog中的高级结构ppt课件任务任务下下面面的的任任务务中中含含有有时时序序控控制制和和一一个个输输入入,并并引引用用了了一一个个module变变量量,但没有输出、输入输出和内部变量,也不显示任何结果。但没有输出、输入输出和内部变量,也不显示任何结果。时序控制中使用的信号(例如时序控制中使用的信号(例如ck)一定不能作为任务的输入,因为)一定不能作为任务的输入,因为输入值只向该任务传送一次。输入值只向该任务传送一次。moduletop;regclk,a,b;DUTu1(out,a,b,clk);always#5clk=!clk;taskneg_clocks;input31:0n
5、umber_of_edges;repeat(number_of_edges)(negedgeclk);endtaskinitialbeginclk=0;a=1;b=1;neg_clocks(3);/任务调用任务调用a=0;neg_clocks(5);b=0;endendmodule日骗桶份桌杰评卢若婪蛾撅嘎接拍姬饯谗城帐敌柴仙换衣和壳娥稿阅演促第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件任务任务任务可以有任务可以有input,output和和inout参数。参数。传传送送到到任任务务的的参参数数和和与与任任务务I/O说说明明顺顺序序相相同同。尽尽管管
6、传传送送到到任任务务的的参参数数名名称称与与任任务务内内部部I/O说说明明的的名名字字可可以以相相同同,但但在在实实际际中中这这通通常常不不是是一一个个好好的的方法。参数名的唯一性可以使任务具有好的模块性。方法。参数名的唯一性可以使任务具有好的模块性。可以在任务内使用时序控制。可以在任务内使用时序控制。在在Verilog中任务定义一个新范围(中任务定义一个新范围(scope)要禁止任务,使用关键字要禁止任务,使用关键字disable。主要特点:主要特点:从从代代码码中中多多处处调调用用任任务务时时要要小小心心。因因为为任任务务的的局局部部变变量量的的只只有有一一个个拷拷贝贝,并并行调用任务可能
7、导致错误的结果。在任务中使用时序控制时这种情况时常发生。行调用任务可能导致错误的结果。在任务中使用时序控制时这种情况时常发生。在在任任务务或或函函数数中中引引用用调调用用模模块块的的变变量量时时要要小小心心。如如果果想想使使任任务务或或函函数数能能从从另另一个模块调用,则所有在任务或函数内部用到的变量都必须列在端口列表中。一个模块调用,则所有在任务或函数内部用到的变量都必须列在端口列表中。焙家灰背蛀崔滔碴拨吮答索业堂迷任客行甸捉鸡娜恍点十缄主貌桥失羞糖第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件任务任务下下面面的的任任务务中中有有输输入入,输输出出,
8、时时序序控控制制和和一一个个内内部部变变量量,并并且且引引用用了了一个一个module变量。但没有双向端口,也没有显示。变量。但没有双向端口,也没有显示。任务调用时的参数按任务定义的顺序列出。任务调用时的参数按任务定义的顺序列出。module mult (clk, a, b, out, en_mult); input clk, en_mult; input 3: 0 a, b; output 7: 0 out; reg 7: 0 out; always ( posedge clk) multme (a, b, out); / 任务调用任务调用 task multme; / 任务定义任务定义 i
9、nput 3: 0 xme, tome; output 7: 0 result; wait (en_mult) result = xme * tome; endtaskendmodule拒憾试始猜姚胶让尝肆癸磐踪枣带倪姜策忽爆芒藤踩揖渭诅致堆搓工慎番第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件函数(函数(function)函数中不能有时序控制,但调用它的过程可以有时序控制。函数中不能有时序控制,但调用它的过程可以有时序控制。函数名函数名f_or_and在函数中作为在函数中作为register使用使用module orand (a, b, c, d,
10、e, out); input 7: 0 a, b, c, d, e; output 7: 0 out; reg 7: 0 out; always ( a or b or c or d or e) out = f_or_and (a, b, c, d, e); / 函函数数调调用用 function 7:0 f_or_and; input 7:0 a, b, c, d, e; if (e = = 1) f_or_and = (a | b) & (c | d); else f_or_and = 0; endfunctionendmodule殉潭氟幢自叶带乐馅诛斟她赵仆省弥沿误疼错讽信鸣辣苦耿樟帆缅
11、惠枯凝第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件函数函数主要特性:主要特性:函数定义中不能包含任何时序控制语句。函数定义中不能包含任何时序控制语句。函数至少有一个输入,不能包含任何输出或双向端口。函数至少有一个输入,不能包含任何输出或双向端口。函数只返回一个数据,其缺省为函数只返回一个数据,其缺省为reg类型。类型。传送到函数的参数顺序和函数输入参数的说明顺序相同。传送到函数的参数顺序和函数输入参数的说明顺序相同。函数在模块(函数在模块(module)内部定义。内部定义。函数不能调用任务,但任务可以调用函数。函数不能调用任务,但任务可以调用函数。函
12、数在函数在Verilog中定义了一个新的范围(中定义了一个新的范围(scope)。虽虽然然函函数数只只返返回回单单个个值值,但但返返回回的的值值可可以以直直接接给给信信号号连连接接赋赋值值。这在需要有多个输出时非常有效。这在需要有多个输出时非常有效。o1, o2, o3, o4 = f_ or_ and (a, b, c, d, e);臣恳酚野茂虱站摸蹬除瓮认垒魁教烙碱汲企嘴些碾衰凡辜摹叛冠缩匆扼绚第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件函数函数要要返返回回一一个个向向量量值值(多多于于一一位位),在在函函数数定定义义时时在在函函数数名名前前说说
13、明明范范围。函数中需要多条语句时用围。函数中需要多条语句时用begin和和end。不管在函数内对函数名进行多少次赋值,值只返回一次。下例中,不管在函数内对函数名进行多少次赋值,值只返回一次。下例中,函数还在内部声明了一个整数。函数还在内部声明了一个整数。module foo; input 7: 0 loo; output 7: 0 goo;/ 可以持续赋值中调用函数可以持续赋值中调用函数 wire 7: 0 goo = zero_count ( loo ); function 3: 0 zero_count; input 7: 0 in_ bus; integer I; begin zero_
14、count = 0; for (I = 0; I 8; I = I + 1) if (! in_bus I ) zero_count = zero_count + 1; end endfunctionendmodule瞳歇凹凉扛哆诸新鲁亭秩祖氢霓瓮所何仓龚耳逊冉街神宠阐惦簿丹木侮明第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件函数函数函数返回值可以声明为其它函数返回值可以声明为其它register类型:类型:integer,real,或或time。在任何表达式中都可调用函数在任何表达式中都可调用函数module checksub (neg, a, b)
15、; output neg; reg neg; input a, b; function integer subtr; input 7: 0 in_a, in_b; subtr = in_a - in_b; / 结果可能为结果可能为负负 endfunction always (a or b) if (subtr( a, b) 0) neg = 1; else neg = 0;endmodule品牢味蹬办峰嗅立策啤厘刑梨敛岂乏外瞳栋瞅舍绽攘氖认邯赶娘六尝嚣邪第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件函数函数函数中可以对返回值的个别位进行赋值。函数中可以
16、对返回值的个别位进行赋值。函数值的位数、函数端口甚至函数功能都可以参数化。函数值的位数、函数端口甚至函数功能都可以参数化。. . .parameter MAX_BITS = 8;reg MAX_BITS: 1 D;function MAX_BITS: 1 reverse_bits; input MAX_BITS-1: 0 data; integer K; for (K = 0; K MAX_BITS; K = K + 1) reverse_ bits MAX_BITS - (K+ 1) = data K;endfunctionalways (posedge clk) D = reverse_b
17、its (D) ;. . .拳撰挚音沏句贤姚埂千迁迅鄂硕厂斥议掏酒没赡叛措柄并祥剧怯绘咋邵邢第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件命名块命名块(namedblock)在关键词在关键词begin或或fork后加上后加上:对块进行命名对块进行命名module named_ blk; . . . begin : seq_blk. . . end. . . fork : par_blk. . . join. . .endmodule在命名块中可以声明局部变量在命名块中可以声明局部变量可以使用关键词可以使用关键词disable禁止一个命名块禁止一个命名块
18、命名块定义了一个新的范围命名块定义了一个新的范围命名块会降低仿真速度命名块会降低仿真速度揉遥纹孙沤恋瓶的义锭痪浆繁奋律散疲邮眨粪晋功济做日扶骆妇芥炎甫惊第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件禁止命名块和任务禁止命名块和任务module do_arith (out, a, b, c, d, e, clk, en_mult); input clk, en_mult; input 7: 0 a, b, c, d, e; output 15: 0 out; reg 15: 0 out; always ( posedge clk) begin : ari
19、th_block / * 命名块命名块 * reg 3: 0 tmp1, tmp2; / * 局部变量局部变量 * tmp1, tmp2 = f_or_and (a, b, c, d, e); / 函数调函数调用用 if (en_mult) multme (tmp1, tmp2, out); / 任务任务调用调用 end always ( negedge en_mult) begin / 中止运算中止运算 disable multme ; / * 禁止任务禁止任务 * disable arith_block; / * 禁止命名块禁止命名块 * end/ 下面下面定义任务和函数定义任务和函数 e
20、ndmodule是裳拎溜盼屠不项返磅瑰骑兄创汾鹿钱况烫砒得君最害铡俊蓖淫翼蓑贫渗第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件禁止命名块和任务禁止命名块和任务disable语句终结一个命名块或任务的所有活动。也就是说,在一个语句终结一个命名块或任务的所有活动。也就是说,在一个命名块或任务中的所有语句执行完之前就返回。命名块或任务中的所有语句执行完之前就返回。语法:语法:disable或或disable当当命命名名块块或或任任务务被被禁禁止止时时,所所有有因因他他们们调调度度的的事事件件将将从从事事件件队队列列中中清除清除disable是典型的不可综合语
21、句。是典型的不可综合语句。在在前前面面的的例例子子中中,只只禁禁止止命命名名块块也也可可以以达达到到同同样样的的目目的的:所所有有由由命命名块、任务及其中的函数调度的事件都被取消。名块、任务及其中的函数调度的事件都被取消。蓖西郁村霜悟咀漾鸡罕杆躬凰馋芜觉躺盅蠢鼎赃践獭呛足叛痔套哼墒谐郑第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件有限状态机有限状态机隐式状态机隐式状态机FSM不需要声明状态寄存器不需要声明状态寄存器仿真效率高仿真效率高只适合于线性的状态改变只适合于线性的状态改变大多数综合工具不能处理大多数综合工具不能处理显式显式FSM:利于结构化利于结
22、构化易于处理缺省条件易于处理缺省条件能处理复杂的状态改变能处理复杂的状态改变所有综合工具都支持所有综合工具都支持腕调染妖哟赫祷亢谊闸达展棠菏啼广思奉肄兽哉辱钒聋郝皮胡吁阵父逼槐第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件有限状态机有限状态机在在隐隐式式FSM中中,只只要要数数据据在在一一个个时时钟钟沿沿写写入入并并在在另另一一个个周周期期读读出出,则会生成寄存器。则会生成寄存器。所所有有FSM必必须须有有复复位位,且且状状态态改改变变必必须须在在单单一一时时钟钟信信号号的的同同一一边边沿。沿。通通常常,如如果果状状态态改改变变简简单单明明确确,且且综
23、综合合工工具具接接受受隐隐式式状状态态机机,就就可以使用隐式类型。如果状态改变很复杂,则显式类型更加有效。可以使用隐式类型。如果状态改变很复杂,则显式类型更加有效。隐隐式式状状态态机机是是一一个个行行为为级级而而非非RTL代代码码的的典典型型例例子子。这这种种代代码码依依赖赖循循环环和和内内嵌嵌时时序序控控制制,有有时时也也有有命命名名事事件件、wait和和disable语语句句。因此,隐式状态机在综合时通常不被支持。因此,隐式状态机在综合时通常不被支持。线性线性FSM是指从一个状态到下一个状态的转换不需要任何条件。是指从一个状态到下一个状态的转换不需要任何条件。子茵痴赖岛粗副苍战读党羚考育缕
24、刃菏羡钾鱼至轧牙碎修肩郭标但码巳五第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件显式有限状态机module exp (out, datain, clk, rst); input clk, rst, datain; output out; reg out; reg state; always ( posedge clk or posedge rst) if (rst) state, out = 2b00; else case (state) 1b0: begin out = 1b0; if (! datain) state = 1b0; else sta
25、te = 1b1; end 1b1: begin out = datain; state = 1b0; end default: state, out = 2b00; endcaseendmodule授魂克孤捞侩皇驭全缝瞅豪俐贸旦币潜降宾柯历奸欧免菲分裹呻禁九证估第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件显式有限状态机可以在过程块中用单一时钟边沿和可以在过程块中用单一时钟边沿和case语句显式地描述语句显式地描述FSM。必须声明定义状态机的状态状态变量。必须声明定义状态机的状态状态变量。要改变当前状态,必须在时钟边沿改变状态变量的值。要改变当前状态
26、,必须在时钟边沿改变状态变量的值。给通常不会发生的条件指定缺省动作是一个很好的描述方式。给通常不会发生的条件指定缺省动作是一个很好的描述方式。榴斧翅般添慨畔媳碾板运悔庞莹毗烂妄结芭切客讶窍吼冻影毕傈瀑普轩跺第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件隐式有限状态机module imp (out, datain, clk, rst); output out; reg out; input clk, datain, rst; always ( rst) / Synergy reset method if (rst) assign out = 1b0; e
27、lse begin deassign out; disable seq_block; /返回初始状态返回初始状态 end always ( posedge clk) begin: seq_block out = 1b0; if (!datain) / 状态状态1: output = 0 disable seq_block; / 状态状态2: output = 2nd bit ( posedge clk) out = datain; endendmodule溃勒东冬沸绞闰饱唬岳捶蕉坡慈啸耸棘罢斥甩遍忠洱锯蒲弘憋缺吮阻租集第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结
28、构ppt课件隐式有限状态机可可以以在在过过程程块块中中用用多多个个时时钟钟边边沿沿(每每个个状状态态一一个个),条条件件语语句句,循环,和循环,和disable语句隐式地描述一个语句隐式地描述一个FSM。通常不可综合。通常不可综合。不必声明状态变量。不必声明状态变量。在在下下一一个个时时钟钟边边沿沿改改变变状状态态,除除非非迫迫使使状状态态重重复复。例例如如在在一一个个循循环中或用一个环中或用一个disable语句。下一个状态可以由条件语句决定。语句。下一个状态可以由条件语句决定。婿迪彝重今涣红匙灼呀硝捞妙姻挑簿骂谭洋血漆卤苹泽辞兄印况泥驻圈沂第17章Verilog中的高级结构ppt课件第17
29、章Verilog中的高级结构ppt课件复习1.在在Verilog中什么结构能产生一个新的中什么结构能产生一个新的“范围范围”?2.哪些结构可以被禁止?哪些结构可以被禁止?3.什么时候一个函数比一个任务更合适?反过来呢?什么时候一个函数比一个任务更合适?反过来呢?解答解答1.模模块块,任任务务,函函数数,和和命命名名块块。Verilog中中模模块块作作为为主主要要层层次次分分割割方法。函数和任务提供附加的代码分割和封装方法。方法。函数和任务提供附加的代码分割和封装方法。2.命名块和任务可以被禁止。命名块和任务可以被禁止。3.函函数数更更适适用用于于组组合合逻逻辑辑描描述述,并并且且使使用用灵灵活
30、活(例例如如在在一一个个持持续续赋赋值值的的右右边边或或在在一一个个端端口口列列表表里里)。如如果果需需要要时时序序控控制制,则则任任务务更更适合。任务还可以被禁止。适合。任务还可以被禁止。宵邮筹同擎桐炼缘札薪诚浪领捅与南孝控客虾酸桩夯潞伍第褐净派凹痴轨第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件第18章 用户定义基本单元学习内容:学习内容:学习如何使用用户定义基本单元进行逻辑设计学习如何使用用户定义基本单元进行逻辑设计构皇丫惺酚善暮钒酵开属狗诗秉孪帆虏浴埃撂肘冷怔魏桂舟董德挨箱吼肘第17章Verilog中的高级结构ppt课件第17章Verilog中
31、的高级结构ppt课件术语及定义UDP:用用户户定定义义基基本本单单元元,其其行行为为和和Verilog内内部部的的基基本本单单元元相相似似。其功能用真值表定义。其功能用真值表定义。狙绽境毒兵尔醚尖介哇耪湛痹做逛藩啼救笆预溯嵌妆有通鞠戳鹅欺活赋簿第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件什么是UDP在在Verilog结构级描述中,可以使用:结构级描述中,可以使用:二十多个内部门级基本单元二十多个内部门级基本单元用户自定义基本单元用户自定义基本单元UDP在在ASIC库单元开发、中小型芯片设计中很有用库单元开发、中小型芯片设计中很有用可以使用可以使用UD
32、P扩充已定义的基本单元集扩充已定义的基本单元集UDP是自包容的,也就是不需要实例化其它模块是自包容的,也就是不需要实例化其它模块UDP可以表示时序元件和组合元件可以表示时序元件和组合元件UDP的行为由真值表表示的行为由真值表表示UDP实例化与基本单元实例化相同实例化与基本单元实例化相同庭硅遏琐毅挣咒金饰拱解茁圃遗胆严腔螟肢金刻汕栏疡凰跺瞩芝柴岗苯坞第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件什么是UDP可以使用可以使用UDP扩充已定义的基本单元集扩充已定义的基本单元集UDP是一种非常紧凑的逻辑表示方法。是一种非常紧凑的逻辑表示方法。UDP可可以以减减
33、少少消消极极(pessimism)因因素素,因因为为一一个个input上上的的x不不会像基本单元那样自动传送到会像基本单元那样自动传送到output。一一个个UDP可可以以替替代代多多个个基基本本单单元元构构成成的的逻逻辑辑,因因此此可可以以大大幅幅减减少少仿仿真真时时间间和和存存储储需需求求。相相同同逻逻辑辑的的行行为为级级模模型型甚甚至至可可以以更更快快,这这取决于仿真器。取决于仿真器。邮尖骨诱蹬昔藏纸獭瘁诈培忌要藻些孙披窄闰曝侵胆资吁樱法谊暂侩抨扇第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件UDP的特点UDP只能有一个输出只能有一个输出如如果果
34、在在功功能能上上要要求求有有多多个个输输出出,则则需需要要在在UDP输输出出端端连连接接其其它它的的基基本本单元,或者同时使用几个单元,或者同时使用几个UDP。UDP可以有可以有1到到10个输入个输入若若输输入入端端口口超超过过5,存存储储需需求求会会大大幅幅增增加加。下下表表列列出出输输入入端端口口数数与与存存储储需求的关系。需求的关系。所有端口必须为标量且不允许双向端口所有端口必须为标量且不允许双向端口不支持逻辑值不支持逻辑值Z输出端口必须列为端口列表的第一个输出端口必须列为端口列表的第一个时序时序UDP输出端可以用输出端可以用initial语句初始化为一个确定值。语句初始化为一个确定值。
35、UDP不可综合不可综合#输入存储器(KB)#输入存储器(KB)1-5185665918771710623凄范并咀糠蠢柠欧燎涪央于足奔晤疥职八予莉慕甥忠机钞经欺顷献嚎吱颜第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件这两行用于减少消极因素。表示若这两行用于减少消极因素。表示若a,b有相同有相同逻辑值,即使逻辑值,即使sel=x,o也输出与也输出与a,b相同的值。相同的值。Verilog内部基本单元不能描述这种行为。内部基本单元不能描述这种行为。UDP将将X作为真实世界的未知值作为真实世界的未知值(0或或1),而不是,而不是Verilog值,描述也更为精确
36、。值,描述也更为精确。这两行表示不管这两行表示不管a为何值,若为何值,若s为为o,o输出输出b值值组合逻辑举例:2-1多路器UDP在模块在模块(module)外部定义。外部定义。没有在真值表中说明的输入组合,输出没有在真值表中说明的输入组合,输出X。真值表中输入信号按端口列表顺序给出。真值表中输入信号按端口列表顺序给出。primitive multiplexer (o, a, b, s); output o; input s, a, b; table / a b s : o 0 ? 1 : 0; 1 ? 1 : 1; ? 0 0 : 0; ? 1 0 : 1; 0 0 x : 0; 1 1 x
37、 : 1; endtableendprimitiveUDP名称名称输出端口输出端口真值表中?真值表中?表示的逻辑表示的逻辑值为:值为:0、1或或x这两行表示不管这两行表示不管b为何值,若为何值,若s为为1,o输出输出a值值粤坷蜘踞傲靡跌伤陋港虏咐堑式末运茅臂爹座线档揣神侦因掖充单捂隶拂第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件组合逻辑组合逻辑举例:全加器:全加器/ FULL ADDER CARRY-OUT TERMprimitive U_ADDR2_C (CO, A, B, CI); output CO; input A, B, Ci; table
38、 / A B CI : CO 1 1 ? : 1; 1 ? 1 : 1; ? 1 1 : 1; 0 0 ? : 0; 0 ? 0 : 0; ? 0 0 : 0; endtableendprimitive全加器可以由两个组合逻辑全加器可以由两个组合逻辑UDP实现实现/ FULL ADDER SUM TERMprimitive U_ADDR2_S (S, A, B, CI); output S; input A, B, CI; table / A B CI : S0 0 0 : 0;0 0 1 : 1;0 1 0 : 1;0 1 1 : 0;1 0 0 : 1;1 0 1 : 0;1 1 0 :
39、0;1 1 1 : 1; endtableendprimitive隶饱樱家创秧猖秆琼裤工呛翱茅犯奇玫唯柏瞩每芜竞虱迅囤侍饲妈闭诺抉第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件组合逻辑举例:全加器组合逻辑举例:全加器当需要大量全加器时,可以大幅度减少存储器需求当需要大量全加器时,可以大幅度减少存储器需求大大幅幅减减小小事事件件数数目目。使使用用内内部部基基本本单单元元时时,事事件件通通过过3个个基基本本单单元元后后才才能到达进位输出;而使用能到达进位输出;而使用UDP,事件只需经过一个基本单元。,事件只需经过一个基本单元。全加器可以由两个组合逻辑全加器
40、可以由两个组合逻辑UDP实现,而不使用内部基本单元。实现,而不使用内部基本单元。嫂拣弓谬椅个忽藻拭锅雏尝怕裙破净嘱被诸愉伪尾龟嫡揖园秩梧敖简哦了第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件电平敏感时序元件举例:锁存器电平敏感时序元件举例:锁存器latch锁存器的行为如下:锁存器的行为如下:当时钟输入为当时钟输入为0时,时,data输入的值传送到输出。输入的值传送到输出。当时钟输入为当时钟输入为1时,输出不变。时,输出不变。这种加电初始化在实际元件中很少见,但在这种加电初始化在实际元件中很少见,但在UDP功能测试时很有用。功能测试时很有用。primit
41、ive latch (q, clock, data); output q; reg q; input clock, data; initial q = 1b1; table / clock data current next / state state 0 1 : ? : 1 ; 0 0 : ? : 0 ; 1 ? : ? : - ; endtableendprimitive输出必须声明为输出必须声明为reg以保存前一状态以保存前一状态时序时序UDP初始化语句,初始化语句,将输出初始化为将输出初始化为1输入及当前状态中输入及当前状态中的?表示无关值的?表示无关值用另一个场表用另一个场表示下一状
42、态示下一状态-状态值表状态值表示输出没有变示输出没有变化化殆章盂巷掠恩肤午弗糠某颊读恨模芬途步殃矢纽躺桂铆耪饰巡征赡赣粳际第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件边沿敏感时序元件举例:边沿敏感时序元件举例:D触发器触发器在任何一个真值表入口语句中只能说明一个输入跳变。在任何一个真值表入口语句中只能说明一个输入跳变。如果说明了任何输入跳变,则必须说明所有输入上的所有跳变。如果说明了任何输入跳变,则必须说明所有输入上的所有跳变。primitive d_edge_ff (q, clk, data); output q; input clk, data;
43、 reg q; table / clk dat state next(01) 0 : ? : 0 ;(01) 1 : ? : 1 ;(0x) 1 : 1 : 1 ;(0x) 0 : 0 : 0 ;(x1) 0 : 0 : 0 ;(x1) 1 : 1 : 1 ;/忽略时钟下降沿忽略时钟下降沿(?0) ? : ? : - ; (1x) ? : ? : - ;/时钟稳定时忽略时钟稳定时忽略data变化变化? (?) : ? : - ; endtableendprimitive表里有边沿项表示输入跳变。表里有边沿项表示输入跳变。在在一一条条入入口口语语句句中中只只能能说说明明一一个个输输入入跳跳变变,
44、因因为为Verilog仿仿真真是是基基于于事事件件,一一次次只只允允许许一一个个事事件件发发生。生。在在每每个个时时间间步步中中,电电平平入入口口优优先先于于边边沿沿入入口口,因因为为电电平平最最后后处处理理。因此,下面的出口:因此,下面的出口: (? 0) ? : ? : - ;可由下式取代可由下式取代: 0 ? : ? : - ; 两个都给出时,只有后者起作用两个都给出时,只有后者起作用据扼型允井淌皿季噎代裤苏警释钱忧凸迟速鸡蚀粹眯羚蝉蚀懊草众倪仙叶第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件提高可读性的简写形式提高可读性的简写形式Verilog
45、中有一些符号可用于中有一些符号可用于UDP真值表中以提高可读性真值表中以提高可读性符号表示解释-没有变化时序元件输出的下一个值与当前值相同?0、1或x任何值b0或1任何确定值r(01)0-1跳变f(10)1-0跳变p(01)、(0x)或(x1)任何上升沿(posedge)n(10)、(1x)或(x0)任何下降沿(negedge)*(?)任何跳变辜硕秀珊学话渠柴枉类冕烂干骚侈憾紧脸谐彰浩岿掺阐呸镇辈沃涌泵仓繁第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件提高可读性的简写形式提高可读性的简写形式table/ clk dat state next r 0 :
46、 ? : 0 ; r 1 : ? : 1 ; (0x) 1 : 1 : 1 ; (0x) 0 : 0 : 0 ; (x1) 1 : 1 : 1 ; (x1) 0 : 0 : 0 ;/ 忽略时钟的下降沿忽略时钟的下降沿 n ? : ? : - ;/ 忽略时钟稳定时的任何数据变化忽略时钟稳定时的任何数据变化 ? * : ? : - ;endtable湾舀浇梗候薪玫浪弱滤囚仕五等捂偿残工胁充名当瞻赞含策傣像踩劫奉貉第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件带同步复位的带同步复位的D触发器触发器primitive U_ff_p_cl( q, d, clk,
47、 cl); input d, clk, cl; output q; reg q;table/ dclk cl :q:q+ 1 1r 1 :?: 1; / clock 1 0 r ? :?: 0; / clock 0 ? r 0 :?: 0; / reset ? p 0 :0: -; / reducing pessimism 1 p 1 :1: -; 0 p ? :0: -; ? n ? :?: -; / ignore falling clk * ? ? :?: -; / ignore changes on d ? ? * :?: -; / ignore changes on clkendtab
48、leendprimitive惜秀企币证括煌季苦派膛赴刁嘉蹲烩复叠擦肋惹育梧呵颁啄辫虑肄青普九第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件带使能和复位的锁存器带使能和复位的锁存器primitive u_latch_cl (q, d, g, cl); output q; input d, g, cl; reg q;table/ dgcl:q:q+ 1 01?:?: 0; 11?:?: 1; 1?0:1: 1; / reducing pessimism 0?0:0: 0; / reducing pessimism 0?1:?: 0; / reducing
49、pessimism 0?:0: 0; / reducing pessimism ?00:?: -; / latch disabled ?01:?: 0; / clearendtableendprimitive当使能当使能g为高为高(H)时,锁存器锁存时,锁存器锁存d;只有当;只有当g为低时复位信号为低时复位信号cl才有效才有效(高有效)。(高有效)。侮过琢噬戌周瓮呢型遁松债棠峙淹胚疼腊憎唆萝蚜瞻促枣香授蚜血毁篮橇第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件使用通报符使用通报符(notifier)的寄存器的寄存器timescale 1ns/ 1nsmo
50、dule dff_nt (q, ck, d, rst);input ck, d, rst;output q;reg nt;U_FFD_RB i1 (q, d, ck, rst, nt);specify specparam tsu = 2; (ck = q) = (2: 3: 4); $setup (d, posedge ck, tsu, nt);endspecifyendmodule下面的例子是异步复位的上升沿下面的例子是异步复位的上升沿D触发器,有时序检查和路径延迟。触发器,有时序检查和路径延迟。这个模型使用了一个这个模型使用了一个UDP,并将通报符作为,并将通报符作为UDP的一个输入。的一
51、个输入。primitive U_ FFD_ RB (Q, D, CP, RB,NT);output Q; reg Q;input D, CP, RB, NT;table/ D CP RB NT :Q :Q+ 1 0 r ? ? :? : 0; / clock a 0 1 r 1 ? :? : 1; / clock a 1 1 p 1 ? :1 : -; / reducing pessimism 0 p ? ? :0 : -; / reducing pessimism ? ? 0 ? :? : 0; / asynchronous reset ? ? x ? :0 : -; / reducing
52、pessimism ? n ? ? :? : -; / ignore falling clock * ? ? ? :? : -; / ignore rising edges on D ? ? * ? :? : -; / ignore changes on reset ? ? ? * :? : x; / NT变化使变化使Q产生产生xendtableendprimitive妇窄猜缩虾顶秦冈幻锚隧癌夕巾扫么蚕帝裹脑搀耘岭畏渝激贤势拣舰彬轰第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件第第1919章章Verilog的可综合描述风格的可综合描述风格学习目标:学习
53、目标:学习组合逻辑和时序逻辑的可综合的描述风格及技术,包括:学习组合逻辑和时序逻辑的可综合的描述风格及技术,包括:不支持的不支持的Verilog结构结构过程块过程块寄存器寄存器敏感列表敏感列表持续赋值持续赋值综合指导综合指导条件结构条件结构阻塞及非阻塞赋值阻塞及非阻塞赋值锁存器锁存器/MUX推断推断函数函数function任务任务task复位复位有限状态机有限状态机FSM宏库及设计复用宏库及设计复用宵专仑冀养鳖咱绳哗增嗡雷彦寂尚某瘸韧朽霞愧夫令尼嘎贴绽掷迫瑰圾世第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件描述风格简介描述风格简介如果逻辑输出在任何时候
54、都直接由当前输入组合决定,则为如果逻辑输出在任何时候都直接由当前输入组合决定,则为组合逻辑组合逻辑。如果逻辑暗示存储则为如果逻辑暗示存储则为时序逻辑时序逻辑。如果输出在任何给定时刻不能由输。如果输出在任何给定时刻不能由输入的状态决定,则暗示存储。入的状态决定,则暗示存储。通常综合输出不会只是一个纯组合或纯时序逻辑。通常综合输出不会只是一个纯组合或纯时序逻辑。一定要清楚所写的源代码会产生什么类型输出,一定要清楚所写的源代码会产生什么类型输出,并能够反过来确定为什么所用的综合工具产生这个输出,并能够反过来确定为什么所用的综合工具产生这个输出,这是非常重要的。这是非常重要的。鲤封氨汾架苗涸耽观坊献够
55、构阅隶跋津仑伸胜丢删汛场坏霓团棚洒羚喉饭第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件不支持的不支持的Verilog结构结构综合工具通常不支持下列综合工具通常不支持下列Verilog结构结构:initial循环循环:repeatforeverwhile非结构化的非结构化的for语句语句数据类型数据类型:eventrealtimeUDPforkjoin块块wait过程持续赋值:过程持续赋值:assigndeassignforcerelease操作符:操作符:=!=鹃握关雇茁客石颂途郭缴牲松橇墒栋综赶蠢留丢娇贫签呜凸镰所搓屿尊颜第17章Verilog中的高
56、级结构ppt课件第17章Verilog中的高级结构ppt课件过程块过程块任意边沿任意边沿在在所所有有输输入入信信号号的的任任意意边边沿沿进进入入的的过过程程块块产产生生组组合合逻逻辑辑。这这种种过过程程块称为组合块。块称为组合块。 always ( a or b) / 与门与门 y = a & b;单个边单个边沿沿在在一一个个控控制制信信号号的的单单一一边边沿沿上上进进入入的的过过程程块块产产生生同同步步逻逻辑辑。这这种种过过程块称为同步块。程块称为同步块。 always ( posedge clk) / D flip-flop q = d;同步块也可以对异步复位信号的变化产生敏感同步块也可以
57、对异步复位信号的变化产生敏感 always ( posedge clk or negedge rst_) if (! rst_) q = 0; else q = d;取滥痴可织瘁狰隶扶吹琶旺价奏诀下张损秀藻学素厚余们橇帖坦核餐凄长第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件过程块中的寄存器类型过程块中的寄存器类型若同步块中使用一个若同步块中使用一个reg,则:则:如如果果在在一一个个时时钟钟周周期期赋赋值值并并在在另另一一个个周周期期被被采采样样,则则只只能能以以硬硬件件寄寄存器实现。存器实现。如如果果reg还还是是一一个个基基本本输输出出,它它会会
58、出出现现在在综综合合网网表表中中,但但不不一一定定是是一个硬件寄存器。一个硬件寄存器。若两者都不是,该信号可能被优化掉。若两者都不是,该信号可能被优化掉。若组合块中使用一个若组合块中使用一个reg,则:则:如如果果reg值值随随块块的的任任何何一一个个输输入入的的变变化化而而改改变变,则则在在综综合合时时不不会会产产生硬件寄存器。生硬件寄存器。如如果果reg值值并并不不总总是是随随块块的的输输入入变变化化而而改改变变,则则综综合合时时会会产产生生一一个个锁存器。锁存器。 沟谩詹酒恿戏晨渴严钎唆万只靠萝雍魂陈巫蹲沽咯教异可窒奸依泌鞭肖崭第17章Verilog中的高级结构ppt课件第17章Veri
59、log中的高级结构ppt课件同步寄存器举例同步寄存器举例在这个例子中,在这个例子中,rega只作暂存,只作暂存,因此会被优化掉。因此会被优化掉。module ex1reg (d, clk, q); input d, clk; output q; reg q, rega;always ( posedge clk) begin rega = 0; if (d) rega = 1; q = rega;endendmodule在这个例子中,在这个例子中,rega产生一个寄存产生一个寄存器,不会被优化掉。器,不会被优化掉。module ex2reg (d, clk, q); input d, clk;
60、output q; reg q, rega;always ( posedge clk) begin rega = 0; if (d) rega = 1; endalways ( posedge clk) q = rega;endmodule卵纸袱斯健新密南雷眨逝中澡耶判未喇娠恼橇外督盅疡吃苟出千扑刻吩田第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件组合逻辑中的寄存器类型举例组合逻辑中的寄存器类型举例在这个例子中在这个例子中, y和和rega总是赋新值总是赋新值, 因此产生一个纯组合逻辑。因此产生一个纯组合逻辑。module ex3reg (y, a,
61、b, c);input a, b, c;output y;reg y, rega;always ( a or b or c) begin if (a & b) rega = c; else rega = 0; y = rega;endendmodule在这个例子中,在这个例子中,rega不总是产生新不总是产生新值,因此会产生一个锁存器,值,因此会产生一个锁存器,y是是锁存器的输出锁存器的输出module ex4reg (y, a, b, c);input a, b, c;output y;reg y, rega;always ( a or b or c) begin if (a & b) re
62、ga = c; y = rega;endendmodule在下面的例子,在下面的例子,rega是暂存变量,并被优化掉是暂存变量,并被优化掉冠章邹醉字稽惯徘浴昌河葱浦互番恫挚擦莆移泼瓜荣氧渣疟面柒纳仙砾梭第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件敏感列表敏感列表敏感表不完全敏感表不完全:module sens (a, q, b, sl);input a, b, sl;output q;reg q;always ( sl)begin if (! sl) q = a; else q = b;endendmodule完全的敏感列表完全的敏感列表module
63、 sensc (q, a, b, sl);input a, b, sl;output q;reg q;always ( sl or a or b)begin if (! sl) q = a; else q = b;endendmodule在下面的例子,在下面的例子,a,b,sl是块的输入是块的输入sl用作条件用作条件a、b用在过程赋值语句的右边用在过程赋值语句的右边将块的所有输入都列入敏感表是很好的描述习惯。不同的综合工具对不完全敏感将块的所有输入都列入敏感表是很好的描述习惯。不同的综合工具对不完全敏感表的处理有所不同。有的将不完全敏感表当作非法。其他的则产生一个警告并假表的处理有所不同。有的
64、将不完全敏感表当作非法。其他的则产生一个警告并假设敏感表是完全的。在这种情况下,综合输出和设敏感表是完全的。在这种情况下,综合输出和RTL描述的仿真结果可能不一致。描述的仿真结果可能不一致。联遵浅焉缔刘稼欲湍荡讫朔蚊旬松鬃寺惭腮汇但憋歼眶蓬摔型妓黎刀锯豌第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件敏感列表敏感列表将块的所有输入都列入敏感表是很好的描述习惯。不同的综合工具对不完全敏感将块的所有输入都列入敏感表是很好的描述习惯。不同的综合工具对不完全敏感表的处理有所不同。有的将不完全敏感表当作非法。其他的则产生一个警告并假表的处理有所不同。有的将不完全敏
65、感表当作非法。其他的则产生一个警告并假设敏感表是完全的。在这种情况下,综合输出和设敏感表是完全的。在这种情况下,综合输出和RTL描述的仿真结果可能不一致。描述的仿真结果可能不一致。上述两例综合结果(上述两例综合结果(SYNOPSYS)相同,但)相同,但RTL描述的仿真结果不同。也就是描述的仿真结果不同。也就是左边的敏感表不完全的例子的左边的敏感表不完全的例子的RTL描述和综合出的网表的仿真结果不同。描述和综合出的网表的仿真结果不同。module sens_t;module sens_t; reg a, b, sl; reg a, b, sl;sens u1(a, q, b, sl);sens
66、u1(a, q, b, sl);sensc u2(qc, a, b, sl);sensc u2(qc, a, b, sl);initialinitialbeginbegin $monitor($time, %b %b %b %b %b, a, b, sl, q, qc); $monitor($time, %b %b %b %b %b, a, b, sl, q, qc); a =0;b=0;sl = 0; a =0;b=0;sl = 0; #10 a =1; #10 a =1; #10 sl = 1; #10 sl = 1; #10 sl = 0; #10 sl = 0; #10 $finish
67、; #10 $finish;endendendmoduleendmodule 0 0 0 0 0 010 1 0 0 0 120 1 0 1 0 030 1 0 0 1 1齿迟趟恃壬筐笆写痴遍销叫旧率婆渣喻荤亡衙剧线芦妥粪雁碌弓甲购状侄第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件持续赋值持续赋值module orand (out, a, b, c, d, e); input a, b, c, d, e; output out; assign out = e & (a | b) & (c | d);endmodule持续赋值驱动值到持续赋值驱动值到ne
68、t上。因为驱动是持续的,所以输出将随任意输入的改上。因为驱动是持续的,所以输出将随任意输入的改变而随时更新,因此将产生组合逻辑。变而随时更新,因此将产生组合逻辑。祟根颇眷成程振摘助球旺械糙瘩笑臼纠段了桨迈彰筐脑校浩瞅皱啊御合祝第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件过程持续赋值过程持续赋值module latch_quasi (q, en, d); input en, d; output q; reg q; always ( en) if (en) assign q = d; else deassign q;endmodule过程持续赋值是在过程
69、块(过程持续赋值是在过程块(always或或initial)内给一个寄存器数据类型进行)内给一个寄存器数据类型进行的持续赋值。这在大多数综合工具中是非法的。的持续赋值。这在大多数综合工具中是非法的。湃炸掸鲁剔坤多惫唆后懦泥税涟手慨性单掇联皋组胁周劈篇支死院魁山沫第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件综合指示综合指示大多数综合工具都能处理综合指示。大多数综合工具都能处理综合指示。综综合合指指示示可可以以嵌嵌在在Verilog注注释释中中,因因此此他他们们在在Verilog仿仿真真时时忽忽略略,只在综合工具解析时有意义。只在综合工具解析时有意义。不
70、不同同工工具具使使用用的的综综合合指指示示在在语语法法上上不不同同。但但其其目目的的相相同同,都都是是在在RTL代码内部进行最优化。代码内部进行最优化。通通常常综综合合指指示示中中包包含含工工具具或或公公司司的的名名称称。例例如如,下下面面介介绍绍的的EnvisiaAmbitsynthesis工具的编译指示都以工具的编译指示都以ambitsynthesis开头。开头。汗观琵偿掳属丰倚讽茹盎峰异吊菏明雕旁樟痴右呻漓刀矿响隧叠残五页希第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件综合指示综合指示这这里里列列出出部部分分Cadence综综合合工工具具中中综综
71、合合指指示示。这这些些与与其其他他工工具具,如如SynopsysDesignCompiler,中的指示很相似。,中的指示很相似。 / ambit synthesis on / ambit synthesis off / ambit synthesis case = full, parallel, mux结构指示结构指示 / ambit synthesis architecture = cla or rplFSM指示指示 / ambit synthesis enum xyz / ambit synthesis state_vector sig state_vector_ flag井停秽绑猩充勤溅
72、疙候肩桌供第断共慑厚钥拘瘫倒嫁刘凑郡仪辟蹬洗排叹第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件综合指示综合指示case指示指示case语语句句通通常常综综合合为为一一个个优优先先级级编编码码器器,列列表表中中每每个个case项项都都比比后后面面的的case项的优先级高。项的优先级高。Case指示按下面所示指示优化器:指示按下面所示指示优化器:/ambitsynthesiscase=parallel建立并行的编码逻辑,彼此无优先级。建立并行的编码逻辑,彼此无优先级。/ambitsynthesiscase=mux若库中有多路器,使用多路器建立编码逻辑。若库
73、中有多路器,使用多路器建立编码逻辑。/ambitsynthesiscase=full假假定定所所有有缺缺少少的的case项项都都是是“无无关关”项项,使使逻逻辑辑更更为优化并避免产生锁存器。为优化并避免产生锁存器。铬柴酵刁羚懂儒必史内床挤肃逃瓢挚嘛财亲栖佬乾乎灼讲偶营发秋哆乌蓟第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件条件语句条件语句自然完全的条件语句自然完全的条件语句module comcase (a, b, c, d, e); input a, b, c, d; output e; reg e; always ( a or b or c or
74、d) case ( a, b) 2b11: e = d; 2b10: e = c; 2b01: e = 1b0; 2b00: e = 1b1; endcaseendmodulemodule 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 = c; else if ( a & b) e = 1b0; else if ( a & b) e = 1b1;endmodule例中定义了所有可能的选项,综合结果是
75、纯组合逻辑,没有不期望例中定义了所有可能的选项,综合结果是纯组合逻辑,没有不期望的锁存器产生。的锁存器产生。巷碎瘦癌梭焚遣阻嘶访舍谅丧戌栗异肪角傅吴匪取再狼颐滋历施坷帝压赎第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件不完全条件语句不完全条件语句module inccase (a, b, c, d, e); input a, b, c, d; output e; reg e; always ( a or b or c or d) case ( a, b) 2b11: e = d; 2b10: e = c; endcaseendmodulemodule
76、incpif (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 = c;endmodule在上面的例子中,当在上面的例子中,当a变为零时,不对变为零时,不对e赋新值。因此赋新值。因此e保存保存其值直到其值直到a变为变为1。这是锁存器的特性。这是锁存器的特性。若若a变为变为0,e为何值为何值芭阑阎翘畔繁呈沥善应阅慷矢绑抄吟项仔翻苹我主瓮苞营兹聚榆妆蓉其科第17章Verilog中的高级结构ppt课件第17章Verilog
77、中的高级结构ppt课件default完全条件语句完全条件语句module comcase (a, b, c, d, e); input a, b, c, d; output e; reg e; always ( a or b or c or d) case ( a, b) 2b11: e = d; 2b10: e = c; default: e = bx; endcaseendmodulemodule 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)
78、e = d; else if (a & b) e = c; else e = bx;endmodule综合工具将综合工具将bx作为无关值,因此作为无关值,因此if语句类似于语句类似于“fullcase”,可以,可以进行更好的优化。进行更好的优化。例中没有定义所有选项,但对没有定义的项给出了缺省行为。同样,例中没有定义所有选项,但对没有定义的项给出了缺省行为。同样,其综合结果为纯组合逻辑其综合结果为纯组合逻辑没有不期望的锁存器产生。没有不期望的锁存器产生。珊抗瘤蚁掩荒捞虏功作等漂章毗狞挺嫡幌茶凝瓜孺较赣躺鞠颓旱谭缉框醉第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构
79、ppt课件指示完全条件语句指示完全条件语句module dircase (a, b, c, d); input b, c; input 1: 0 a; output d; reg d; always ( a or b or c) case (a) / ambit synthesis case = full 2b00: d = b; 2b01: d = c; endcaseendmodule和前例一样,没有定义所有和前例一样,没有定义所有case项,但综合指示通知优化器缺少的项,但综合指示通知优化器缺少的case项不会发生。结果也为纯组合逻辑,没有不期望锁存器产生。注意项不会发生。结果也为纯组合
80、逻辑,没有不期望锁存器产生。注意如果缺少的如果缺少的case项发生,而其结果未定义,综合结果和项发生,而其结果未定义,综合结果和RTL的描述的行的描述的行为可能不同。为可能不同。拥柜饵赐掐娃许惺叠酣确兼姬巷寥饶溺耀郝剧剪真素栗荔漳泅馆晕篇坊碍第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件case指示例外指示例外module select (a, b, sl); input 1: 0 sl; output a, b; req a, b; always ( sl) case (sl) / ambit synthesis case = full 2b00:
81、begin a = 0; b = 0; end 2b01: begin a = 1; b = 1; end 2b10: begin a = 0; b = 1; end 2b11: b = 1; default: begin a = bx; b = bx; end endcaseendmodule有时使用了有时使用了casefull指示,指示,case语句也可能综合出语句也可能综合出latch。下面的描述综合时产生了一个下面的描述综合时产生了一个latch。苛鼎帚峨梢五甲蹭鼠雷露县拇戈泄扭异究谅珍税艇缎娇里量沂石浦喷门茁第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结
82、构ppt课件函数函数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函函数数没没有有时时序序控控制制,因因此此综综合合结结果果为为组组合合逻逻辑辑。函函数数可可以以在在过过程块内或持续赋值语句中
83、调用。程块内或持续赋值语句中调用。下例中的下例中的or/and块由持续赋值语句调用函数实现块由持续赋值语句调用函数实现奏蚁告唤这泳娩馈阴钧卸度荡悟胁菇堵乘绅脆飘颈屏署狄迂保歧攀舰着描第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件任务任务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) orand (out, a, b, c, d, e); task orand; input a,
84、 b, c, d, e; output out; if (e = 1) out = (a| b) & (c| d); else out = 0; endtaskendmodule任务一般只在测试基准使用,因为:任务一般只在测试基准使用,因为:没有时序控制的任务如同函数没有时序控制的任务如同函数带有时序控制的任务不可综合带有时序控制的任务不可综合下面是用任务描述的下面是用任务描述的or/and块:块:轮淡牲荆厢苦隐译砌碳架划侠源茅睡寿獭秆副恶辛婶釉窃搂顺骂积郊帛陪第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件锁存器(锁存器(latch)推断)推断modu
85、le latch (q, data, enable); input data, enable; output q; reg q; always ( enable or data) if (enable) q = data;endmodule在在always块块中中,如如果果没没有有说说明明所所有有条条件件,将将产产生生latch。在在下下面面的的例例子子中中,由由于于没没有有定定义义enable为为低低电电平平时时data的的状状态态,因因此此enable为为低低电平时电平时data的值必须保持,综合时将产生一个存储元件的值必须保持,综合时将产生一个存储元件锥案火牵擞此养孽撩腮绍绿掉潭而储吉灸
86、愚烘稚井场桌率裔咆沉显磁德诣第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件同步反馈同步反馈(feedback)推断推断有反馈有反馈 :module dffn (q, d, clk, en); input d, clk, en; output q; reg q; always ( negedge clk) if (en) q = d;endmodule综合工具一般不支持组合逻辑反馈,但支持同步反馈。综合工具一般不支持组合逻辑反馈,但支持同步反馈。在在同同步步过过程程块块中中,如如果果条条件件语语句句的的一一个个分分支支没没有有给给所所有有输输出出赋赋值值
87、,则推断出反馈。则推断出反馈。无反馈:无反馈:module dffn (q, d, clk, en); input d, clk, en; output q; reg q; always ( negedge clk) if (en) q = d; else q = bx;endmodule廓靛飘标大殖壕凯勇五彩面阿瓤朋融瀑妄庸峡困沁润程饵年乾它绕陶赔苟第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件带使能的寄存器带使能的寄存器module dffn (q, d, clk, en); input d, clk, en; output q; reg q; a
88、lways ( negedge clk) if (en) q = d;endmodule上上述述带带反反馈馈的的描描述述用用于于带带使使能能端端的的寄寄存存器器的的描描述述。在在寄寄存存器器的的描描述述中,敏感列表是不完全的。中,敏感列表是不完全的。郁栏零材悉春研尝掠戎眩粪蝎笨隅仅敲刚匠空简博裂襟骆烷疾简替晾舒氓第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件阻塞或非阻塞阻塞或非阻塞使用的赋值类型依赖于所描述的逻辑类型:使用的赋值类型依赖于所描述的逻辑类型:在时序块在时序块RTL代码中使用非阻塞赋值代码中使用非阻塞赋值非非阻阻塞塞赋赋值值保保存存值值直直
89、到到时时间间片片段段的的结结束束,从从而而避避免免仿仿真真时时的的竞竞争争情情况况或结果的不确定性或结果的不确定性在组合的在组合的RTL代码中使用阻塞赋值代码中使用阻塞赋值阻塞赋值立即执行阻塞赋值立即执行郝冗乔痕剖件翼串债蹲款八早疚贫箱蚜扛喝隅腆赴锈措赫善呸宜奖皖遍擦第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件阻塞、非阻塞对比阻塞、非阻塞对比非非阻阻塞塞赋赋值值语语句句并并行行执执行行,因因此此临临时时变变量量不不可可避避免免地地在在一一个个周周期期中中被赋值,在下一个周期中被采样。被赋值,在下一个周期中被采样。module bloc (clk, a
90、, 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使用阻塞赋值,此描述综合使用阻塞赋值,此描述综合出一个出一个Dflip-flop:使用非阻塞赋值,此描述将使用非阻塞赋值,此描述将综合出两个综合出两个DFlip-flo
91、p。守堆莉有喝蚁锐傻芍羹悄繁鸣渊衰贴畜亩刨科虱但下严乓吠僻突例巴猪汛第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件复位复位复位是可综合编码风格的重要环节。状态机中一般都有复位。复位是可综合编码风格的重要环节。状态机中一般都有复位。module sync( q, ck, r, d); input ck, d, rst; output q; reg q; always ( negedge ck) if (r) q = 0; else q = d;endmodulemodule async( q, ck, r, d); input ck, d, r; out
92、put q; reg q; always ( negedge ck or posedge r) if (r) q = 0; else q = d;endmodule同步复位同步复位同步块的异步复位同步块的异步复位同同步步复复位位描描述述:在在同同步步块块内内,当当复复位位信信号号有有效效时时,进进行行复复位位操操作作;当当复复位位信信号号无无效效时时,执执行行该该块块的的同同步步行行为为。如如果果将将复复位位信信号号作作为为条条件件语语句句的的条条件件,且且在在第第一一个个分支中进行复位,综合工具可以更容易的识别复位信号。分支中进行复位,综合工具可以更容易的识别复位信号。异异步步复复位位:在在
93、同同步步块块的的敏敏感感表表中中包包含含复复位位信信号号的的激激活活边边沿沿。在在块块内内,复复位位描描述述方方式与同步方式相同。式与同步方式相同。跳隋酒摔缝继恭慨慈女曳挎刀性酋榴鉴礼诗诞询荤位崩求驹横就汽拳黔良第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件复位复位下下面面的的异异步步复复位位描描述述(异异步步复复位位和和同同步步块块分分开开)是是一一种种很很不不好好的的描描述述风风格格,并并且且有有的的综综合合工工具具不不支支持持。在在仿仿真真中中,如如果果r和和ck在在同同一一时时刻刻改改变变,则则结结果果不可确定。不可确定。module asyn
94、c( q, ck, r, d); input ck, d, r; output q; reg q; always ( negedge ck) if ( !r ) q = d; always ( posedge r) q = 0;endmodule不好的异步复位描述方式不好的异步复位描述方式咎督室摸黄汇舟纂废咒捧芹蛆笺摹沏听考垫师磕后哭镍骤蜘跺瓮矣啼搁煤第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件带复位、置位的锁存器带复位、置位的锁存器latch下下面面的的例例子子给给出出了了一一个个复复杂杂一一些些的的复复位位分分支支。由由于于是是一一个个latch
95、,因此敏感表是完全的。因此敏感表是完全的。module latch (q, enable, set, clr, d); input enable, d, set, clr; output q; reg q; always ( enable or set or clr or d) begin if (set) q = 1; else if (clr) q = 0; else if (enable) q = d; endendmodule沿作光躺絮籍摄锅聊顽餐琵各镭苞眼轧彪视嘶毖汉磊寻浑火辨该薄尉滑荔第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件有限状态机
96、有限状态机有限状态机有两种不同类型有限状态机有两种不同类型显式和隐式。显式和隐式。隐式状态机用多个隐式状态机用多个(posedgeclk)语句指出状态跳变。语句指出状态跳变。隐式状态机的抽象级比显式状态机高,通常不可综合。隐式状态机的抽象级比显式状态机高,通常不可综合。显式状态机用显式状态机用case语句显式定义每个可能状态。语句显式定义每个可能状态。通常,显式状态机用于可综合代码描述。通常,显式状态机用于可综合代码描述。绥瘟悼岂苔型善渐术钠蛇咕淘蒙敲提哇崔搽厂鉴驰综竭枫产伺劲纳蓉循宦第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件显式有限状态机显式有限
97、状态机timescale 1ns/100psmodule state4 (clock, reset, out); input reset, clock; output 1: 0 out; reg 1: 0 out; parameter /状态变量枚举状态变量枚举 stateA = 2b00, stateB = 2b01, stateC = 2b10, stateD = 2b11; reg 1: 0 state; /状态寄存器状态寄存器 reg 1: 0 nextstate; always ( posedge clock) if (reset) /同步复位同步复位 state = stateA;
98、 else state = nextstate;always ( state) / 定义下一状态的组合逻定义下一状态的组合逻辑辑 case (state) stateA: begin nextstate = stateB; out = 2b00; / 输出决定于当前状态输出决定于当前状态 end stateB: begin nextstate = stateC; out = 2b11; end stateC: begin nextstate = stateD; out = 2b10; end stateD: begin nextstate = stateA; out = 2b00; end e
99、ndcaseendmodule层馆耸乎怂擞负瀑掣坏漱瓢相娃吓左磁搞静灭牌顿编甸廉福胁辅胆摇僳醇第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件有限状态机有限状态机FSM指导指导enum指导指导状态赋值枚举,也用来将状态赋值捆绑到状态向量。状态赋值枚举,也用来将状态赋值捆绑到状态向量。state_vector指导指导定义状态寄存器和编码类型定义状态寄存器和编码类型状状态态机机的的描描述述也也有有综综合合指指导导。在在RTL代代码码中中,FSM指指导导向向优优化化器器传传递状态机有关的特性信息。递状态机有关的特性信息。这些指导有:这些指导有:麻溜豺辊问斯腰但
100、劈杠饵傣冬萍嘉饿或岛箍讨钥耗名汞骤娩劳低室戍机苹第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件FSM指导指导timescale 1ns/ 100psmodule state4 (clock, reset, out); input reset, clock; output 1: 0 out; reg 1: 0 out; parameter /* ambit synthesis enum state_info */ stateA = 2b00, stateB = 2b01, stateC = 2b10, stateD = 2b11; reg 1: 0 /*
101、 ambit synthesis enum state_info */ state; reg 1: 0 /* ambit synthesis enum state_info */ nextstate; always ( posedge clock) /* ambit synthesis state_vector state -encoding one_hot */ if (reset) state = stateA; else state = nextstate;. . .枚举名称定义枚举名称定义枚举名称限用于枚举名称限用于state、nextstate向量向量定义状态寄存器定义状态寄存器并指
102、定编码格式并指定编码格式魂蛀疡哟狠田体来忧街吧捻瓦倾疏畸忘充坠僵雍妈渭矽刺搀取厚化汞罕菩第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件资源共享资源共享资源共享是指多节代码共享一组逻辑。例如:资源共享是指多节代码共享一组逻辑。例如:always ( a or b or c or d) if (a) out = b + c; else out = b + d;没有资源共享没有资源共享资源共享资源共享资源共享与所用综合工具有关。但通资源共享与所用综合工具有关。但通常,要共享资源,表达式必须在同一常,要共享资源,表达式必须在同一个个always块中的同一个条件
103、语句中。块中的同一个条件语句中。捐虫赦纲撤随租彩赞遣似炬潭溜北雁贴俐涪记禾厦加佑畴官敲悬懒鼻耗砌第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件资源共享资源共享资资源源共共享享可可以以由由RTL代代码码控控制制。例例如如,可可以以改改变变编编码码风风格格强强制制资资源共享。源共享。if (a) out = b + c;else out = b + d;原始代码原始代码强制资源共享强制资源共享temp = a ? c : d;out = b + temp;或或out = b + (a ? c : d);宝姐癌恃虽酥足罩帛诈殃官雨灭占挪领矫惯里赣树热釜屠牙令
104、裙焰蟹琼魄第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件复杂操作符复杂操作符大多数工具可以将它映射为一个乘法器。大多数工具可以将它映射为一个乘法器。专专用用宏宏单单元元库库中中可可能能有有乘乘法法器器。宏宏单单元元库库中中的的元元件件的的复复杂杂程度要比常规单元库高。程度要比常规单元库高。宏宏单单元元库库可可以以包包含含部部分分可可重重用用设设计计,如如FIFO,加加法法器器,减减法器(各种结构),移位寄存器,计数器和解码器等。、法器(各种结构),移位寄存器,计数器和解码器等。、宏宏单单元元库库还还可可以以包包括括用用户户自自定定义义的的可可重重用用块
105、块,由由用用户户自自己己设计并综合。设计并综合。复复杂杂操操作作符符是是可可以以被被识识别别为为高高层层操操作作并并被被直直接接映映射射到到一一个个向向量量库库内内以存在单元的操作。例如:以存在单元的操作。例如:out=a*b;例挨涧辊静辗驱腊觉透远德瞪邱瞩刁贼掷酿罚坡号林旧泽泵山妆堰遇媚运第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件综合工具不能胜任的工作综合工具不能胜任的工作时钟树时钟树复杂的时钟方案复杂的时钟方案组合逻辑反馈循环和脉冲发生器组合逻辑反馈循环和脉冲发生器存储器,存储器,IO专用宏单元专用宏单元总做得和你一样好总做得和你一样好费当恐狡
106、酮泳淳姿婆弛脸挖珐畔冶蛊止酮唬瘫咨橇旨敌慰实铁铸我准帮胖第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件综合工具不能胜任的工作综合工具不能胜任的工作综合工具善于优化组合逻辑。但设计中有很大一部分不是组合逻辑。综合工具善于优化组合逻辑。但设计中有很大一部分不是组合逻辑。例例如如,时时钟钟树树。时时钟钟树树是是全全局局的的、芯芯片片范范围围的的问问题题。在在没没有有版版图图布布局局信信息息的的情况下,要给出较优的结果,综合工具对块的大小有一定的限制。情况下,要给出较优的结果,综合工具对块的大小有一定的限制。综综合合工工具具不不能能很很好好地地处处理理复复杂杂
107、时时钟钟。通通常常,只只允允许许要要综综合合的的块块含含有有一一个个时时钟钟。但设计中经常使用两相时钟或在双沿时钟。但设计中经常使用两相时钟或在双沿时钟。综综合合工工具具不不易易实实现现脉脉冲冲产产生生逻逻辑辑,如如单单个个脉脉冲冲,或或结结果果依依赖赖于于反反馈馈路路径径延延迟迟的的组组合合反反馈馈逻逻辑辑。对对这这种种情情况况,插插入入延延迟迟元元件件使使一一个个信信号号推推迟迟到到达达的的效效果果并并不好。不好。不能用综合产生大块存储器,因为综合工具会用不能用综合产生大块存储器,因为综合工具会用flip-flop实现。实现。不不是是所所有有的的综综合合工工具具都都能能很很好好地地从从工工
108、艺艺库库里里挑挑选选择择大大的的单单元元或或宏宏单单元元,这这需需要要用用户户人人工工实实例例化化。一一些些宏宏单单元元,例例如如大大的的结结构构规规则则的的数数据据通通路路元元件件,最最好好使用生产商提供的硅编译器产生。使用生产商提供的硅编译器产生。综综合合工工具具不不保保证证产产生生最最小小结结果果。通通常常综综合合结结果果不不如如人人工工结结果果,只只要要你你有有足足够够的时间。的时间。彝抉囚冈树叁绕述眨鸵模恕荤界逼栋寓猛占镇惮烹近灸咬峻常差狭祁扑煤第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件可编程逻辑器件相关问题可编程逻辑器件相关问题迄迄今今
109、为为止止,很很多多注注释释假假定定综综合合为为ASIC。对对FPGA,存存在在一一些些不不同同问问题题。所所有有ASIC综综合合工工具具以以同同样样的的方方式式工工作作,使使用用同同样样的的优优化化算算法法,且且目目标标工工艺艺库库的的单单元元也也是是相相似似的的。众众所所周周知知,FPGA使使用用不不同同的的技技术术,EEPROM,SRAM和和anti-fuse,且且每每个个开开发发商商有有不不同同的的构构造造块块,这这些些块块比比ASIC使使用用的的基基本本门门要要大大很多。很多。对对特特定定的的FPGA,其其结结构构是是固固定定的的,限限制制了了静静态态时时序序分分析析的的效效用用,因因
110、为为ASIC的的路路径径延延迟迟变变化化的的范范围围很很大大,而而FPGA是是可可预预测测的的。而而且且,FPGA设设计计时时通通常常使用专用结构,而这些专用结构很难由综合工具实现。使用专用结构,而这些专用结构很难由综合工具实现。因因此此Verilog代代码码需需要要技技术术与与工工艺艺专专用用指指导导,这这些些指指导导由由FPGA开开发发商商提提供供的的软软件件的的算算法法识识别别,而而仿仿真真时时忽忽略略。这这些些指指导导通通常常由由用用户户自自定定义义属属性性,注注释释或或直直接实例化专用单元。这会限制接实例化专用单元。这会限制Verilog的技术独立性和可移植性。的技术独立性和可移植性
111、。关关键键问问题题是是综综合合工工具具能能够够多多好好地地处处理理所所选选的的技技术术。要要得得到到一一个个好好的的结结果果,需需要结构专用算法。要结构专用算法。嗡池员洲打颗敏士窥狱悲掺诌素酮监群棒雨骡充佣蛇紧朔沦蒲冠砍煞媚轧第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件第第2121章章SDF时序标注时序标注学习内容:学习内容:延迟计算器延迟计算器标准延迟格式(标准延迟格式(StandardDelayFormat)(SDF)标注标注SDF数据数据沏蔚谊临貌泳侯杭检晕射椽鼻免捣镐硝索蝇棒旭磁渗局樟脏率撅冗诽绘路第17章Verilog中的高级结构ppt课件
112、第17章Verilog中的高级结构ppt课件术语及定义术语及定义CTLF:(CompiledTimingLibraryFormat)编编译译的的时时序序库库格格式式。特特定定工工艺艺元件数据的标准格式。元件数据的标准格式。GCF:(:(GeneralconstraintFormat)通用约束格式。约束数据的标准格式。通用约束格式。约束数据的标准格式。MIPD:(ModuleInputPortDelay)模模块块输输入入端端口口延延时时。模模块块输输入入或或输输入入输输出出端口的固有互连延时端口的固有互连延时MITD:(Multi-sourceInterconnectTransportDelay
113、)多多重重互互连连传传输输延延时时。与与SITD相似,但支持多个来源的不同延时。相似,但支持多个来源的不同延时。PLI:(Programming Language Interface)编编程程语语言言界界面面。基基于于C的的对对Verilog数据结构的程序访问。数据结构的程序访问。SDF:StandardDelayFormat.(标准延迟格式标准延迟格式)。时序数据。时序数据OVI标准格式。标准格式。SITD:Single-SourceInterconnectTransprotDelay,单单一一源源互互连连传传输输延延迟迟。和和MIPD相似,但支持带脉冲控制的传输延迟。相似,但支持带脉冲控制
114、的传输延迟。SPF:StandardParasiticFormat.(标标准准寄寄生生参参数数格格式式)。提提取取的的寄寄生生参参数数数数据的标准格式。据的标准格式。织拿道砍希孰清陋谗坞家郝硼级照千荔牢例蕾咒邮握贵辅磕综允辕薪鞍旱第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件时序标注时序标注通常的通常的Verilog元件库仅包含固有时序数据。元件库仅包含固有时序数据。若要进行精确的时序仿真,还需要的数据有:若要进行精确的时序仿真,还需要的数据有:输入传输时间输入传输时间固有延迟固有延迟驱动强度驱动强度总负载总负载互连寄生互连寄生环境因子环境因子过程过程
115、温度温度电压电压同同时时还还需需要要仿仿真真最最坏坏情情况况下下的的数数据据和和最最佳佳情情况况下下时时钟钟,反反过过来来也也要要做做一一次次。在没有时序标注时在没有时序标注时Verilog仿真器做不到这一点。仿真器做不到这一点。临夸键栓茂掩身驱鞘膀兜崇贮枪东请锣鞍兑贫烤语芯些骑特蹬驳妮卫郎阅第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件时序数据流时序数据流匹碟腥效译灭礁蛰段丝俐扫入室畏漾啃洪娥化败搪源雍太恩唾肿困舰渭架第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件时序数据流程时序数据流程延时计算器需要:延时计
116、算器需要:综合出来的网表综合出来的网表布局布线工具产生的简化的寄生参数布局布线工具产生的简化的寄生参数延迟计算器可以产生:延迟计算器可以产生:粗略延迟,仅基于设计连线和层次粗略延迟,仅基于设计连线和层次详细延迟,由后端工具提取的寄生参数信息详细延迟,由后端工具提取的寄生参数信息有有时时序序驱驱动动的的自自顶顶而而下下的的设设计计方方法法中中,时时序序约约束束贯贯穿穿整整个个设设计计流流程程。与与时时序序数数据据仅仅向向后后反反馈馈的的情情况况,如如从从布布线线布布线线工工具具反反馈馈到到综综合合工工具具,相相比比,这这种种方方法法时时序序收收敛速度快。敛速度快。前端和后端工具使用统一的延迟计算
117、器前端和后端工具使用统一的延迟计算器会提高时序收敛速度。会提高时序收敛速度。大多数大多数EDA工具接受标准延迟格式(工具接受标准延迟格式(SDF)。)。忠令庄戮酚缄杭肚幽修馋鸽裴惊暮垮僵颗桅辉绅檀怀极憎磁幂匹嫁患厦续第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件延迟计算器延迟计算器延时计算器主要有两类:延时计算器主要有两类:嵌入在工具中的延迟计算器嵌入在工具中的延迟计算器用户延迟计算器用户延迟计算器用户自定义用户自定义开发商提供开发商提供延迟计算器可以产生延迟计算器可以产生SDF数据,或直接使用数据,或直接使用PLI标注时序数据。标注时序数据。延迟计算
118、器可以自定义,但必须选择一个合适的延迟公式。延迟计算器可以自定义,但必须选择一个合适的延迟公式。大大多多数数ASIC生生产产商商提提供供自自己己的的生生产产工工艺艺的的延延迟迟计计算算器器。这这些些延延迟迟计计算算器器通通常常用用PLI编编写写并并直直接接在在仿仿真真时时标标注注到到设设计计中中。但但计计算算器器也也可可以以是是独独立立的的程程序序,产产生生的的SDF由由内嵌的延迟标注工具进行标注。内嵌的延迟标注工具进行标注。蹲帘雨曙澈暗贰美竟坟谍横怕搏巍魏标变铜脯夯即闪丫尔杂洞媳艰视逃敞第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件SDF(标准延迟格
119、式)(标准延迟格式)模块通路延迟模块通路延迟条件的和无条件的条件的和无条件的器件延迟器件延迟互连延迟互连延迟端口延迟端口延迟时序检查时序检查通路和通路和net时序约束时序约束标标准准延延迟迟格格式式(SDF)是是统统一一的的时时序序信信息息表表示示方方法法,与与工工具具无无关关。它它可以表示:可以表示:注注意意:在在specity块块中中不不能能说说明明互互连连延延迟迟或或输输入入端端口口延延迟迟。要要用用互互连连延延迟迟仿仿真真,必须进行时序标注。必须进行时序标注。模模块块输输入入端端口口延延迟迟(MIPD)描描述述的的是是到到模模块块输输入入端端口口或或双双向向端端口口的的延延迟迟。延延迟
120、为惯性的且影响三种跳变:到迟为惯性的且影响三种跳变:到1,到,到0,和到,和到z。单单一一源源输输入入传传输输延延迟迟(SITD)和和MIPD相相似似,但但使使用用传传输输延延迟迟并并且且有有全全局局和和局局部脉冲控制。部脉冲控制。SITD影响影响6种跳变:种跳变:0到到1,1到到0,0到到z,z到到0,1到到z,z到到1。多多重重输输入入传传输输延延迟迟(MITDs)和和SITD相相似似,但但允允许许为为每每个个源源-负负载载通通路路说说明明独独立延迟。立延迟。溺肚株欠报简衰脖蔫朱车筹绑傀绵厘付唆飞灸距锚遇没掏柄呛准士困控温第17章Verilog中的高级结构ppt课件第17章Verilog中
121、的高级结构ppt课件SDF举例举例(DELAYFILE (DESIGN system) (DATE Mon Jun 1 14:54:29 PST 1992) (VENDOR Cadence) (PROGRAM delay_calc) (VERSION 1.6a, 4) (DIVIDER /) /* hierarchical divider */ (VOLTAGE 4.5:5.0: 5.5) (PROCESS worst) (TIMESCALE 1ns) /* delay time units */ (CELL (CELLTYPE system) (INSTANCE block_1) /* to
122、p level blocks */ (DELAY (ABSOLUTE (INTERCONNECT D1/z P3/i (. 155:. 155) (. 130:. 130) (CELL (CELLTYPE INV) (INSTANCE ) /* all instances of INV */ (DELAY (INCREMENT (IOPATH i z (. 345:. 348) (. 325:. 329) (CELL (CELLTYPE OR2) (INSTANCE B1/C1) /* this instances of OR2 */ (DELAY (ABSOLUTE (IOPATH i1 z
123、 (. 300:. 300) (. 325:. 325) (IOPATH i2 z (. 300:. 300) (. 325:. 325) / end delay fileSDF文件配置信息可以指定某种单元可以指定某种单元的所有实例或某个实例的所有实例或某个实例延迟可以是绝延迟可以是绝对的或相对的对的或相对的守仕景拽控燎烃诈楷弧商而鼓桂盎祖原两工杂名毗炎寝靠斯艰坛伶庚寨鲍第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件SDF标注工具标注工具用系统任务用系统任务$sdf_annotate标注标注SDF时序信息。时序信息。可以交互式界面调用这个任务,或在源代
124、码中调任务。可以交互式界面调用这个任务,或在源代码中调任务。注注意意:除除sdf_file的的所所有有参参数数可可以以忽忽略略。sdf_file可可以以是是任任意意名名字字,然然后后在在运运行行时时使使用用命令行选项命令行选项+sdf_file选项指定一个选项指定一个sdf_file。$sdf_annotate (sdf_file, module_instance, config_file, log_file, mtm_spec, scale_factors, scale_type);1.sdf_file:SDF文件的绝对或相对路径文件的绝对或相对路径2.module_instance:标注范
125、围。缺省为调用:标注范围。缺省为调用$sdf_annotate所在的范围所在的范围3.config_file:配置文件的绝对或相对路径。缺省使用预设的设置。:配置文件的绝对或相对路径。缺省使用预设的设置。4.Log_file:日日志志文文件件名名,缺缺省省为为sdf.log。可可以以用用+sdf_verbose选选项项生生成成一一个个日日志志文件。文件。5.Mtm_spec:选选择择标标注注的的时时序序值值,可可以以是是MINIMUM,TYPICAL,MAXIMUM,TOOL_CONTROL之之一一。缺缺省省为为TOOL_CONTROL(命命令令行行选选项项)。这这个个参参数数覆覆盖盖配置文件
126、中配置文件中MTM关键字。关键字。6.Scale_factors:min:typ:max格格式式的的比比例例因因子子,缺缺省省为为1.0:1.0:1.0。这这个个参参数数覆覆盖盖配置文件配置文件SCALE_FACTORS关键字。关键字。7.Scale_type:选择比例因子;可以是:选择比例因子;可以是FROM_MINIMUM,FROM_TYPICAL,FROM_MAXIMUM,FROM_MTM之一。缺省为之一。缺省为FROM_MTM。这个参数覆盖配置。这个参数覆盖配置文件中文件中SCALE_TYPE关键字。关键字。禽呢戚蚜歌裴园侈献骡擎卯栏已续瓤陨砍楚虫昧苍梗汗手妨肆鸟堵毒慰幕第17章Ver
127、ilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件执行执行SDF标注标注在下面的例子中,在设计的最顶层进行带比例的在下面的例子中,在设计的最顶层进行带比例的SDF标注标注module top; . . . . . . . . initial $sdf_annotate (my. sdf, , , , , 1.6:1.4:1.2); . . . . . . . .endmodule在下面的例子中,对不同的实例分开标注在下面的例子中,对不同的实例分开标注module top; . . . . . . . . cpu u1 ( . . . fpu u2 ( . . . dma
128、 u3 ( . . . . . . . . . . . initial begin $sdf_annotate (sdffiles/cpu.sdf, u1, ,logfiles/cpu_sdf.log); $sdf_annotate (sdffiles/fpu.sdf, u2, ,logfiles/fpu_sdf.log); $sdf_annotate (sdffiles/dma.sdf, u3, ,logfiles/dma_sdf.log); end . . . . . . . .endmodule冻衔误旗缅父锁云众腋透烧杂变殃职验郡闺瞄酌寅岛陡凌桨潞捧频贫茵肘第17章Verilog中的高级
129、结构ppt课件第17章Verilog中的高级结构ppt课件执行执行SDF标注标注和和SDF标注相关的命令行选项:标注相关的命令行选项:命令命令解释解释+sdf_cputime记录用于标注的记录用于标注的CPU秒数秒数+sdf_error_info显示显示PLI标注工具错误信息标注工具错误信息+sdf_file覆盖系统任务覆盖系统任务$sdf_annotate中的文件名中的文件名+sdf_nocheck_celltype禁止逐个实例进行单元类型确认禁止逐个实例进行单元类型确认+sdf_no_errors禁止禁止SDF标注的错误信息标注的错误信息+sdf_nomsrc_int通知标注工具没有通知标
130、注工具没有MITD;可以提高性能;可以提高性能+sdf_no_warnings禁止禁止SDF标注的警告信息标注的警告信息+sdf_verbose详细记录标注的过程信息详细记录标注的过程信息违丽朋恫川郝库擂娟花领苏瓜盲负援腊珐压陶券材安尿霄咬启胡今摔垃诛第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件总结总结延迟计算器延迟计算器标准延迟格式标准延迟格式SDFSDF数据标注数据标注在本章中学习了:在本章中学习了:东斩目歇蹭录尉匹鬃咕礼朴远威青段反隔夯咎寸嘴利罚价碴虞辆排胶琼钠第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt
131、课件复习复习1.什么情况下要进行时序标注?什么情况下要进行时序标注?2.延迟计算器通常需要哪些输入?延迟计算器通常需要哪些输入?3.在设计的什么地方可以调用在设计的什么地方可以调用$sdf_annotate系统任务?系统任务?问题:问题:1.使使用用互互连连延延迟迟仿仿真真时时进进行行时时序序标标注注,对对同同一一个个模模块块的的不不同同实实例例使使用用不不同同的的时序,这些时序是由元件物理特性计算出来的。时序,这些时序是由元件物理特性计算出来的。2.任任何何延延迟迟计计算算器器都都需需要要物物理理连连接接和和层层次次信信息息、生生产产商商元元件件技技术术库库、元元件件环环境境信信息息以以及及
132、用用户户的的指指导导(如如,想想让让它它做做什什么么?)。另另外外,计计算算器器根根据据后后端端工具提取的简化的寄生参数,可以提供更好的延迟估算。工具提取的简化的寄生参数,可以提供更好的延迟估算。3.通通常常,用用户户在在设设计计的的最最顶顶层层或或testbench的的initial块块中中调调用用$sdf_annotate系系统统任任务务,这这样样任任务务在在时时刻刻0时时执执行行一一次次。也也可可以以在在交交互互式式模模式式执执行行系系统统任任务务$sdf_annotate。仿真器并不限制在哪里使用这个系统任务。仿真器并不限制在哪里使用这个系统任务。解答:解答:掐吃尺香宏忿义爹变他饶仍霄
133、掘蜘咏官蝗肄蛰蚜弄妈马号柜嫡喜吭尾槛伟第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件第第2222章章CodingStylesforSynthesis1.if语句和语句和case语句的编码风格语句的编码风格2.if语句和语句和case语句中晚到达信号的处理语句中晚到达信号的处理3.逻辑块的编码风格逻辑块的编码风格4.高性能编码技术高性能编码技术5.其它问题其它问题主要内容:主要内容:哆鳃蹋瞒汽吃站裸恋窜寐苔锥侵累过淄春旺胀瘦嘱刮方绣耐竹褥衷痔刘涅第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件if语句语句modul
134、e 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 = c; else if (sel1) z = b; else if (sel0) z = a; else z = 0; endendmodulemodule mult_if(a, b, c, d, sel, z); input a, b, c, d; input 3:0 sel; ou
135、tput z; reg z; always (a or b or c or d or sel) begin z = 0; if (sel0) z = a; if (sel1) z = b; if (sel2) z = c; if (sel3) z = d; endendmodule例例1.1a单个单个 if 语句语句例例1.1b多重多重 if 语句语句注意代码注意代码的优先级的优先级檀宋加斯顶过蜘菇委爷罢乔绷奄违幼竣康佯趋餐群绽盂铆埔铱碑群聋栓毛第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件if语句语句瞳剖赋淄卉嘴漓研奔梧磋艾泳急资辩耽帆澡促廷防娱刊趟
136、拉碉腰呈启屿念第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件case语句语句module case1(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 casex (sel) 4b1xxx: z = d; 4bx1xx: z = c; 4bxx1x: z = b; 4bxxx1: z = a; default: z = 1b0; endcase endendmodulecasex具有使
137、用具有使用无关项的优点,无关项的优点,不用列出不用列出sel的的所有组合。所有组合。例例1.2case 语句语句嵌膛蠕羌钒摘青躬辕掠馋燃反巴傅旺穆娃病拧椰拯藻可杆咒近梧热溉双除第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件晚到达信号处理晚到达信号处理 设计时通常知道哪一个设计时通常知道哪一个 信号到达的时间要晚一些。这些信信号到达的时间要晚一些。这些信息可用于构造息可用于构造HDL,使,使到达晚的信号离输出近一些到达晚的信号离输出近一些。 下面的例子中,针对晚到达信号重新构造下面的例子中,针对晚到达信号重新构造if和和case语句,以语句,以提高逻辑性
138、能。提高逻辑性能。笼嵌肇宾伤锁州克胸虹埂扔千避汐肩丙坯当内捆丑伙帖辫全蚜蜕睛神徘囱第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件晚到达的是数据信号晚到达的是数据信号 顺序顺序if语句可以根据关键信号构造语句可以根据关键信号构造HDL。在例。在例1.1a 中,输入信号中,输入信号d处于选处于选择链的最后一级,也就是说择链的最后一级,也就是说d最靠近输出。最靠近输出。 假如信号假如信号b_is_late是晚到达信号,我们就要重新构造例是晚到达信号,我们就要重新构造例1.1a使其最优化。使其最优化。module mult_if_improved(a, b_i
139、s_late, c, d, sel, z); input a, b_is_late, c, d; input 3:0 sel; output z; reg z, z1; always (a or b_is_late or c or d or sel) begin z1 = 0; if (sel0) z1 = a; if (sel2) z1 = c; if (sel3) z1 = d; if (sel1 & (sel2|sel3) z = b_is_late; else z = z1; endendmodule具有优先级的具有优先级的if结构结构module single_if(a, b, c,
140、 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 (sel1) z = b_is_late; else if (sel2) z = c; else if (sel3) z = d; else if (sel0) z = a; else z = 0; endendmodule无优先级的无优先级的if结构结构而寓赐架侈讲藻圭鲸趣贸葬斧屁泡除兆吐蔗艺慢安滓妮恤盟楔苞钡晓远呈第17章Verilog中的高级结构ppt课件第17章Verilog中的
141、高级结构ppt课件晚到达的是数据信号晚到达的是数据信号锹估罪燕弗茄蜂诉酋恨钝否脐戒域傻又溶急束岔硅男谓沫竣炙机杜洗偏狭第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件晚到达的是控制信号晚到达的是控制信号 如果晚到达信号作为如果晚到达信号作为if语句条件分支的条件,也应使这个信号离输出最近。语句条件分支的条件,也应使这个信号离输出最近。在下面的例子中,在下面的例子中,CTRL_is _late是晚到达的控制信号是晚到达的控制信号module single_if_late(A, C, CTRL_is_late, Z); input 6:1 A; input
142、5:1 C; input CTRL_is_late; output Z; reg Z; always (C or A or CTRL_is_late) if (C1 = 1b1) Z = A1; else if (C2 = 1b0) Z = A2; else if (C3 = 1b1) Z = A3; else if (C4 = 1b1 & CTRL_is_late = 1b0) / late arriving signal in if condition Z = A4; else if (C5 = 1b0) Z = A5; else Z = A6; endmodule烂哨处救箍抢咳茎埃疯论股
143、恨瞒渴菌濒井爷诽锡屋饮歧卞酚寓雨闯教鞘办第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件晚到达的是控制信号晚到达的是控制信号module single_if_late(A, C, CTRL_is_late, Z); input 6:1 A; input 5:1 C; input CTRL_is_late; output Z; reg Z; always (C or A or CTRL_is_late) / late arriving signal in if condition if (C4 = 1b1 & CTRL_is_late = 1b0) Z =
144、 A4; else if (C1 = 1b1) Z = A1; else if (C2 = 1b0) Z = A2; else if (C3 = 1b1) Z = A3; else if (C5 = 1b0) Z = A5; else Z = A6; endmodule亦捧月桑宝带叼败市标君钨乐绕遣嗓黑祭尧群苛倚观卒厚厌潞汪曾昧透琉第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件if-case嵌套语句嵌套语句module case_in_if_01(A, DATA_is_late_arriving, C, sel, Z); input 8:1 A; in
145、put DATA_is_late_arriving; input 2:0 sel; input 5:1 C; output Z; reg Z; always (sel or C or A or DATA_is_late_arriving) if (C1) Z = A5; else if (C2 = = 1b0) Z = A4; else if (C3) Z = A1; else if (C4) case (sel) 3b010: Z = A8; 3b011: Z = DATA_is_late_arriving; 3b101: Z = A7; 3b110: Z = A6; default: Z
146、= A2; endcase else if (C5 = = 1b0) Z = A2; else Z = A3;endmodule州幌驳夫焰滋屹凭炽舆猴保白斑绣铱蛀说失祟趴瘫芭匝桑倔坡片群孟费博第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件if-case嵌套语句嵌套语句Case语句语句if语句语句括恃培宪澡愧蹈娟丘典晋掐尤厉殴怒浴嘲滞缸炒香忆梧柒熙翠猛倪涩吼摧第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件if-case嵌套语句嵌套语句修改后修改后always (sel or C or A or DATA_is_l
147、ate_arriving) begin if (C1) Z1 = A5; else if (C2 = 1b0) Z1= A4; else if (C3) Z1 = A1; else if (C4) case (sel) 3b010: Z1 = A8; /3b011: Z1 = DATA_is_late_arriving; 3b101: Z1 = A7; 3b110: Z1 = A6; default: Z1 = A2; endcase else if (C5 = 1b0) Z1 = A2; else Z1 = A3; FIRST_IF = (C1 = 1b1) | (C2 = 1b0) | (
148、C3 = 1b1); if (!FIRST_IF & C4 & (sel = = 3b011) Z = DATA_is_late_arriving; else Z = Z1; end购船冻歇烧僧娥窗叔撅蜜安内山血级喘觅溶拿舆徽沉歼磐掠煤囤瑚日蒲阂第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件if-case嵌套语句嵌套语句修改后修改后骨堡疽牛庚诸咎窗箭文申惋最解丙新犁监脊唬陨夹伎红惺怪误宜实残否追第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件逻辑构造块的编码格式逻辑构造块的编码格式下面介绍某些常用逻辑块,如译码器
149、的不同的编下面介绍某些常用逻辑块,如译码器的不同的编码格式。每种块给出了一个通常格式和建议格式。码格式。每种块给出了一个通常格式和建议格式。所有的例子的位宽都是参数化的。所有的例子的位宽都是参数化的。敦蕾等谣隋碌路霓扔迂谈怯玉癌鸽学璃藉赞势拼鹰赁浊似虞制砒绑袒篱阳第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件3-8译码器译码器index方式方式module decoder_index (in1, out1); parameter N = 8; parameter log2N = 3; input log2N-1:0 in1; output N-1:0
150、out1; reg N-1:0 out1; always (in1) begin out1 = 0; out1in1 = 1b1; endendmoduleloop方式方式module decoder38_loop (in1, out1); parameter N = 8; parameter log2N = 3; input log2N-1:0 in1; output N-1:0 out1; reg N-1:0 out1; integer i; always (in1) begin for(i=0;iN;i=i+1) out1i = (in1 = i); endendmodule幽掀噪旺游把
151、驹炊易宽猿长徘踏漳阻峻顶邑碰束蜗浚铺蜗李竣邹荤蚁测靶第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件译码器译码器玫德喀竞参饵邻市压凰职懒拔潍蹋漾怨桩哟斥串熙摇亨趁熟乐趴徐锦脊扭第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件优先级编码器优先级编码器高位优先高位优先1?_?:11101?_?:110001?_?:1010001_?:1000000_1?:0110000_01?:0100000_001?:0010000_000?:000module priority_low_high (A, P); parameter
152、 N = 8; parameter log2N = 3; input N-1:0 A; /Input Vector output log2N-1:0 P; / High Priority Index reg log2N-1:0 P; function log2N-1:0 priority; input N-1:0 A; integer I; begin priority = 3b0; for (I=0; IN; I=I+1) if (AI) priority = I;/ Override previous index end endfunction always (A) P = 0; I=I-
153、1) XOR_reduce_func = XOR_reduce_func dataI; end endfunction always (data_in) data_out =0; K=K-1) begin J = (NUM+1)/2; J = J-1; if (even(NUM) for (I=NUM-1; I=0; I=I-2) begin resultJ = tempI tempI-1; J = J-1; end else begin for (I=NUM-1; I=1; I=I-2) begin resultJ = tempI tempI-1; J = J-1; end result0
154、= temp0; end tempN-1:0 = resultN-1:0; NUM = (NUM+1)/2; end XOR_tree_func = result0; endendfunction always (data_in) data_out = XOR_tree_func(data_in);endendmodule树形结构树形结构茅陋封趁训割唾沏肮鬼笔哲书蘸奥擦颠氦翻峡院塞蛛鸿藤泰岳攻叼寥雾较第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件高性能编码技术高性能编码技术在某些情况下,可以通过重复逻辑来提高速度。在某些情况下,可以通过重复逻辑来提高速
155、度。在下面的例子中,在下面的例子中,CONTROL是一个晚到达的输入信号。要提高性能,是一个晚到达的输入信号。要提高性能,就要减少就要减少CONTROL到输出之间的逻辑。到输出之间的逻辑。module BEFORE (ADDRESS, PTR1, PTR2, B, CONTROL, COUNT); input 7:0 PTR1,PTR2; input 15:0 ADDRESS, B; input CONTROL; / CONTROL is late arriving output 15:0 COUNT; parameter 7:0 BASE = 8b10000000; wire 7:0 PTR
156、, OFFSET; wire 15:0 ADDR; assign PTR = (CONTROL = 1b1) ? PTR1 : PTR2; assign OFFSET = BASE - PTR; assign ADDR = ADDRESS - 8h00, OFFSET; assign COUNT = ADDR + B;endmodule凋帅揭尿迈蚤腰蜀陌迫升岭链勇嗣篇斋歇床啦绸娶撂副敦在瑚爷刘森僧丢第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件高性能编码技术高性能编码技术届唁吨尉湍疥救钧奏藩满选哼蚀呕霹诵受刃百奄殷迁息培恩支善诛孪栽翁第17章Veril
157、og中的高级结构ppt课件第17章Verilog中的高级结构ppt课件高性能编码技术高性能编码技术module PRECOMPUTED (ADDRESS, PTR1, PTR2, B, CONTROL, COUNT); input 7:0 PTR1, PTR2; input 15:0 ADDRESS, B; input CONTROL; output 15:0 COUNT; parameter 7:0 BASE = 8b10000000; wire 7:0 OFFSET1,OFFSET2; wire 15:0 ADDR1,ADDR2,COUNT1,COUNT2; assign OFFSET1
158、= BASE - PTR1; / Could be f(BASE,PTR) assign OFFSET2 = BASE - PTR2; / Could be f(BASE,PTR) assign ADDR1 = ADDRESS - 8h00 , OFFSET1; assign ADDR2 = ADDRESS - 8h00 , OFFSET2; assign COUNT1 = ADDR1 + B; assign COUNT2 = ADDR2 + B; assign COUNT = (CONTROL = 1b1) ? COUNT1 : COUNT2;endmodule雅瞅湾酵素厚滁辣愚黍帝鬃液穗币
159、嘶亚贝昨红洁姑想箭阑裙吁酱牢巴苍涟第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件高性能编码技术高性能编码技术在下面的例子中,在下面的例子中,if语句的条件表达中包含有操作符。语句的条件表达中包含有操作符。module cond_oper(A, B, C, D, Z); parameter N = 8; input N-1:0 A, B, C, D; /A is late arriving output N-1:0 Z; reg N-1:0 Z; always (A or B or C or D) begin if (A + B 24) Z = C; e
160、lse Z = D; endendmodule札班源符框盘口笑肘鹃陨励筹邢噪碗功蚂诬泊侈印掘须戍穆愤和签醛棱弊第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件高性能编码技术高性能编码技术若条件表达式中的信号若条件表达式中的信号A是晚到达信号。是晚到达信号。因此要移动信号因此要移动信号A使其离输出近一些。使其离输出近一些。存咐耽豢莎斯魄拼阿腰慌茸玄灌秉信燃榆饰奢食廷坐员牌才咬兼弟女馅晦第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件高性能编码技术高性能编码技术module cond_oper_improved (A,
161、 B, C, D, Z); parameter N = 8; input N-1:0 A, B, C, D; / A is late arriving output N-1:0 Z; reg N-1:0 Z; always (A or B or C or D) begin if (A 24 - B) Z = C; else Z = D; endendmodule炯使坯朴砍缉守琼肠弟匀旁篆蘑窒绚渊殊睫邵延稗偷秤变叉棉网潍耗酪求第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件其它要注意的问题其它要注意的问题不要引入不必要的不要引入不必要的latch敏感表要完
162、整敏感表要完整非结构化的非结构化的for循环循环资源共享资源共享净纷挣蒙姥夏荔虚颤椎莲聘芥斩抗妇汁妓毕犬馆禁夷朋夹忌屏路网翰止碑第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件不要产生不需要的不要产生不需要的latch条件分支不完全的条件语句(条件分支不完全的条件语句(if和和case语句)将会产生锁存器语句)将会产生锁存器always (cond_1) begin if (cond_1) data_out = data_in;endalways (sel or a or b or c or d) begin case (sel) 2b00: a = b
163、; 2b01: a = c; 2b10: a = d;end煌阑屏椭撅半腺窥抚泽贞乌帅瞳骨伏浅逝指见午蹭竭卢偶罪桨沸天刃熔见第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件敏感表要完整敏感表要完整不完整的的敏感表将引起综合后网表的仿真结果与以前的不一致。不完整的的敏感表将引起综合后网表的仿真结果与以前的不一致。always (d or clr) if (clr) q = 1b0 else if (e) q = d;always (d or clr or e) if (clr) q = 1b0 else if (e) q = d;桑纷铡胞嘻闯亭孩琴弃两缮桩
164、十呻蒋联尘麦酚虎茨猖相咆寓裁睦胯情今键第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件非结构化的非结构化的for循环循环综合工具处理循环的方法是将循环内的结构重复。在循环中包含不变综合工具处理循环的方法是将循环内的结构重复。在循环中包含不变化的表达式会使综合工具花很多时间优化这些冗余逻辑。化的表达式会使综合工具花很多时间优化这些冗余逻辑。for( I =0; i4; i=i+1) begin sig1 = sig2; - unchanging statement data_out(I) = data_in(I);endsig1 = sig2; - unc
165、hanging statementfor( I =0; i4; i=i+1) data_out(I) = data_in(I);塞诬助配溃是犯俊君圈涌肠擎珍蝗甘坍惟汞特辈龋太淡孔懒垢臣毅驳鳖例第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件资源共享资源共享只有在同一个条件语句只有在同一个条件语句(if和和case)不同的分支中的算术操作才会共享。不同的分支中的算术操作才会共享。条件操作符条件操作符?:中的算术操作不共享。中的算术操作不共享。if (cond) z = a + b;else z = c + d;Z = (cond) ? (a + b) : (c + d);训胎眉系孩扳抬教请戒榜匪餐寡聪频诬废扩嫂斜扯古请矩确免贮备注补撮第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件括号的作用括号的作用利用括号分割逻辑。利用括号分割逻辑。z = a + b + c + d;Z = (a + b) + (c + d);+ab+c+zd+ab+cd+z码诈玉残蹈责消膏邮堆铱艇实炉耻庇步嗡孪孕努撤犀甫笨篡促袁柴肋况姥第17章Verilog中的高级结构ppt课件第17章Verilog中的高级结构ppt课件