verilog硬件描述语言——007

verilog硬件描述语言——007

ID:34522238

大小:143.86 KB

页数:5页

时间:2019-03-07

verilog硬件描述语言——007_第1页
verilog硬件描述语言——007_第2页
verilog硬件描述语言——007_第3页
verilog硬件描述语言——007_第4页
verilog硬件描述语言——007_第5页
资源描述:

《verilog硬件描述语言——007》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载第7章数据流模型化本章讲述VerilogHDL语言中连续赋值的特征。连续赋值用于数据流行为建模;相反,过程赋值用于(下章的主题)顺序行为建模。组合逻辑电路的行为最好使用连续赋值语句建模。7.1连续赋值语句连续赋值语句将值赋给线网(连续赋值不能为寄存器赋值),它的格式如下(简单形式):assignLHS_target=RHS_expression;例如,wire[3:0]Z,Preset,Clear;//线网说明assignZ=Preset&Clear;//连续赋值语句连续赋值的目标为Z,表达式右端为“Preset&Clear”。注意连续赋值语句中的关键词assign。连续赋

2、值语句在什么时候执行呢?只要在右端表达式的操作数上有事件(事件为值的变化)发生时,表达式即被计算;如果结果值有变化,新结果就赋给左边的线网。在上面的例子中,如果Preset或Clear变化,就计算右边的整个表达式。如果结果变化,那么结果即赋值到线网Z。连续赋值的目标类型如下:1)标量线网2).向量线网3)向量的常数型位选择4)向量的常数型部分选择5)上述类型的任意的拼接运算结果下面是连续赋值语句的另一些例子:assignBusErr=Parity

3、(One&OP);assignZ=~(A

4、B)&(C

5、D)&(E

6、F);只要A、B、C、D、E或F的值变化,最后一个连续赋值语句就执

7、行。在这种情况下,计算右边整个表达式,并将结果赋给目标Z。在下一个例子中,目标是一个向量线网和一个标量线网的拼接结果。wireCout,Cin;wire[3:0]Sum,A,B;...assign{Cout,Sum}=A+B+Cin;因为A和B是4位宽,加操作的结果最大能够产生5位结果。左端表达式的长度指定为5位(Cout1位,Sum4位)。赋值语句因此促使右端表达式最右边的4位的结果赋给Sum,第5位(进位位)赋给Cout。下例说明如何在一个连续赋值语句中编写多个赋值方式。第7章数据流模型化55下载assignMux=(S==0)?A:'bz,Mux=(S==1)?B:'bz

8、,Mux=(S==2)?C:'bz,Mux=(S==3)?D:'bz;这是下述4个独立的连续赋值语句的简化书写形式。assignMux=(S==0)?A:'bz;assignMux=(S==1)?B:'bz;assignMux=(S==2)?C:'bz;assignMux=(S==3)?D:'bz;7.2举例下例采用数据流方式描述1位全加器。moduleFA_Df(A,B,Cin,Sum,Cout);inputA,B,Cin;outputSum,Cout;assignSum=A^B^Cin;assignCout=(A&Cin)

9、(B&Cin)

10、(A&B);endmodule在本

11、例中,有两个连续赋值语句。这些赋值语句是并发的,与其书写的顺序无关。只要连续赋值语句右端表达式中操作数的值变化(即有事件发生),连续赋值语句即被执行。如果A变化,则两个连续赋值都被计算,即同时对右端表达式求值,并将结果赋给左端目标。7.3线网说明赋值连续赋值可作为线网说明本身的一部分。这样的赋值被称为线网说明赋值。例如:wire[3:0]Sum=4'b0;wireClear='b1;wireA_GT_B=A>B,B_GT_A=B>A;线网说明赋值说明线网与连续赋值。说明线网然后编写连续赋值语句是一种方便的形式。参见下例。wireClear;assignClear='b1;等价于

12、线网声明赋值:wireClear='b1;不允许在同一个线网上出现多个线网说明赋值。如果多个赋值是必需的,则必须使用连续赋值语句。7.4时延如果在连续赋值语句中没有定义时延,如前面的例子,则右端表达式的值立即赋给左端表达式,时延为0。如下例所示显式定义连续赋值的时延。assign#6Ask=Quiet

13、

14、Late;规定右边表达式结果的计算到其赋给左边目标需经过6个时间单位时延。例如,如果在时刻5,Late值发生变化,则赋值的右端表达式被计算,并且Ask在时刻11(=5+6)被赋于新值。56VerilogHDL硬件描述语言下载图7-1举例说明了时延概念。图7-1连续赋值语句中的时

15、延如果右端在传输给左端之前变化,会发生什么呢?在这种情况下,应用最新的变化值。下例显示了这种行为:assign#4Cab=Drm;图7-2显示了这种变化的效果。右端发生在时延间隔内的变化被滤掉。例如,在时刻5,Drm的上升边沿预定在时刻9显示在Cab上,但是因为Drm在时刻8下降为0,预定在Cab上的值被删除。同样,Drm在时刻18和20之间的脉冲被滤掉。这也同样适用于惯性时延行为:即右端值变化在能够传播到左端前必须至少保持时延间隔;如果在时延间隔内右端值变化,则前面的值不能传输到输出。图7

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。