Verilog语法详解:禁止命名块与任务

需积分: 33 0 下载量 81 浏览量 更新于2024-08-22 收藏 317KB PPT 举报
"北航夏宇闻教授的Verilog讲稿详细讲解了Verilog语言中的禁止命名块和任务的使用,以及语法进阶内容,包括测试模块的编写、设计流程、并行块的运用和强制激励等概念。" 在Verilog编程中,`module`是定义设计的基本单元,例如`do_arith`模块包含了输入和输出信号,以及内部的逻辑操作。在这个例子中,`out`是一个16位的输出,`a`、`b`、`c`、`d`、`e`是8位输入,`clk`和`en_mult`分别是时钟和使能信号。`always`块用于描述时序逻辑,`@`后的条件可以是边沿触发(如`posedge clk`)或者事件触发(如`negedge en_mult`)。 在`always`块内部,`begin`关键字用于开启一个代码块,这里命名为`arith_block`,它是一个命名块,便于阅读和理解。`reg [3:0] tmp1, tmp2;`声明了两个局部变量`tmp1`和`tmp2`,它们仅在`arith_block`内部有效。`{tmp, tmp2}=f_or_and(a, b, c, d, e);`是函数调用,`f_or_and`函数返回值被分配给了`tmp`和`tmp2`。如果`en_mult`为高,`multme`任务将被执行,这个任务可能实现了某种乘法运算。 当`en_mult`变为低电平时,使用`disable`语句可以禁止已命名的块(`arith_block`)和任务(`multme`)的执行,这在需要停止特定逻辑时非常有用。 在设计流程中,Verilog设计通常包括包含文件、设计文件、厂家元件库文件,最后由编译器生成激励和实际输出信号的仿真结果。测试平台是验证设计的重要部分,它可以包含激励信号和预期结果,通过简单的或复杂的测试平台来验证设计的功能正确性。 并行块(`fork…join`)是Verilog中实现并发操作的关键结构。在示例模块`inline_tb`中,`fork`和`join`之间的语句将在同一时间点开始执行,即使它们的开始时间不同,也可以同时运行。这种并行执行使得能够模拟多个事件同时发生的情况,例如循环和任务。 此外,Verilog还支持过程连续赋值,即在过程中对信号进行即时赋值,但这通常是不可综合的,主要用于仿真阶段对信号的强制设定。 本讲稿深入讲解了Verilog语言的高级特性,包括模块定义、命名块、任务、并行执行以及测试平台的构建,这些都是Verilog设计和验证中的核心概念。理解和熟练掌握这些知识点对于进行数字系统的设计和验证至关重要。