《《数据流建模》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据流建模》PPT课件.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据流建模数据流建模西安邮电学院通信工程系 数据流建模数据流建模内容:v连续赋值语句(assign)v表达式与操作数v运算符v数据流建模v赋值延时与线网延时v举例数据流建模数据流建模西安邮电学院通信工程系数据流建模数据流建模模块定义module(port list)时序特性timig specifications端口说明Port declarations输入input双向inout输出output数据类型说明Data type declarations线网类型net参数parameter寄存器类型register电路功能描述电路功能描述Circuit functionality子程序subpr
2、ograms任务task函数function系统任务和函数System task&function编译指令Compiler directives连续赋值连续赋值Continuousassignment赋值语句赋值语句assign过程块Proceduralblocks过程块语句initial blockalways block模块实例模块实例instantiation数据流建模数据流建模西安邮电学院通信工程系连续赋值语句连续赋值语句(assign)(assign)v连续赋值语句将值赋给线网信号线网信号(连续赋值不能为寄存器信号赋值),它的格式如下(简单形式):assign net_value=e
3、xpression(表达式);v例:wire 3:0 Z,preset,clear;/线网说明 assign Z=preset&clear;/连续赋值语句v连续赋值的简化形式:assign Mux=(S=0)?A:bz,Mux=(S=1)?B:bz,=Mux=(S=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;四个语句并行执行数据流建模数据流建模西安邮电学院通信工程系表达式与操作数表达式与操作数v表达式由操作数和运算符组
4、成。v操作数可以是以下类型中的一种:1)常数:35,4b10_11,8h0A;2)参数:parameter LOAD=4d12;3)线网信号(变量):wire clk;4)寄存器信号(变量):reg 3:0 state;5)位选择信号(变量):state2;6)部分选择信号(变量):state2:1;7)存储器单元信号(变量):reg 7:0 mem255:0;8)函数调用值:$time;数据流建模数据流建模西安邮电学院通信工程系运算符运算符 运算符分类运算符分类所含运算符所含运算符算术运算符算术运算符+,-,*,/,%,*位运算符位运算符,&,|,()缩位运算符缩位运算符&,&,|,|,()
5、逻辑运算符逻辑运算符!,&,|关系运算符关系运算符,=相等与全等运算符相等与全等运算符=,!=,=,!=逻辑移位运算符逻辑移位运算符连接与复制运算符连接与复制运算符 条件运算符条件运算符?:数据流建模数据流建模西安邮电学院通信工程系运算符优先级运算符优先级 符号优先级别单目运算乘、除、取模+-!*/%最高加、减移位+-关系等价 =,!=,=,!=缩减逻辑&|&|条件运算符?:最低数据流建模数据流建模西安邮电学院通信工程系算术运算符算术运算符v+,-:一元或二元加、减。一元加、减:+5,-4。用于表示操作数正负。二元加、减:a+b;3+2;6-1;v无符号数加减:wire、reg信号和基数格式的
6、整数是无符号数。例:wire 4:0 a,b,sum,sub;assign a=4b1001;assign b=4b0100;assign sum=a+b;/和sum=4b1101;assign sub=a-b;/差sub=4b0101;数据流建模数据流建模西安邮电学院通信工程系算术运算符算术运算符v有符号数加减: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.
7、3;/d=1.2 bar=-4d12;/bar=6b110100。-12的补码 end数据流建模数据流建模西安邮电学院通信工程系算术运算符算术运算符v*,/,%,*乘、除、取模和乘方运算与C语言相似,但/,%,*运算只能用于仿真,目前还不能用于电路设计。v:取模运算结果为余数,结果符号与第一运算符保持一致。例:103,结果为1;103,结果为1v例: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、=8.05 bar=d/2;/4.025取整;bar=6b000100。m=d1*2;/m=12.25 end数据流建模数据流建模西安邮电学院通信工程系算术运算符算术运算符v运算符中有不定态,则一般结果也为不定。例:assign sum=4b101x+4b1010;计算结果为 sum=4bxxxxv算术表达式结果的长度由最长的操作数决定。例:例:reg 3:0 Arc,Bar4b1000,Crt=4b1100;reg 5:0 Frx;Arc=Bar+Crt;/Arc=4b0100,结果的长度为4位,溢出丢弃 Frx=Bar+Crt;/Frx=6b010100,结果的长度为6位,溢出存 /在Fr
9、x4数据流建模数据流建模西安邮电学院通信工程系位运算符位运算符v按操作数的对应位运算。:按位取反运算。例:4b1010-4b0101&:按位与运算。例:3b110&3b10 x-3b100|:按位或运算。例:3b110|3b10 x-3b11x:按位异或运算。例:3b110 3b10 x-3b01x :按位异或非。例:3b110 3b10 x-3b10 xv 二个操作数不等长时,运算结果按长操作数补0或x。例:4b0110|3b10 x-4b011x数据流建模数据流建模西安邮电学院通信工程系缩位(归约)运算符缩位(归约)运算符v单目运算符。对操作数逐位运算,运算结果是一位逻辑。v运算符:与(&
10、),或(|),异或(),及其非操作&,|,,运算规则同位运算符v例:a=4b0110;&a等效于(0&1&1&0)&a=0;&a=1|a=1;|a=0 a=0;a=1数据流建模数据流建模西安邮电学院通信工程系逻辑运算符逻辑运算符v表示逻辑关系的:“真”(1)与“假”(0)。v&:逻辑与。v|:逻辑或。v!:逻辑非。v若操作数不为0,是逻辑真或逻辑1;若操作数为0,则是逻辑假或逻辑0。v如果任意一个操作数包含x x,结果也为x x。v 注意区别:a&b 和 a&b。(a、b为1bit数时等效,其它情况运算结果可能不同)数据流建模数据流建模西安邮电学院通信工程系关系运算符关系运算符v比较两个操作数
11、的大小关系。v结果是一位的逻辑值,逻辑值1表示关系成立,逻辑值0表示关系不成立。v:大于。v=:大于等于。v如果任意一个操作数包含x x,结果也为x x。数据流建模数据流建模西安邮电学院通信工程系相等与全等运算符相等与全等运算符v逐位比较两个操作数。v:相等运算符。每一位的确定值(0或1)都相等时,关系为真(1),否则为假(0)。只要中间存在高阻态(z)或不定态(x),则关系为不定(x)。v!=:不等运算符。与相等运算相反v:全等运算符。把不定态(x)和高阻态(z)看作逻辑状态进行比较,比较结果不存在不定态,一定是1或0。v!=:不全等运算符,与全等运算符相反。v例:a=b=4b0100,c=
12、d=4b10 x0,则:a=b 为1;a=b 为1;c=d为x;c=d为1数据流建模数据流建模西安邮电学院通信工程系逻辑移位运算符逻辑移位运算符v:逻辑左移、逻辑右移v逻辑移位运算后,空出部分均用0填充。v:算术左移、算术右移v算术右移运算后,空出部分填充1。v例:逻辑左移:(8b1101_1001 8b01_1001_00 逻辑右移:(8b1101_10012)-8b00_1101_10 算术左移:(-10-20;6b110110-6b101100 算术右移:(-31)-2;3b101-3b110数据流建模数据流建模西安邮电学院通信工程系连接与复制运算符连接与复制运算符v连接运算是将多组信号
13、用大括号括起来,拼接成一组新信号。v例:a=1b1;b=4hf;c=3d4;a,b,c,3b101-11b1_1111_100_101v复制运算是重复信号的拼接方法,例:a,3b,2c,d-a,b,b,b,c,d,c,d数据流建模数据流建模西安邮电学院通信工程系条件运算符条件运算符vVerilog HDL中唯一的三目运算符。v表达式:?:v 例:assign tri_bus=(drv_enble)?data:16hzzzz;v若条件表达式为不定态,则结果为后两个表达式的按位操作结果。按位操作的值:相同不变,其余情况为x x。例(x)?3b010:3b011-3b01x数据流建模数据流建模西安邮
14、电学院通信工程系数据流建模数据流建模v结构建模主要用于模块间的互连和少量逻辑门的电路描述。v复杂电路常用行为描述建模。行为建模重点关注模块的输入、输出的功能(行为)描述,对具体的实现电路细节不去过多关注,用于仿真或留待综合工具处理。v数据流建模是基于数据在寄存器间的流动和处理的思想来描述电路。v连续赋值语句用于数据流行为建模主要描述组合逻辑电路。组合逻辑行为描述组合逻辑行为描述寄存器寄存器数据流建模数据流建模西安邮电学院通信工程系数据流方式描述一位全加器数据流方式描述一位全加器v一位全加器:module FA _ Df(A,B,Cin,Sum,Cout);input A,B,Cin;outpu
15、t Sum,Cout;assign Sum=A B Cin;assign Cout=(A&Cin)|(B&Cin)|(A&B);endmodulev两个连续赋值语句是并发执行的,与其书写的顺序无关。v只要连续赋值语句右端表达式中操作数的值变化(即有事件发生),连续赋值语句即被执行。v例如,A变化,则两个连续赋值都被计算,即同时对右端表达式求值,并将结果赋给左端目标。数据流建模数据流建模西安邮电学院通信工程系数据流方式描述数据流方式描述4选选1多路选择器多路选择器module MUX4x1(Z,D0,D1,D2,D3,S0,S1);output Z;/端口说明 input D0,D1,D2,D3
16、,S0,S1;/端口说明 assign Z=(S1=1b0)?(S0=1b1)?D1:D0):(S0=1b1)?D3:D2);endmodule s1 s0 z 0 0D0 0 1D1 1 0D2 1 1D3真值表:数据流建模数据流建模西安邮电学院通信工程系数据流方式描述数据流方式描述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
17、1 1 0 b +1 c_in 1 0 0 0 0数据流建模数据流建模西安邮电学院通信工程系线网说明赋值线网说明赋值v连续赋值可作为线网说明本身的一部分。这样的赋值被称为线网说明赋值。例如:wire 3:0 Sum=4b0;wire Clear=b1;wire A_GT_B=A B,B_GT_A=B A;v线网说明赋值与连续赋值等效:wire Clear;assign Clear=b1;数据流建模数据流建模西安邮电学院通信工程系赋值延时与线网延时赋值延时与线网延时v如果在连续赋值语句中没有定义延时,如前面的例子,则右端表达式的值立即赋给左端表达式,延时为。v带延时定义的连续赋值语句格式:ass
18、ign#delay net_value=expression;例:assign#6 Ask=Quiet|Late;/规定右边表达式结果的计算到其赋给左边目标需经过6个时间单位延时。数据流建模数据流建模西安邮电学院通信工程系赋值延时赋值延时v如果右端在传输给左端之前变化,会发生什么呢?例:assign#4 Cab=Drm;v惯性时延行为:右端值变化在能够传播到左端前必须至少保持延时间隔;如果在延时间隔内右端值变化,则前面的值不能传输到输出。数据流建模数据流建模西安邮电学院通信工程系赋值延时赋值延时v对于每个时延定义,总共能够指定三类时延值:1)上升时延2)下降时延3)关闭时延v这三类时延的语法如
19、下:assign#(rise,fall,turn-off)net_value=expression;v三类时延的实例:assign#4 Ask=Quiet|Late;/One delay value.assign#(4,8)Ask=Quick;/Two delay values.assign#(4,8,6)Arb=&DataBus;/Three delay values.assign Bus=MemAddr7:4;/No delay value.数据流建模数据流建模西安邮电学院通信工程系线网延时线网延时v延时也可以在线网说明中定义,称线网延时,如:wire#5 Arb;/定义线网Arb带5个单
20、位延时v带线网延时的赋值语句:assign#2 Arb=Bod⋒v赋值语句应在2个时间单位后赋值给Arb,即时刻12。但是因为定义了线网延时,实际对Arb的赋值发生在时刻17(=10+2+5)。数据流建模数据流建模西安邮电学院通信工程系例:带参数定义的数值比较器数据流建模例:带参数定义的数值比较器数据流建模module comparator(A,B,AgtB,AeqB,AltB);parameter BUS=7;parameter EQ_DELAY=4,LT_DELAY=8,GT_DELAY=6;input BUS:0 A,B;output AgtB,AeqB,AltB;assign#
21、EQ_DELAY AeqB=(A=B);assign#GT_DELAY AgtB =(A B);assign#LT_DELAY AltB=(A B 0 1 0AB 0 0 1真值表:数据流建模数据流建模西安邮电学院通信工程系数值比较器仿真验证数值比较器仿真验证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=4d0;B=4d0;#2
22、0 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;endendmodule测试激励信号(test_comparator.v)被测模块(comparator.v)Modelsim仿真工具波形观测器数据流建模数据流建模西安邮电学院通信工程系用波形观测器查看仿真结果用波形观测器查看仿真结果数据流建模数据流建模西安邮电学院通信工程系例:奇偶检测电路的数据流建模例:奇偶检测电路的数据流建模module parity_9_
23、bit(D,even,odd);input 8:0 D;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_b
24、it test_u1(.D(D),.even(even),.odd(odd);initial /输入激励信号Begin D=0;#20 D=9b0_0000_0001;/9b0_0000_0001 保持2ns#2 D=9b0_0000_0011;#20 D=9b0_0000_0011;#20 D=9b0_0000_0111;#20 D=9b0_0000_1111;#20 D=9b0_1111_0001;#20 D=9b1_1111_0001;#20 D=9b1_0011_1111;#20 D=9b1_1011_1111;#20 D=9b1_1111_1111;endendmodule数据流建模数据流建模西安邮电学院通信工程系用波形观测器查看仿真结果用波形观测器查看仿真结果输入信号持续时间太短,输出未响应数据流建模数据流建模西安邮电学院通信工程系使用使用modelsim的波形观测器仿真演示的波形观测器仿真演示