Verilog 语法问题总结

更新时间:2024-01-21 10:01:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Verilog 语法问题总结

1.模块之间调用引脚的连接问题:引脚连线

module Fulladder(A,B,C,CI,SUM,CO);//模块引脚分别为A,B,C,SUM,CI,CO

input A,B,CI; output SUM,CO;

endmodule module TOP。。。

Fulladder FA(.A(w1),.B(w2),.C(w3),.SUM(w4),.CI(w5),.CO(w6));//引脚连线,相当于将模块 TOP的 w1,w2,w3,w4,w5,w6和FA模块中的A,B,C,SUM,CI,CO相连接,以便实现在TOP中实现全

加功能,实际上是TOP中调用Fulladder功能。

endmodue

2.两个不同数据宽度的变量操作时,自动右对齐操作。特别是赋值操作。

3.变量:输入、输出变量默认为wire型变量,无锁存的功能;reg和wire变量作为操作数时,为正整数,表示负数时用负数的补数表示(最高位为1);reg型变量默认为不定值,可以赋正数和负数;1默认为数

据宽度为32位的数;在进入always和initial块在中要被赋值的变量均要声明reg型。 4.{}位拼接运算符中必须指明每一位的宽度,若不指明则每位为32位的整数。{1,0}为

64`H0000000100000000。

5.模块之间调用时,若引用其他模块定义的参数时,要加上这个模块的名作为前缀TOP.FA;但是如果包含

了顶层模块的.V文件时,调用那么可以直接用这个模块的变量了,而不需要加前缀。

6.修改常量标示符: 模块P1中:parameter SIZE=8;

模块P2中修改SIZE的值为16:defparam P1.SIZE=16;

7.常量不说明位数时,默认值是32位,数据类型不定。

1=32`d10=32`b1; 10=`32d10=32`b1010 wire/reg不说明数据位数时,默认为1bit的数据宽度。

8.assigne 语句为连续赋值语句,不断执行,用于简单的组合逻辑电路输出端。

always语句不断执行,既可以描述组合和时序逻辑电路,既可以描述电平触发也可以描述边缘触发

(wait只能描述电平触发) always @();或者

always

wait(count_count) 语句;//若条件为真则执行,条件为假(0),不执行。

9.always @(敏感序列):编写面干序列很繁琐并且很容易漏掉一个输入时,可以用@(*)来代替,把

所有的输入变量都自动包含敏感列表中。例如:

always @(*) begin

out1=a+b+c+d+e; out2=a+v+r+t+y+u;

end

10.系统任务包括:显示($display),监视($monitor),同步显示($strobe),数据转储,VCD文

件转储,时间函数任务等。

预编译指令:`define `include`timescale,

条件编译`ifdef-else-endif,条件编译标志用`define规定。可以出现在程序的任何地方,设置特定标志然

后通过判别标志判别是否被编译,可以使源程序使用的范围增大,可移植性好。

条件执行指令:$test$plusargs,条件执行标志用于在运行时控制语句执行流程,所有的语句都被编译但是

有条件的执行他们。例如:

if($test$plusrgs(\

$display(\只有当标志设置时才能显示

本文来源:https://www.bwwdw.com/article/ao8o.html

Top