目录
一、Verilog HDL语言要素
1.空白符:
空白符包括空格符(\b)、制表符(\t)、换行符和换页符。在编译和综合时,空白符被忽略。
2.注释符
单行注释: //
多行注释: /*开始 */结束 (Verilog HDL由C语言发展而来)
3.标识符
标识符被用来命名信号名、模块名、参数名,可以是任意一组字母、数字、$符号和_的组合。 需要注意的是,字母区分大小写,且第一个字符必须是字母或者下划线。
4.转义标识符
转移标识符以""开头,以空白结束
5.关键字
所有关键字都是小写的。
5.数值
四种基本逻辑数值状态
| 状态 | 含义 |
|---|---|
| 0 | 低电平、逻辑0,或“假” |
| 1 | 高电平、逻辑1或“真” |
| x或X | 不确定或位置的逻辑状态 |
| z或Z | 高阻态 |
整数及其表示:
| 数制 | 基数符号 | 合法表示符 |
|---|---|---|
| 二进制 | b或B | 0、1、x、z、?、_ |
| 八进制 | o或O | 0-7、x、z、?、_ |
| 十进制 | d或D | 0-9、_ |
| 十六进制 | h或H | 0-9、a-f、A-F、x、z、?、_ |
需要注意的是,_一般用于隔开便于使用者观察,提高可读性,在编译时会将其删除。
8'b10001101 //8位二进制数
8'ha6 //8位16进制数
5'o35 //5位8进制数
4'd6 // 4为十进制数
4'b1x_01 //4为二进制数
实数及其表示:
十进制表示法或科学记数法
2.7
5.2e8
3.5E-6
5_4582.2158_5896
二、数据类型
1.物理数据类型
1.1连线型

2.1寄存器型
数据储存单元的抽象类型,对应的硬件电路元件具有状态保持作用,常用语行为级描述
reg a; //一位名为a的reg变量
reg [3:0] b; //4为名为a的reg变量
reg [8:1] c,d,e //三个名称为c、d、e的reg型变量
reg型变量在进行赋值是储存的为补码
b=-2 //b的值为1110
2.连线型和reg型数据类型的声明





3.抽象数据类型
包括整型(integer)、时间型(time)、实型(real)及参数型(parameter)
integer index; //32位有符号整数
integer i[31:0] //整型数组
时间型为64位无符号数,主要用于对模拟时间的存储和计算处理
实型即浮点型,用于对延迟数据的计算。
参数型即常量,仿真开始前就被赋值,一直保持不变,可提高程序的可读性和维护性
parameter PI=3.14,LOAD=4'B1101
三、运算符和表达式

算数表达式结果的长度由最长的操作数决定,在赋值语句下,算数操作结果的长度由操作左端目标长度决定。
比较的结果有3种,1,0,和x


规约运算符:
将&,|,^、~&、~|、~^、^~作为单目运算符使用,意味对某数据类型的所有二进制位进行连续该操作符的连续使用,结果返回1位
例如: &a 的结果为将a所有位进行与操作得到的二进制数
连接运算符:{}
{信号1的某几位,信号2的某几位,
⋯
\cdots
⋯,信号n的某几位}
重复操作符: {{}}
四、模块的基本概念
1.模块的基本概念
模块是verilog的基本单元,代表一个基本功能块,用于描述某个设计的功能或结构以及与其他模块通信的外部端口。

module dff(din,clk,q,); //设计的上升沿D触发器
intput din,clk;
output q;
reg q;
always@(posedge clk)
q<=din;
endmodule
2.端口
模块的端口可以是输入端口(input),输出端口(output),或双向端口(inout)
2万+



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



