- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
?首先我们要理解两种变量类型?Net Type(连线型)和?Register Type (寄存器型)。(有些参考书上有分为3种类型,这个无关紧要)
?? ?Net Type(连线型),从名字上理解就是“导线”呗,导线的这头和导线的另一头始终是直接连通的,这头是什么值,那头就是什么值,所以输出随着输入随时变化的。连线型中?wire?最常见。
?? ?Register Type(寄存器型),寄存器就不像普通导线了,它可以把值给存住,你只要给它赋一次值,它都会存住那个值,直到你给它赋一个新的值它才会改变。寄存器型中?reg?最常见。
?? ?最常用到的是?wire?和?reg?这两种类型,其他的对我们初学者来说一般很少用到,可以暂时跳过,以后慢慢学下去自然会理解。
?? ?注意:wire型变量如果没有赋予初始值,默认初始值为高阻态“Z”。
?? ? ? ? ? ? ? reg ?型变量如果没有赋予初始值,默认初始值为不定态“X”。
?? ?在理解这两种基本的数据类型之后,我们来看看verilog语言中的赋值语句。verilog语言中的赋值语句有两种,一种是持续赋值语句(assign语句),另一种是过程赋值语句(always语句)。
?? ??持续赋值语句(assign语句)主要用于对wire型变量的赋值,因为wire(线型)的值不能存住,需要一直给值,所以需要用持续赋值。
?? ? ? ? ?例如:assign c = a + b; ? ?只要a和b有任意变化,都可以立即反映到c上,也就是说c的值是根据a,b的值随时变化的。
?? ??过程赋值语句(always语句)主要用于reg 型变量的赋值?,因为always语句被执行是需要满足触发条件的,所以always过程块里面的内容不是每时每刻都被执行,因此需要将被赋值的对象定义成寄存器类型,以便这个值能被保持住。
?? ?过程赋值又分为?阻塞赋值 “=”??和?非阻塞赋值 “=” 两种。这里的非阻塞赋值符号 “=” 与 “小于等于” 符号相同,他们在不同的语境下表示不同含义,要注意区分,例如在“if-else”等判断语句中,一般都表示为“小于等于”。
?? ?接下来对这两种赋值作具体讲解...
?? ? ①?阻塞赋值 “=“?。 阻塞赋值和我们平时理解的赋值差不多,不用太多解释,就是按照语句的顺序,一句句往下顺序执行。一个赋值语句执行完,然后执行下一个赋值语句。
?? ? ②?非阻塞赋值 “=”?。非阻塞赋值就比较特别了,在同一个always过程块中,非阻塞赋值语句都是同时并发执行的,并且在过程块结束时才执行赋值操作。也就是说,在同一个always过程块中,非阻塞赋值语句被执行没有先后顺序,在过程快结束时,大家一起被赋值。
?? ? 给大家举一个具体的例子:
?module?test (clk, a1, a2, b1, b2, c1, c2);?// test为module名称,括号内的是端口列表,包含所有输入输出的变量名称
?input?clk, a1, a2; ? ? ? ? ??// 定义输入变量,这里没有定义位宽,默认为1位宽度
?output?b1, b2, c1, c2; ? ?// 定义输出变量,这里没有定义位宽,默认为1位宽度
?reg?b1 = 0 , b2 = 0, c1 = 0 , c2 = 0; ??// 注意!因为这些变量将会在always过程块中被赋值,所以必须定义成 reg 型?? ?
// 注意!这里省略了对输入信号clk, a1, a2 的类型定义,它们默认为1位的wire 型(因为输入信号是随时要变化,所以必须用wire型)?? ? ? ? ? ? ?
always @?(posedge?clk) ??// always 用 clk 上升沿触发
?? ?begin
?? ? ? ?b1 = a1; ? ? ??// 这里采用的是阻塞赋值
?? ? ? ?c1 = b1;
?? ?end
always @?(posedge?clk) ?// always 用 clk 上升沿触发
?? ?begin
?? ? ? ?b2 = a2; ? ?// 这里采用的是非阻塞赋值
?? ? ? ?c2 = b2;
?? ?end???
endmodule?? ??// endmodule 别忘了,与 module 成对使用
仿真输入值设置图如下:
?我们只需给输入信号赋值,输出信号根据输入信号的变化而变化。
下面请看用quartus 2 软件仿真的波形图
首先请看这两张图的区别,第一张是时序仿真波形图(timing),黄色标记部分因为延时而产生,第二张图为功能仿真波形图(function),不考虑器件的延时。
??在①时刻,第一个时钟上升沿到来(posedge c
您可能关注的文档
最近下载
- 《解析几何》教案--吕林根,许子道.pdf
- 美国加州桥梁抗震caltrans seismic design criteria vlysis.pdf VIP
- 2025云南省临沧市市级单位公开遴选(选调)工作71人笔试参考题库附答案解析.docx VIP
- HSE保障措施优化及实施方案研究.docx VIP
- 2025甘肃省公路交通建设集团武仙公路收费运营人员招聘61人笔试模拟试题及答案解析.docx VIP
- 2025年秋新鲁科版英语四年级上册全册课件.pptx
- 颚式破碎机技术参数.docx VIP
- 2024河南资本集团“方舟”第三批招聘41人笔试参考题库附带答案详解.pdf
- 《时尚配饰设计》课件.ppt VIP
- 高边坡专家论证PPT汇报材料(中建).ppt VIP
文档评论(0)