硬件描述语言

上传人:wuli****0220 文档编号:245324585 上传时间:2024-10-08 格式:PPT 页数:34 大小:813.50KB
返回 下载 相关 举报
硬件描述语言_第1页
第1页 / 共34页
硬件描述语言_第2页
第2页 / 共34页
硬件描述语言_第3页
第3页 / 共34页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,GUET School of Information&Communications,*,硬件描述语言及其在数字系统中的应用,主讲:谢跃雷(副教授),10/8/2024,1,GUET School of Information&Communications,第四讲数据流建模,连续赋值语句,表达式、操作符,数据流建模实例,10/8/2024,2,GUET School of Information&Communications,门级建模特点:,优点:直接简洁,在电路规模较小时,对于有数字逻辑电路基础的设计来说,门级建模简单直观。,缺点:电路规模较大时,繁琐易错,需要考虑高层次建模,数据流,(data flow),建模,:,描述数据在寄存器间的流动和处理过程。,当今设计公司已经不在从门级结构角度进行设计,而是从更高的抽象层次设计,典型的是,RTL(Register,Transfer Level),设计,通常指的是数据流建模和行为建模的结合。,10/8/2024,3,GUET School of Information&Communications,4.1 连续赋值语句,连续赋值语句是verilog数据流建模的基本语句,用于对,线网,进行赋值。它等价于门级描述,然而是从更高的抽象角度来对电路进行描述。连续赋值语句必须以关键词,assign,开始,其语法如下:,assign,delay,target,=,expression,;,连续赋值语句的左值必须是一个标量或向量,线网,,或者是标量或向量线网的,拼接,,而,不能是,标量或向量,寄存器,连续赋值语句特点:,1.连续赋值语句,10/8/2024,4,GUET School of Information&Communications,连续赋值语句总是处于激活状态。只要任意一个,操作数,发生变化,表达式就会被立即重 新计算,并且将结果赋给等号左边的,线网,;,操作数可以是标量或向量的,线网或寄存器,,也可以是,函数,调用;,赋值,延迟,用于,控制对线网赋予新值的时间,,根据仿真时间单位进行说明。赋值延迟类似于门延迟对于描述实际电路中的时序是非常有用的。,/连续赋值语句,out是线网,i1和i2也是线网,wire,out,i1,i2;,assign,out=i1,/连续赋值语句,adr是线网,adr1_bits和adr2_bits是寄存器,assign,adr15:0=adr1_bits15:0adr2_bits15:0;,10/8/2024,5,GUET School of Information&Communications,/连接操作,左边是一个标量线网和一个向量线网拼接,assign,c_out,sum3:0=a3:0+b3:0+c_in;,隐式连续赋值,/连续赋值语句,out是线网,i1和i2也是线网,wire,out;,assign,out=i1,/隐式连续赋值语句,wire,out=i1,等价,/连续赋值语句,i1和i2也是线网,wire,i1,i2;,assign,out=i1,/,out被自动认为是线网类型,10/8/2024,6,GUET School of Information&Communications,2.延迟,连续赋值语句中的,延迟,用于控制任一操作数发生变化到语句左值被赋予新值之间的,时间间隔,指定赋值延迟的方法有三种:,隐式赋值延迟,和,线网声明延迟,。,普通赋值延迟:,/连续赋值语句,out是线网,in1和in2也是线网,wire,out,in1,in2;,assign,#10 out=in1,in1,和,in2,任一发生变化,计算,in1&in2,新值赋于左边,会有,10,个单位延迟。,在,10,单位延迟期间,若,in1,和,in2,再次变化,则取,in1,和,in2,当前值计算,。,也就是说,小于延迟的输入脉冲不影响输出,10/8/2024,7,GUET School of Information&Communications,隐式连续赋值延迟:,/隐式连续赋值语句,wire,#10 out=i1,线网声明延迟:,/连续赋值语句,out是线网,i1和i2也是线网,Wire,#10 out;,assign,out=i1,/连续赋值语句,out是线网,i1和i2也是线网,wire,out,i1,i2;,assign,#10 out=i1,10/8/2024,8,GUET School of Information&Communications,4.2 表达式、操作符和操作数,数据流建模使用,表达式,而不是门级原语来描述设计。,表达式、操作符和操作数,构成了数据流建模的基础。,表达式,:,由操作符和操作数构成,目的是根据操作符计算出一个值。,操作数,:可以是定义过的任何数据类型,有时要根据操作符的要求限制。,操作符,:对操作数进行运算并产生一个结果。,10/8/2024,9,GUET School of Information&Communications,1.操作符类型,下表以优先级顺序列出了Verilog操作符。注意“与”操作符的优先级总是比相同类型的“或”操作符高。,操作符类型,符号,连接及复制操作符,一元操作符,算术操作符,逻辑移位操作符,关系操作符,相等操作符,按位操作符,逻辑操作符,条件操作符,!,&|,*/%,+-,=,=!=!=,&,|,&,|,?:,最高,最低,优先级,10/8/2024,10,GUET School of Information&Communications,2.Verilog中的大小(size)与符号,Verilog根据表达式中变量的长度对表达式的值自动地进行调整。,Verilog自动截断或扩展赋值语句中右边的值以适应左边变量的长度。,当一个负数赋值给无符号变量如reg时,Verilog自动完成二进制补码计算,module sign_size;,reg 3:0 a,b;,reg 15:0 c;,.,a=-1;/a是无符号数,因此其值为1111,b=8;c=8;/b=c=1000,#10 b=b+a;/结果10111截断,b=0111,#10 c=c+a;/c=16b10111,.,endmodule,10/8/2024,11,GUET School of Information&Communications,3.算术操作符,module arithops();,parameter five=5;,integer ans,int;,reg 3:0 rega,regb;,reg 3:0 num;,initial begin,rega=3;,regb=4b1010;,int=-3;/int=11111111_1101,end,initial fork,#10 ans=five*int;/ans=-15,#20 ans=(int+5)/2;/ans=1,#30 ans=five/int;/ans=-1,#40 num=rega+regb;/num=1101,#50 num=rega+1;/num=0100,#60 num=int;/num=1101,#70 num=regb%rega;/num=1,#80$finish;,join,endmodule,+加,-减,*乘,/除,%模,将负数赋值给,reg,或其它无符号变量使用,2,进制的补码算术。,如果操作数的某一位是,x,或,z,,则结果为,x,在整数除法中,余数舍弃,模运算中使用第一个操作数的符号,注意integer和reg类型在算术运算时的差别。integer是有符号数,而reg是无符号数。,10/8/2024,12,GUET School of Information&Communications,4.按位操作符,module bitwise();,reg 3:0 rega,regb,regc;,reg 3:0 num;,initial begin,rega=4b1001;,regb=4b1010;,regc=4b11x0;,end,initial fork,#10 num=rega /num=0000,#20 num=rega /num=1000,#30 num=rega|regb;/num=1011,#40 num=regb /num=10 x0,#50 num=regb|regc;/num=1110,#60$finish;,join,endmodule1,not,&and,|or,xor,xnor,xnor,按位操作符对矢量中相对应位运算。,regb,=4b1 0 1 0,regc,=4b1 x 1 0,num=,regb,&,regc,=1 0 1 0;,位值为,x,时不一定产生,x,结果。,当两个操作数位数不同时,位数少的操作数零扩展到相同位数。,a=4b1011;,b=8b01010011;,c=a|b;/a零扩展为 8b00001011,10/8/2024,13,GUET School of Information&Communications,5.逻辑操作符,module logical();,parameter five=5;,reg ans;,reg 3:0 rega,regb,regc;,initial,begin,rega=4b0011;/逻辑值为“1”,regb=4b10 xz;/逻辑值为“1”,regc=4b0z0 x;/逻辑值为“x”,end,initial fork,#10 ans=rega /ans=0,#20 ans=rega|0;/ans=1,#30 ans=rega /ans=1,#40 ans=regb /ans=1,#50 ans=regc|0;/ans=x,#60$finish;,join,endmodule,!not,&and,|or,逻辑操作符的结果为一位,1,,,0,或,x,。,逻辑操作符只对逻辑值运算。,如操作数为全,0,,则其逻辑值为,false,如操作数有一位为,1,,则其逻辑值为,true,若操作数只包含,0,、,x,、,z,,则逻辑值为,x,逻辑反操作符将操作数的逻辑值取反。例如,若操作数为全0,则其逻辑值为0,逻辑反操作值为1。,10/8/2024,14,GUET School of Information&Communications,6.逻辑反与位反的对比,module negation();,reg 3:0 rega,regb;,reg 3:0 bit;,reg log;,initial begin,rega=4b1011;,regb=4b0000;,end,initial fork,#10 bit=rega;/num=0100,#20 bit=regb;/num=1111,#30 log=!rega;/num=0,#40 log=!regb;/num=1,#50$finish;,join,endmodule,!logical not,逻辑反,bit-wise not,位反,逻辑反的结果为一位,1,,,0,或,x,。,位反的结果与操作数的位数相同,逻辑反操作符将操作数的逻辑值取反。例如,若操作数为全0,则其逻辑值为0,逻辑反操作值为1,。,10/8/2024,15,GUET School of Information&Communications,7.一元归约操作符,module reduction();,reg val;,reg 3:0 rega,regb;,initial begin,rega=4b0100;,regb=4b1111;,end,initial fork,#10 val=/val=0,#20 val=|rega;/val=1,#30 val=/val=1,#40 val=|regb;/val=1,#50 val=rega;/val=1,#60 val=regb;/val=0,#70
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!