《数据流建模》PPT课件_第1页
《数据流建模》PPT课件_第2页
《数据流建模》PPT课件_第3页
《数据流建模》PPT课件_第4页
《数据流建模》PPT课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据流建模,内容: 连续赋值语句(assign) 表达式与操作数 运算符 数据流建模 赋值延时与线网延时 举例,数据流建模,连续赋值语句(assign),连续赋值语句将值赋给线网信号(连续赋值不能为寄存器信号赋值),它的格式如下(简单形式): assign net_value = expression(表达式); 例:wire 3:0 Z, preset, clear; / 线网说明 assign Z = preset /连续赋值语句 连续赋值的简化形式:,assign Mux = (S = = 0)? A : bz, Mux = (S = = 1)? B : bz, = Mux = (S =

2、 = 2)? C : bz, Mux = (S = = 3)? D : bz;,assign Mux = (S = = 0)? A : bz; assign Mux = (S = = 1)? B : bz; assign Mux = (S = = 2)? C : bz; assign Mux = (S = = 3)? D : bz;,四个语句并行执行,表达式与操作数,表达式由操作数和运算符组成。 操作数可以是以下类型中的一种: 1) 常数: 35,4b10_11, 8h0A; 2) 参数: parameter LOAD = 4d12 ; 3) 线网信号(变量): wire clk; 4) 寄存

3、器信号(变量) :reg 3:0 state; 5) 位选择信号(变量) : state2; 6) 部分选择信号(变量) :state2:1; 7) 存储器单元信号(变量) :reg 7:0 mem255:0; 8) 函数调用值: $time;,运算符,运算符优先级,算术运算符,+,- :一元或二元加、减。 一元加、减:+5, -4。用于表示操作数正负。 二元加、减:a+b; 3+2; 6-1; 无符号数加减: wire、reg信号和基数格式的整数是无符号数。 例:wire 4:0 a,b,sum,sub; assign a=4b1001; assign b=4b0100; assign su

4、m=a+b; / 和sum=4b1101; assign sub=a-b; / 差sub=4b0101;,算术运算符,有符号数加减: integer、real变量和十进制整数、实数是有符号数。 例 integer a,b,sum,sub; real d1,d; reg 5:0 bar; initial begin a=10; b=-3; d1=3.5; sum= a+b; / sum=7 sub= a-b; / sub=13 d= d1-2.3; / d=1.2 bar= -4d12; / bar=6b110100。-12的补码 end,算术运算符,*, / , % , * 乘、除、取模和乘方

5、运算与C语言相似,但 / , % , *运算只能用于仿真,目前还不能用于电路设计。 :取模运算结果为余数,结果符号与第一运算符保持一致。 例:103,结果为1; 103,结果为1 例:integer a,b,sum,sub; real d1,d,m; reg 5:0 bar; initial begin a=10; b=-3; d1=3.5; sum= a*b; / sum=-30 sub= a/b; / 结果取整,sub=-3 d= d1*2.3; / d=8.05 bar= d/2; / 4.025取整; bar=6b000100。 m= d1*2; / m=12.25 end,算术运算符

6、,运算符中有不定态,则一般结果也为不定。 例: assign sum = 4b101x +4b1010; 计算结果为 sum = 4bxxxx 算术表达式结果的长度由最长的操作数决定。 例:reg 3:0 Arc, Bar4b1000, Crt=4b1100; reg 5:0 Frx; Arc = Bar + Crt; /Arc=4b0100, 结果的长度为4位,溢出丢弃 Frx = Bar + Crt; / Frx=6b010100, 结果的长度为6位,溢出存 / 在Frx4,位运算符,按操作数的对应位运算。 :按位取反运算。例:4b1010 - 4b0101 6b110110-6b1011

7、00 算术右移: (-31) - -2; 3b101-3b110,连接与复制运算符,连接运算是将多组信号用大括号括起来,拼接成一组新信号。 例: a=1b1; b=4hf; c=3d4; a,b,c,3b101 - 11b1_1111_100_101 复制运算是重复信号的拼接方法,例: a,3b,2c,d -a,b,b,b,c,d,c,d,条件运算符,Verilog HDL中唯一的三目运算符。 表达式: ?: 例: assign tri_bus=(drv_enble) ? data : 16hzzzz; 若条件表达式为不定态,则结果为后两个表达式的按位操作结果。按位操作的值: 相同不变,其余情

8、况为x。 例 (x) ? 3b010 : 3b011 - 3b01x,数据流建模,结构建模主要用于模块间的互连和少量逻辑门的电路描述。 复杂电路常用行为描述建模。行为建模重点关注模块的输入、输出的功能(行为)描述,对具体的实现电路细节不去过多关注,用于仿真或留待综合工具处理。,数据流建模是基于数据在寄存器间的流动和处理的思想来描述电路。 连续赋值语句用于数据流行为建模主要描述组合逻辑电路。,数据流方式描述一位全加器,一位全加器: module FA _ Df (A, B, Cin, Sum, Cout ) ; input A, B, Cin; output Sum, Cout ; assign

