文章目录
-
- 注意事项
- 模板
- 数制的表示
- 特殊符号
- 数据类型
-
- 四种逻辑状态(四值逻辑)
- 两种数据类型:
- 参数
- 位选择和域选择
- 存储器
- 运算符
- 过程语句
注意事项
定义端口时要注意以下几点:
- 每个端口除要声明是输入、输出还是双向端口外,还要声明其数据类型,是wire型、reg型、还是其他类型。
- 输入端口和双向端口不能声明为reg型。
- 在测试模块中不需要定义端口。
模板
verilog模块的模板:
module <顶层模块名> (<输入输出端口列表>);
input 输入端口列表; //输入端口声明
output 输出端口列表; //输出端口声明
/*定义数据,信号的类型,函数声明,用关键字wire、reg、task、function等定义*/
wire 信号名
reg 信号名
//逻辑功能定义
assign <结果信号名>=<表达式>; //使用assign语句定义逻辑功能
//用always块描述逻辑功能
always @(<敏感信号表达式>)
begin
//过程赋值
//if-else,case语句,for循环语句
//task,function调用
end
//调用其它模块
<调用模块名> <例化模块名> (<端口列表>);
//门元件例化
门元件关键字<例化元件名> (<端口列表>);
endmodule
转义标识符,以"\"开头,以空白符结尾,可以包含任何字符。
反斜线和结束空白符并不是转义标识符的一部分,因此,标识符“\out”和标识符"out"恒等。
数制的表示
整数
- 二进制:b或B
- 十进制:d或D或默认
- 十六进制:h或H
- 八进制:o或O
+/-<位宽><进制><数字>
例如:
8'b11000101
8'hd5
5'o27
4'D2
如果没有定义一个整数的位宽,则默认为32位
实数转换为整数的方法,通过四舍五入转换为最相近的整数
verilog采用reg型变量来存储字符串
例如:
reg[8*12,1] stringvar
initial
begin
stringvar="hello world!";
end
特殊符号
| 特殊符号 | 说明 |
|---|---|
| \n | 换行 |
| \t | Tab键 |
| \\ | 符号\ |
| \" | 符号“ |
| \ddd | 八进制数ddd对应的ASCII字符 |
\123 //八进制数123对应的ASCII字符是大写字母S
数据类型
四种逻辑状态(四值逻辑)
- 0:低电平
- 1:高电平
- z:高阻态
- x:不确定或未知的逻辑状态
在可综合的设计中,只有端口变量可赋值为z,因为三态逻辑仅在FPGA器件的i/o引脚中是物理存在的,可物理实现高阻逻辑。
两种数据类型:
- net型:常用的有wire型、tri型
- variable型:包括reg型、integer型等
net型:
net型数据相当于硬件电路中的各种物理连接,其特点是输出值紧跟输入值的变化而变化。
net型数据的值取决于驱动的值,对net型变量有两种驱动方式:
一种方式是在结构描述中将其连接到一个门元件或模块的输出端;
另一种是用持续赋值语句assign对其进行赋值。
如果net型变量没有连接到驱动,其值为高阻态z
-
wire型

本文详细介绍了Verilog语言的基础知识,包括模块定义中的端口声明、数据类型(wire、reg、variable)、数制表示、逻辑状态、运算符、参数使用、存储器操作、以及initial和always过程语句。
最低0.47元/天 解锁文章
3307

被折叠的 条评论
为什么被折叠?



