目录
学习目标:
学习内容:
1.过程连续赋值
2.改写参数
3.条件编译和执行
4.时间尺度
5.常用的系统任务
学习时间:
学习总结
学习目标:
提示:这里可以添加学习目标
1.掌握怎样在模块调用时用defparam语句重新定义参数值J解释条件编译和Verilog 插述部件的执行。·
2.认识和理解系统任务,如文件输出、显示层次、选通显示( strobing )、随机数生成、存储器初始化和值变转储等系统任务。
3.描述过程连续赋值语句assign,deassign,force和 release,解释它们在建模和调试时的重要性。
学习内容:
提示:这里可以添加要学的内容
1.过程连续赋值
关键字assign 和 deassign 用来表示第一类过程连续赋值语句。过程连续赋值语句的左边只能是一个寄存器或-个拼接的寄存器组,不能是线网类型变量的部分位选择、位选择或寄存器组。过程连续赋值语句可以改写〈覆盖)常用的过程赋值的结果。过程连续赋值一般只用于受控制的一段时间内。
在中我们曾建立过-一-个具有异步复位端、由下降沿触发的D触发器的模型。,我们将改用assign 和 deassign语句来建立同样的D_FF模型。
关键字force和 release用来表示过程连续赋值语句的第二种形式。它们既可以用来改写(覆盖〉寄存器上的赋值也可以改写(覆盖)线网上的赋值。force和 release语句的典型应用是在交.互式调试过程中。此时,某些寄存器或线网被强制赋值、并且提示对其他寄存器和线网的影响。建议不要在设计模块内部使用force和 release语句,它们应当只出现在激励中,或仅作为调试语句。
2.改写参数
有两种方法改写(盖)参数值:通过defparan语句或通过模块调用参数赋值。
正如前面在里所讨论的,参数可以在模块定义内定义。但是,在 Verilog模块编译过程中,参数值可以针对每个模块调用单独改变。这样就允许我们在编译时将一组组不同的参数值组合传递给每个模块,而不考虑预定义的参数值。
3.条件编译和执行
正如前面在3.2.8节里所讨论的,参数可以在模块定义内定义。但是,在 Verilog模块编译过程中,参数值可以针对每个模块调用单独改变。这样就允许我们在编译时将一组组不同的参数值组合传递给每个模块,而不考虑预定义的参数值。
有两种方法改写(盖)参数值:通过defparan语句或通过模块调用参数赋值。
4.时间尺度
通常,在某次仿真中,一个模块中的延迟值需要用某个时间单位来定义,比如 1 Ms。然而,另一个模块中的延迟值需要用另一个时间单位来定义.比如100 ns。Verilog HDL允许用'timescale编译指令为模块指定参考时间单位。
5.常用的系统任务
Verilog语言中的一些常用系统任务,它们各自适用于不同的场合。我们将讨论用于文件输出、显示层次、选通显示( strobing )、随机数生成、内存初始化和值变转储等的系统任务”。
学习时间:
提示:这里可以添加计划学习的时间
20230616
学习总结
提示:这里统计学习计划的总量
1.过程连续赋值语句可用于改写(覆盖)寄存器和线网上的赋值。assign和 deassign可以改写(覆盖)寄存器上的赋值。force和release可以改写(覆盖)寄存器和线网上的赋值。assign和 deassign可以用在实际的设计中。force 和 release可以用于调试。
2.可以用defparam语句或者在模块调用中传递新值来改写(覆盖)已在模块中定义的参数,在模块调用中,可以按参数列表的参数顺序或者名字关联的方式给参数赋值。推荐使用名字关联的方式给参数赋值。
3.设计的某些部分的代码可以通过使用`ifdef,' ifndef,'elsif,'else和`endif等指令有条件地编译。在编译时用`define语句定义编译标志。
4.Verilog仿真器中的代码执行也可以通过系统任务$test$plusargs的方式有条件地进行.在运行时通过+<flag_name>定义执行标志
5.Verilog 中最多可以为写操作打开30个文件。在多通道描述符中为每个文件赋予1位。多通逍描述符可用于写多个文件。IEEE Standard Verilog Hardware Description Language文档描述了更先进的进行文件IO操作的方式。
6.选通显示是一种在某确定时刻或者由某事件触发的显示值的方式,其显示的执行安排在同时刻执行的其他语句都执行完毕之后进行。
7.存储器可以用数据文件的数据进行初始化。数据文件包含地址和数据。地址也可以在存储器初始化任务中指定。
可以使用系统任务$random生成随机数。它们被用做生成随机测试向量。任务$random 既可以生成正数,也可以生成负数。
值变转储文件是许多设计者在后处理工具中进行调试时使用的一种通用格式。Verilog 允许将所有的或者部分选定的模块变量转储到VCD文件中。多种系统任务可以用于此目的。