VerilogHDL负责数字电路设计(AI助学版)课件_第1页
VerilogHDL负责数字电路设计(AI助学版)课件_第2页
VerilogHDL负责数字电路设计(AI助学版)课件_第3页
VerilogHDL负责数字电路设计(AI助学版)课件_第4页
VerilogHDL负责数字电路设计(AI助学版)课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

13.4延时模型VerilogHDL定义了三种类型的延时模型:分布延时集总延时端口到端口(路径)的延时13.4.1分布延时分布延时是给每个独立器件赋予延时值,给每个器件一个延时值//例化门电路中的分布延时moduleMom(out,a,b,c,d);inputa,b,c,d;outputout;wiree,f;and#5a1(e,a,b);and#7a2(f,c,d);and#4a3(out,e,f);endmodule//数据流赋值中的分布延时moduleMom(out,a,b,c,d);inputa,b,c,d;outputout;wiree,f;assign#5e=a&b;assign#7f=c&d;assign#4out=e&f;endmodule13.4.2集总延时集总延时是给每个模块赋予延时值,把分布延时的最大延时集中到输出门moduleMom(out,a,b,c,d);inputa,b,c,d;outputout;wiree,f;anda1(e,a,b);anda2(f,c,d);and#11a3(out,e,f);endmodule13.4.3端口到端口的延时端口到端口的延时又称路径延时,分别把延时赋给模块中每个输入到每个输出之间的所有路径路径延时a--e--out9b--e--out9c--f--out11d--f--out11VerilogHDL用关键词specify和endspecify进行路径延时建模13.5路径延时建模模块中所有输入和输出之间的延时称为模块路径延时引脚(输入/输出)和端口(输入/输出)在使用中不进行区分,引脚一般指的是芯片的引脚,而端口指的是模块的输入和输出specify和endspecify进行路径延时建模时,形成一个specify块。specify块包含下列操作语句:给模块中所有路径指定引脚到引脚的延时在电路中进行时序检查定义specparam常量13.5.1specify块路径延时a--e--out9b--e--out9c--f--out11d--f--out11moduleMom(out,a,b,c,d);inputa,b,c,d;outputout;wiree,f;specify(a=>out)=9;(b=>out)=9;(c=>out)=11;(d=>out)=11;endspecifyanda1(e,a,b);anda2(f,c,d);anda3(out,e,f);endmodule13.5.2specify块内部specify块描述电路模块内部的路径的延时,specify内部语句对下列情况进行建模:并行连接全连接边沿敏感路径specparam声明语句条件路径延时上升、下降和关断延时最大延时值、最小延时值和典型延时值处理x状态转换并行连接用符号“=>”说明并行连接,使用格式如下:

(<source_field>=><destination_field>)=<delay_value>源域<source_field>中的每一位与目标域<destination_field>中的相应位连接,<delay_value>为延时值如果源和目标域为向量,必须是相同的位宽//一位连接:a和out都是1比特的信号(a=>out)=9;//多位连接:a[3:0]和out[3:0]是四位的情况(a=>out)=9;//多位连接:a[3:0]和out[3:0]是四位的情况,等效于(a[0]=>out[0])=9;(a[1]=>out[1])=9;(a[2]=>out[2])=9;(a[3]=>out[3])=9;//非法连接:a[4:0]是5位。out[3:0]是4位的情况(a=>out)=9;全连接用符号“*>”说明全连接,使用格式如下:

