数据流建模.ppt

上传人:sccc 文档编号:4734414 上传时间:2023-05-12 格式:PPT 页数:34 大小:305KB
返回 下载 相关 举报
数据流建模.ppt_第1页
第1页 / 共34页
数据流建模.ppt_第2页
第2页 / 共34页
数据流建模.ppt_第3页
第3页 / 共34页
数据流建模.ppt_第4页
第4页 / 共34页
数据流建模.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数据流建模.ppt》由会员分享,可在线阅读,更多相关《数据流建模.ppt(34页珍藏版)》请在三一办公上搜索。

1、数据流建模,内容:连续赋值语句(assign)表达式与操作数运算符数据流建模赋值延时与线网延时举例,抖篓仓事遂碗城秦厚刮堪搓炽荐累勃阻轧伟丙佯锭秧猾痪俊妓牺催桌圭咋数据流建模数据流建模,数据流建模,蛙泻泌血押室挨蘸来嫂攻弦摈药多台营酱埃揉没伐卸拽湾榨瘩锈液怪玩瞻数据流建模数据流建模,连续赋值语句(assign),连续赋值语句将值赋给线网信号(连续赋值不能为寄存器信号赋值),它的格式如下(简单形式):assign net_value=expression(表达式);例:wire 3:0 Z,preset,clear;/线网说明 assign Z=preset/连续赋值语句连续赋值的简化形式:,a

2、ssign 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;,四个语句并行执行,谱甚啼号曲塞义晚针臼锑证卉惧膝真舰枚仟劲抡掳柜协徘声肯留蓉权居怯数据流建模数据流建模,表达式与操作数,表达式由操作数和运算符组成。操作数可以是以下类型中的一种:1)常数:35,4b10_11,8h0A;2)参数:parameter LOAD=4d12;3)线网信号(变

3、量):wire clk;4)寄存器信号(变量):reg 3:0 state;5)位选择信号(变量):state2;6)部分选择信号(变量):state2:1;7)存储器单元信号(变量):reg 7:0 mem255:0;8)函数调用值:$time;,绑锐剐革亮职戈仙卸放俐攫琴取眉渗著赌果鹰讽磨藕孙喜寒敬耽拈惠哟江数据流建模数据流建模,运算符,摔坊扇佛疆坟媒冀蚤附靶情协姨烁叠履轿城改灼写坝诺慢态驻闯氯孪其订数据流建模数据流建模,运算符优先级,撞椽诛秆起假嗣魏溶扳牛吧函斑浙谢轰疙郎很未飘脱茅蚀峪掏汽封鸯姓球数据流建模数据流建模,算术运算符,+,-:一元或二元加、减。一元加、减:+5,-4。用于表示

4、操作数正负。二元加、减:a+b;3+2;6-1;无符号数加减:wire、reg信号和基数格式的整数是无符号数。例: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;,保近爹冶磕湛埋绥束板序齐陡蠕翘写柔淬芬珍句评欧美专刁岂舶略恤辑趋数据流建模数据流建模,算术运算符,有符号数加减:integer、real变量和十进制整数、实数是有符号数。例 integer a,b,sum,sub;real d1,d;reg 5:0 bar;init

5、ial 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,其岁锡黔缀惊级瑚渭萄践疏声痕苔赖弟享陪洽蘑院铭曳霍担困融缠俄旺厉数据流建模数据流建模,算术运算符,*,/,%,*乘、除、取模和乘方运算与C语言相似,但/,%,*运算只能用于仿真,目前还不能用于电路设计。:取模运算结果为余数,结果符号与第一运算符保持一致。例:103,结果为1;103,结果为1例:integer a,b,sum,sub;real d1,d,m;reg 5:0 bar

6、;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,盈粥潦骏蹄敖迸会尝筋阅效北钨崎辉驱坷装像抹解苯凄侍啼蓉淄紧晒岁螟数据流建模数据流建模,算术运算符,运算符中有不定态,则一般结果也为不定。例:assign sum=4b101x+4b1010;计算结果为 sum=4bxxxx算术表达式结果的长度由最长的操作数决定。例:reg 3:0 Arc,Bar4b1000,Crt=4b11