9、 Sum = A B Cin; assign Cout = (A endmodule 两个连续赋值语句是并发执行的,与其书写的顺序无关。 只要连续赋值语句右端表达式中操作数的值变化(即有事件发生), 连续赋值语句即被执行。 例如,A变化,则两个连续赋值都被计算,即同时对右端表达式求值,并将结果赋给左端目标。,数据流方式描述4选1多路选择器,module MUX4x1 (Z , D0 , D1 , D2 , D3 , S0 , S1) ; output Z; /端口说明 input D0 , D1 , D2 , D3 , S0 , S1; /端口说明 assign Z = ( S1 = =1b0

10、 ) ? ( (S0 = =1b1 ) ? D1 : D0 ) : ( (S0 = =1b1 ) ? D3 : D2 ) ; endmodule,真值表:,数据流方式描述4位全加器,module fulladd4( sum, c_out, a, b, c_in); input 3:0 a, b; input c_int; output 3:0 sum; output c_out; assign c_out,sum= a + b + c_in;/ 左端用连接运算符 endmodule,例:1 0 0 1 a 0 1 1 0 b + 1 c_in 1 0 0 0 0,线网说明赋值,连续赋值可作为线

11、网说明本身的一部分。这样的赋值被称为线网说明赋值。例如: wire 3:0 Sum = 4b0; wire Clear = b1; wire A_GT_B = A B, B_GT_A= B A; 线网说明赋值与连续赋值等效: wire Clear ; assign Clear = b1;,赋值延时与线网延时,如果在连续赋值语句中没有定义延时,如前面的例子,则右端表达式的值立即赋给左端表达式, 延时为。 带延时定义的连续赋值语句格式: assign #delay net_value = expression; 例:assign #6 Ask = Quiet | Late;/规定右边表达式结果的计

12、算到其赋给左边目标需经过6个时间单位延时。,赋值延时,如果右端在传输给左端之前变化,会发生什么呢? 例:assign #4 Cab = Drm;,惯性时延行为:右端值变化在能够传播到左端前必须至少保持延时间隔;如果在延时间隔内右端值变化,则前面的值不能传输到输出。,赋值延时,对于每个时延定义,总共能够指定三类时延值: 1) 上升时延 2) 下降时延 3) 关闭时延 这三类时延的语法如下: assign # (rise, fall, turn-off) net_value = expression; 三类时延的实例: assign #4 Ask = Quiet | Late; / One del

13、ay value. assign # (4,8) Ask = Quick ; / Two delay values. assign # (4,8,6) Arb = / No delay value.,线网延时,延时也可以在线网说明中定义,称线网延时,如: wire #5 Arb;/定义线网Arb带5个单位延时 带线网延时的赋值语句: assign #2 Arb = Bod parameter BUS = 7; parameter EQ_DELAY = 4, LT_DELAY = 8, GT_DELAY = 6; input BUS:0 A, B; output AgtB, AeqB, AltB

14、; assign #EQ_DELAY AeqB = (A = B); assign #GT_DELAY AgtB = (A B); assign #LT_DELAY AltB= (A B); endmodule,真值表:,数值比较器仿真验证,module test_comparator; reg 3:0 A, B; wire AgB, AeB, AlB; comparator #(.BUS(3) test_U( .A(A), .B(B), .AgtB(AgB), .AeqB(AeB), .AltB(AlB) ); initial /输入激励信号 Begin A=0; B=0; #20 A=4d

15、0; B=4d0; #20 A=4d0; B=4d15; #20 A=4d15; B=4d15; #20 A=4d15; B=4d0; #20 A=4d10; B=4d5; #20 A=4d10; B=4d10; #20 A=4d5; B=4d10; #20 A=4d5; B=4d5; end endmodule,测试激励信号 (test_comparator.v),被测模块 (comparator.v),Modelsim仿真工具,波形观测器,用波形观测器查看仿真结果,例:奇偶检测电路的数据流建模,module parity_9_bit (D, even,odd) ; input 8:0 D

16、; output even, odd; assign #(4,3) odd= even; assign #(4,4) even= (D0D1)(D2D3) (D4D5) (D6D7) D8; / assign #(4,4) even= D; 采用缩位运算符更简捷 endmodule,输入D8:0中,若有偶数个0,则输出even为1,输出odd为0;若有奇数个0,则输出even为0,输出odd为1。,奇偶检测电路仿真验证,module test_parity; reg 8:0 D; wire even, odd; parity_9_bit test_u1(.D(D), .even(even),.odd(odd) ; initial /输入激励信号 Begin D=0; #20 D=9b0_0000_0001; / 9b0_0000_0001 保持2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论