EDA verilog D触发器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

4.1.3赋值语句VerilogHDL有以下赋值方式和赋值语句。1.持续赋值assign,主要对wire型变量赋值2.过程赋值主要对reg型变量进行赋值。过程赋值有阻塞赋值和非阻塞赋值两种方式。(1)非阻塞赋值符号为=非阻塞赋值在整个过程结束时才完成赋值操作。(1)阻塞赋值符号为=阻塞赋值在该语句结束时就立刻完成赋值操作。如果在一个块语句中,有多条阻塞赋值语句,那么在前面的赋值语句没有完成之前,后面的语句不能被执行,仿佛被阻塞(blocking)一样,因此称为阻塞赋值语句。因此前一条语句的执行结果直接影响到后面语句的执行结果。4.1.3赋值语句例:非阻塞赋值modulenon_block(c,b,a,clk);outputc,b;inputclk,a;regc,b;always@(posedgeclk)beginb=a;c=b;endendmodule4.1.3赋值语句例:阻塞赋值moduleblock(c,b,a,clk);outputc,b;inputclk,a;regc,b;always@(posedgeclk)beginb=a;c=b;endendmodule4.1.3赋值语句非阻塞赋值波形:阻塞赋值波形:4.1.3赋值语句不阻塞(non-blocking)赋值语句(b=a):-块内的赋值语句同时赋值;-b的值被赋成新值a的操作,是与块内其他赋值语句同时完成的;-建议在可综合风格的模块中使用不阻塞赋值。阻塞(blocking)赋值语句(b=a):-完成该赋值语句后才能做下一句的操作;-b的值立刻被赋成新值a;-硬件没有对应的电路,因而综合结果未知。4.1.3赋值语句阻塞赋值综合结果(RTL级)非阻塞赋值综合结果(RTL级)4.1.3赋值语句在always块中,阻塞赋值可以理解为赋值语句是顺序执行的,而非阻塞赋值可以理解为赋值语句是并发执行的。为避免出错,在同一个块内,尽量不要将输出端再作为输入端使用。为用阻塞赋值方式完成,可用两个“always”块来实现。如下例:modulenon_block(c,b,a,clk);outputc,b;inputclk,a;regc,b;always@(posedgeclk)beginb=a;endalways@(posedgeclk)beginc=b;endendmodule两个“always”过程块是并发执行的。4.1.3赋值语句使用阻塞和非阻塞赋值应遵循的原则:(1)当用“always”块来描述组合逻辑时,既可以用阻塞赋值,也可以用非阻塞赋值,建议尽量使用阻塞赋值。(2)对时序逻辑描述和建模,使用非阻塞赋值方式。(3)为锁存器建模,应尽量使用非阻塞赋值。(4)若在同一个“always”过程块中既为组合逻辑建模,又为时序逻辑建模,最好使用非阻塞赋值方式。(5)在同一个“always”过程块中,最好不要混合使用阻塞赋值和非阻塞赋值。虽然同时使用这两种赋值方式在综合时不一定出错,但对同一个变量不能既进行阻塞赋值又进行非阻塞赋值,在综合时会产生错误。(6)不能在2个或2个以上的“always”过程块中对同一个变量赋值,这样会引发冲突,综合时出错。5.3D触发器的VerilogHDL描述例:基本D触发器moduledff1(Q,D,CLK);outputQ;inputD,CLK;regQ;always@(posedgeCLK)beginQ=D;endendmodule5.3D触发器的VerilogHDL描述例:带有异步清0、异步置1的D触发器moduledff2(Q,Qn,d,clk,set,reset);inputd,clk,set,reset;outputQ,Qn;regQ,Qn;always@(posedgeclkornegedgesetornegedgereset)beginif(!reset)beginQ=0;Qn=1;endelseif(!set)beginQ=1;Qn=0;endelsebeginQ=d;Qn=~d;endendendmodule5.3D触发器的VerilogHDL描述例:带有同步清0、同步置1的D触发器moduledff3(Q,Qn,d,clk,set,reset);inputd,clk,set,reset;outputQ,Qn;regQ,Qn;always@(posedgeclk)beginif(Reset)beginQ=0;Qn=1;endelseif(set)beginQ=1;Qn=0;endelsebeginQ=d;Qn=~d;endendendmodule

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功