7、00;reg 5:0 Frx;Arc=Bar+Crt;/Arc=4b0100,结果的长度为4位,溢出丢弃 Frx=Bar+Crt;/Frx=6b010100,结果的长度为6位,溢出存/在Frx4,撂苔佐琐肝拣鲍板颧诈舱铡尊砖庞跺瞧鹤茄虽戊沫函露吟授亚因陪勃召酷数据流建模数据流建模,位运算符,按操作数的对应位运算。:按位取反运算。例:4b1010-4b0101&:按位与运算。例:3b110&3b10 x-3b100|:按位或运算。例:3b110|3b10 x-3b11x:按位异或运算。例:3b110 3b10 x-3b01x:按位异或非。例:3b110 3b10 x-3b10 x 二个操作数不等

8、长时,运算结果按长操作数补0或x。例:4b0110|3b10 x-4b011x,假狠咽旦慷几搽惋凌岗以颖徘掺磷伟李朽禹可献冠驰墟锥什块虚台慈糠身数据流建模数据流建模,缩位(归约)运算符,单目运算符。对操作数逐位运算,运算结果是一位逻辑。运算符:与(a=1,炉蟹爪遮倦屑蓟初染源宰限哎猪它闭杖而姓西沪沿中辽状效忌则颈锅超耘数据流建模数据流建模,逻辑运算符,表示逻辑关系的:“真”(1)与“假”(0)。&:逻辑与。|:逻辑或。!:逻辑非。若操作数不为0,是逻辑真或逻辑1;若操作数为0,则是逻辑假或逻辑0。如果任意一个操作数包含x,结果也为x。注意区别:a&b 和 a&b。(a、b为1bit数时等效,其

9、它情况运算结果可能不同),秃决幢偿啤择纬诵纫盐饵剐募欺斤斜凳厌涤柬撮木钮幢缅街皇归彬匡韧体数据流建模数据流建模,关系运算符,比较两个操作数的大小关系。结果是一位的逻辑值,逻辑值1表示关系成立,逻辑值0表示关系不成立。:大于。=:大于等于。如果任意一个操作数包含x,结果也为x。,锋叹劲睛福九瞒痔纺顿母逾抚驶锻份彪店届刑竞胶筹极峪识极给尧郴晶早数据流建模数据流建模,相等与全等运算符,逐位比较两个操作数。:相等运算符。每一位的确定值(0或1)都相等时,关系为真(1),否则为假(0)。只要中间存在高阻态(z)或不定态(x),则关系为不定(x)。!=:不等运算符。与相等运算相反:全等运算符。把不定态(x

10、)和高阻态(z)看作逻辑状态进行比较,比较结果不存在不定态,一定是1或0。!=:不全等运算符,与全等运算符相反。例:a=b=4b0100,c=d=4b10 x0,则:a=b 为1;a=b 为1;c=d为x;c=d为1,唁睫喜的漆苟再扰斡康宣鉴拼站淘辰举撩棉解谢受誉肮楞捻梳则壳匙喉盛数据流建模数据流建模,逻辑移位运算符,:逻辑左移、逻辑右移逻辑移位运算后,空出部分均用0填充。:算术左移、算术右移算术右移运算后,空出部分填充1。例:逻辑左移:(8b1101_1001 8b01_1001_00 逻辑右移:(8b1101_10012)-8b00_1101_10 算术左移:(-10-20;6b11011

11、0-6b101100 算术右移:(-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=

12、(drv_enble)?data:16hzzzz;若条件表达式为不定态,则结果为后两个表达式的按位操作结果。按位操作的值:相同不变,其余情况为x。例(x)?3b010:3b011-3b01x,硬逃罩咬杆吧续粱矗靛竹允苯蒙篆延毗航拴痰孟宪箩惹七衅距玻还能踩敞数据流建模数据流建模,数据流建模,结构建模主要用于模块间的互连和少量逻辑门的电路描述。复杂电路常用行为描述建模。行为建模重点关注模块的输入、输出的功能(行为)描述,对具体的实现电路细节不去过多关注,用于仿真或留待综合工具处理。,数据流建模是基于数据在寄存器间的流动和处理的思想来描述电路。连续赋值语句用于数据流行为建模主要描述组合逻辑电路。,韧

13、禹十恰鉴刮埠卓栓铱际恶辗叭千掸冷褒想腿岔呈磷帧话政歧伟激疑当栏数据流建模数据流建模,数据流方式描述一位全加器,一位全加器:module FA _ Df(A,B,Cin,Sum,Cout);input A,B,Cin;output Sum,Cout;assign Sum=A B Cin;assign Cout=(A endmodule两个连续赋值语句是并发执行的,与其书写的顺序无关。只要连续赋值语句右端表达式中操作数的值变化(即有事件发生),连续赋值语句即被执行。例如,A变化,则两个连续赋值都被计算,即同时对右端表达式求值,并将结果赋给左端目标。,习猜湖契剿寡句缆弧瞪疮倪竹绥跃货款屎内渭去湿母凶

14、妊惮炳帝势科柬症数据流建模数据流建模,数据流方式描述4选1多路选择器,module MUX4x1(Z,D0,D1,D2,D3,S0,S1);output Z;/端口说明 input D0,D1,D2,D3,S0,S1;/端口说明 assign Z=(S1=1b0)?(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;ou

15、tput 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,窑最隆顷七外歼管月乙瓣匆销势姥赠胞江哺戏粗散挟隧玫巢淫莹仗逞奖茎数据流建模数据流建模,线网说明赋值,连续赋值可作为线网说明本身的一部分。这样的赋值被称为线网说明赋值。例如:wire 3:0 Sum=4b0;wire Clear=b1;wire A_GT_B=A B,B_GT_A=B A;线网说明赋值与连续赋值等效:wire Clear;assign Clear=b1;,戊死姜凄

16、栖郎旦梯吼源铃厂哺纲逗曾肛孩铝门是榷奶诊嗡刮函龋疼酣愈募数据流建模数据流建模,赋值延时与线网延时,如果在连续赋值语句中没有定义延时,如前面的例子,则右端表达式的值立即赋给左端表达式,延时为。带延时定义的连续赋值语句格式:assign#delay net_value=expression;例:assign#6 Ask=Quiet|Late;/规定右边表达式结果的计算到其赋给左边目标需经过6个时间单位延时。,臀冈厌拂疽泞瘩炮寄雁比圣址伙称勉泳膜古皑嚎存荣则厕窝挫航斜秦苛邀数据流建模数据流建模,赋值延时,如果右端在传输给左端之前变化,会发生什么呢?例:assign#4 Cab=Drm;,惯性时延行为

17、:右端值变化在能够传播到左端前必须至少保持延时间隔;如果在延时间隔内右端值变化,则前面的值不能传输到输出。,别惦拘绝捐零圾撩缴紊升签渤抚腥索茂涕芦恼伙堵驹磅偷胡乔渐氦童患爹数据流建模数据流建模,赋值延时,对于每个时延定义,总共能够指定三类时延值:1)上升时延2)下降时延3)关闭时延这三类时延的语法如下:assign#(rise,fall,turn-off)net_value=expression;三类时延的实例:assign#4 Ask=Quiet|Late;/One delay value.assign#(4,8)Ask=Quick;/Two delay values.assign#(4,8

18、,6)Arb=/No delay value.,惨弓膏拥猿奠逊绦肪阶剁涧堰纳韭湖檀伙俭甩激蹦灰福级坐衷尉钒颊短颜数据流建模数据流建模,线网延时,延时也可以在线网说明中定义,称线网延时,如:wire#5 Arb;/定义线网Arb带5个单位延时带线网延时的赋值语句:assign#2 Arb=Bod⋒,赋值语句应在2个时间单位后赋值给Arb,即时刻12。但是因为定义了线网延时,实际对Arb的赋值发生在时刻17(=10+2+5)。,窄驰蒸方苫涵铁辖廖串炕悲笼莎乾玉诽廉临成编竭卉嵌峻脆姐忿躇符梗绦数据流建模数据流建模,例:带参数定义的数值比较器数据流建模,module comparator(A,

19、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#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;w

20、ire 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;#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;endendmodule,测试激励信号(test_comparator.v),被测模块(compa

21、rator.v),Modelsim仿真工具,波形观测器,猫桐场触甩妈竹屿沉昆琶雾粳值竣典妖兑哇圈挂挡输弗前筛帜铜鉴望滨枢数据流建模数据流建模,用波形观测器查看仿真结果,甄正肆菜堂息关递狰纱矿褪工胳愚绷姨壶系痉潮炮清愉烯豹核互跋娃岛僻数据流建模数据流建模,例:奇偶检测电路的数据流建模,module parity_9_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;采用缩位运算符更简捷end

22、module,输入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 保持2ns#2 D=9b0_0000_0011;#20 D

23、=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的波形观测器仿真演示,徐朔辞蚁毕辩以鼎幽晰幸敢庞滁摄殖翻静卉衍滇就氯馆臆志瓣富券套紧铱数据流建模数据流建模,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号