(<source_field>*><destination_field>)=<delay_value>源域<source_field>中的每一位与目标域<destination_field>中的每一位相连接,<delay_value>为延时值如果源和目标域为向量,位宽可以不相同moduleMom(out,a,b,c,d);inputa,b,c,d;outputout;wiree,f;specify(a,b*>out)=9;(c,d*>out)=11;endspecifyanda1(e,a,b);anda2(f,c,d);anda3(out,e,f);endmodule当向量的位比较宽时,如果延时的值相同,用全连接描述比较方便//a[31:0]和out[15:0]之间的所有延时为9specify(a*>out)=9;//共有32×16=352条路径endspecify边沿敏感路径用于沿触发器件的输入到输出的延时路径建模,举例如下:(posedgeclock=>(out+:in))=(10:8);在clock的上升沿,in信号传输到out的延时如果时钟上升沿之前的out信号为低电平,in为高电平,时钟的上升沿之后,需要10个时间单位,使out信号变为高电平如果时钟上升沿之前的out信号为高电平,in为低电平,时钟的上升沿之后,需要8个时间单位,使out信号变为低电平specparam声明语句用关键字“specparam”声明特殊的参数,用于specify块。这种参数只是有“望文生义”的概念,例如//用specparam声明用于specify块的参数specify//定义参数specparamd_to_q=9;specparamclk_to_q=11;(d=>q)=d_to_q;(clk=>q)=clk_to_q;endspecify条件路径延时端口到端口的延时可能会由于输入信号的高低电平而改变。VerilogHDL提供了这种根据信号值有条件地给路径延时赋值。用if条件语句进行选择,进行赋值//条件路径延时moduleMom(out,a,b,c,d);outputout;inputa,b,c,d;wiree,f;//有条件的端口到端口延时赋值specify//基于信号a的逻辑电平不同,//有条件的端口到端口延时赋值if(a)(a=>out)=9;if(~a)(a=>out)=10;//基于信号a和c的逻辑电平不同,//有条件的端口到端口延时赋值//如果b&c为真,delay=9,否则delay=13if(b&c)(b=>out)=9;if(~(b&c))(b=>out)=13;//使用拼接符合全连接的延时赋值if({c,d}==2'b01)(c,d*>out)=11;if({c,d}!=2'b01)(c,d*>out)=13;endspecifyanda1(e,a,b);anda2(f,c,d);anda3(out,e,f);endmodule条件路径延时又称为状态依赖路径延时(SDPD,StateDependentPathDelays)条件表达式可以包含:任意逻辑操作符、位操作符、缩减操作符、连接操作符以及条件操作符等操作数:模块输入或输出端口、端口的位选或域选、局部定义的寄存器或网线变量,或局部变量的位选或域选、编译时就能确定值的常量,如常数或specparam定义的参数if条件语句不能使用else结构上升、下降和关断延时端口到端口的延时可以通过指定上升、下降和关断来更详细的描述。可以给任意一条路径给出1个、2个、3个、6个或12个延时值。//所有延时都相同,指定一个延时specparamt_delay=11;(clk=>q)=t_delay;//指定两个延时,上升延时和下降延时//上升延时0->1,0->z,z->1//下降延时1->0,1->z,z->0specparamt_rise=9,t_fall=13;(clk=>q)=(t_rise,t_fall);//指定三个延时,上升延时、下降延时和关断延时//上升延时0->1,z->1//下降延时1->0,z->0//关断延时0->z,1->zspecparamt_rise=9,t_fall=13,t_turnoff=11;(clk=>q)=(t_rise,t_fall,t_turnoff);//指定六个延时//按如下顺序指定:0->1,1->0,0->z,z->1,1->z,z->0,不能变specparamt_01=9,t_10=13,t_0z=11;specparamt_z1=9,t_1z=11,t_z0=13;(clk=>q)=(t_01,t_10,t_0z,t_z1,t_1z,t_z0);//指定十二个延时//按如下顺序指定:0->1,1->0,0->z,z->1,1->z,//z->0,

0->x,x->1,1->x,x->0,x->z,z->x不能变specparamt_01=9,t_10=13,t_0z=11;specparamt_z1=9,t_1z=11,t_z0=13;specparamt_0x=4,t_x1=13,t_1x=5;specparamt_x0=9,t_xz=11,t_zx=7;(clk=>q)=(t_01,t_10,t_0z,t_z1,t_1z,t_z0,t_0x,t_x1,t_1x,t_x0,t_xz,t_zx);最大延时值、最小延时值和典型延时值端口到端口的延时通过指定上升、下降和关断来更详细的描述。同时,根据使用环境,给出延时值的最大值、最小值和典型值。最大值、最小值和典型值的说明方式:

min:typ:max//指定三个延时,上升延时、下降延时和关断延时//每个延时有min:typ:max三个值specparamt_rise=8:9:10,t_fall=12:13:14,t_turnoff=10:11:12;(clk=>q)=(t_rise,t_fall,t_turnoff);处理x状态转换VerilogHDL采用保守的方法计算x状态转换的延时。如果没有明确指定x状态转换的延时,则采用如下保守方法:从x状态到已知状态的转换应当采用最大可能的时间从已知状态到x状态的转换应当采用最小可能的时间在指定六个延时的路径延时说明中,按照保守的方法计算x状态转换的延时过度过程延时值0->xmin(t_01,t_0z)=91->xmin(t_10,

t_1z)

=

11z->xmin(t_z0,t_z1)=9

温馨提示

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

评论

0/150

提交评论