第6章-Verilog-HDL设计进阶ppt课件.ppt

第6章-Verilog-HDL设计进阶ppt课件.ppt

ID:58566735

大小:1.24 MB

页数:82页

时间:2020-10-21

第6章-Verilog-HDL设计进阶ppt课件.ppt_第1页
第6章-Verilog-HDL设计进阶ppt课件.ppt_第2页
第6章-Verilog-HDL设计进阶ppt课件.ppt_第3页
第6章-Verilog-HDL设计进阶ppt课件.ppt_第4页
第6章-Verilog-HDL设计进阶ppt课件.ppt_第5页
资源描述:

《第6章-Verilog-HDL设计进阶ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章VerilogHDL设计进阶6.1过程语句中的赋值语句格式:目标变量名=驱动表达式;6.1.1过程中的阻塞式赋值“阻塞”是在当前的赋值语句完成前,阻塞或停止其它语句的执行。阻塞赋值的步骤:(1)计算出“驱动表达式”的值。(2)向“目标变量”进行赋值操作。(3)完成赋值,即实现目标变量的更新。对于阻塞赋值,这三条是并成一步完成的,即一旦执行,目标变量立即更新。在同一过程结构中,允许对同一变量多次赋值。类似于软件语言里面的顺序赋值特点。16.1.2过程中的非阻塞式赋值格式:目标变量名<=驱动表达式;在一个串行块中,一条非阻塞型赋值语句的执行,并不影响块中其它语句的执行。

2、非阻塞赋值的步骤:①首先计算出“驱动表达式”的值。(立即完成的,不耗时的)。②进入步骤(2)的赋值阶段:等待其它所有的非阻塞语句。程序要执行到结尾才开始进入步骤(3)。③目标变量的更新。所有语句同时被更新。2在begin-eng串行块语句中,各条非阻塞过程赋值语句对应的“赋值表达式”同时开始计算。在过程块结束时,才将结果赋值给各个“被赋值变量”。可理解为先同时采样,最后一起赋值。非阻塞赋值不允许用于连续赋值。非阻塞赋值操作只能用于对寄存器类型变量进行赋值,因此只能用在"initial"块和"always"块等过程块中。在同一过程结构中,允许对同一目标变量多次赋值。目标变量

3、最终接受最接近过程结束的那个驱动源的数据。非阻塞赋值特点阻塞与非阻塞都不允许在作为并行语句的连续赋值语句assign中对同一变量赋值3举例:例6-1中,对Q1的多次赋值是错误的。因为3条assign语句是并行执行的,Q1的值无法确定。例6-2中,对Q1的多次赋值是允许的,最终Q1获得表达式C∧A的值。4说明:假设A与B在同一时刻从0变化到1。例6-3与例6-4都讲启动过程。例6-3中最终Q的值是1例6-4中,3条语句是同时赋值的,因此Q得到的值是M1与M2在A、B变动以前的值0。56.1.3进一步了解阻塞和非阻塞式赋值的内在规律6所有的阻塞与非阻塞赋值语句都必须在一个延时

4、中完成。阻塞赋值在延时前就已经按照顺序方式完成所有的赋值更新。但是所有的非阻塞赋值这时刚进入并完成赋值的第一阶段,且必须在延时后同时完成赋值。可以换个角度来考虑。当过程一启动,到执行完过程中所有类型的语句没有耗费任何时间,时间是在过程结束时流逝的。即有两个过程,一个是全部是阻塞赋值语句组成的,另一个全部是非阻塞赋值语句组成的,它们的执行周期是一样的。7变量b1得到值是比变量a1的到的值早一个时间。8例6-9中,T在过程中出现了3次非阻塞赋值。对于对同一个目标变量T进行多次非阻塞赋值,只取最后一个语句中的值。最后一个语句又需要前面T的值,因为在前面两条语句没有给T赋值,因此

5、T的值是个未知数。T成了一个不确定信号。例6-10中,虽然有不完整的if语句存在,但是T在前面已经赋值0,因此不会出现时序电路。96.2过程语句归纳结构化过程语句1.initial语句2.always语句10过程块的定义过程语句@(敏感信号列表)块语句开始标示符:块名块内局部变量说明一条或多条过程赋值或高级程序语句块语句结束标示符蓝色表示的是可以省略部分。过程语句是initial或者是always敏感信号列表只在always语句中出现,用于激活过程语句的执行。块语句标示符指begin-end(顺序块)与fork-join(并行块)组成块名与块内局部变量说明均为可选项。11

6、过程语句initial与always都是从模拟的0时刻开始运行的,但是initial过程中的语句只执行一次,而always语句是循环的执行后面的语句。initial过程语句不带触发敏感条件,因而必定从模拟的0时刻开始执行它后面的块语句;always语句通常带有触发条件,只有当触发条件被满足的时,其后的块语句才真正被执行。如果触发条件被缺省,则认为触发条件始终满足。一个模块中可以包含多个initial与always语句,代表多个过程块的存在,它们之间互相独立,并行运行。121.initial语句1.initial块从仿真0时刻开始执行,在整个仿真过程中只执行一次;2.ini

7、tial块内部的语句是顺序执行的;3.如果一个模块里包含多个initial块,则这些initial块从仿真0时刻开始并发执行,且每个块的执行是各自独立的4.作用:一般用于初始化、信号监视、生成仿真波形等目的。5.initial是一条主要面向模拟仿真的过程语句,通常不被综合工具所接受。13modulestimulusinitial;regx,y,a,b,m;initialbeginm=1'b0;$display($time,"m=%b",m);endinitialbegin#5a=1'b1;$display($time,"a=%

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。