概述
Verilog HDL基本框架
1. 基本概述
常用模板如下
model 模块名 (端口1, 端口2, 端口3, ..., 端口n);
// 声明部分
端口类型说明 (input, output, inout);
参数定义;
数据类型定义 (wire, reg等);
// 逻辑功能描述部分
示例引用低层次模块和基本门元件;
连续赋值语句;
过程结构模块;
行为描述语句;
任务和函数;
endmodule
以下是对各个部分的详细解释:
定义与名称 | 相关解释 |
模块名 | 模块的唯一标识符 |
端口类型说明 | 类型:输入(input)、输出(output)、双向口(inout) |
***** 所有被定义的端口一定要有类型说明 ***** | |
数据类型定义 | 常见的有:reg(寄存器类型),wire(连线类型) |
编程风格 | 实例化低层次模块:结构风格描述 |
连续赋值语句(assign):数据流描述方式 | |
过程块语句结构(initial 和 always 两种):功能(行为)风格描述方式 |
2. 简单的例子(代码文件均为example1.v)
以下面的式子为例
Y = S ‾ D 0 + S ‾ D 1 Y = overline{S}D_0 + overline{S}D_1 Y=SD0+SD1
2.1 . 结构风格描述法
module example1 (D0, D1, S, Y);
input D0, D1, S;
output Y;
wire Snot, A, B;
not U1 (Snot, S);
and U2 (A, Snot, D0);
and U3 (B, S, D1);
or U4 (Y, A, B);
endmodule
2.2. 数据流描述方式
module example1 (D0, D1, S, Y);
input D0, D1, S;
output Y;
wire Y;
assign Y = S? D1 : D0; // C语言写习惯了
// 或者写成 assign Y = (~S & D0) | (S & D1)
endmodule
2.3. 功能风格描述方式
模块中一定要使用变量类型 —— reg
module example1 (D0, D1, S, Y);
input D0, D1, S;
output Y;
reg Y;
always @ (D0, D1, S)
case (S)
// 1'b 表示长度为1的二进制串,0和1表示两种情况
1'b 0: Y = D0;
1'b 1: Y = D1;
endcase
endmodule
3. 代码仿真
对于写好的代码需要Verilog HDL编译器。测试的具体方法如下:
- 对输入端口添加激励信号(尽可能包含所有种类的输入)
- 用过相应的代码运行后,将得到的结果与实际的结果进行比对,看是否准确。
3.1. 以文件example1.v文件为例(运行代码为test1.v)
仿真的输出一定是wire,输入看实际情况了
// 单位时间1ns,精准度1ns
time 1ns / 1ns
module test1 (PS, PD0, PD1);
reg PS, PD0, PD1;
wire PY;
example1 t_Mux(PD0, PD1, PS, PY);
initial begin
PS = 0; PD0 = 0; PD1 = 0;
#1 PS = 0; PD0 = 0; PD1 = 1;
#1 PS = 0; PD0 = 1; PD1 = 0;
#1 PS = 0; PD0 = 1; PD1 = 1;
#1 PS = 1; PD0 = 0; PD1 = 0;
#1 PS = 1; PD0 = 0; PD1 = 1;
#1 PS = 1; PD0 = 1; PD1 = 0;
#1 PS = 1; PD0 = 1; PD1 = 1;
#1 $stop;
end
initial begin
// monitor和C语言的printf相似,$ time表示单位时间上的系统任务,%b 表示二进制输出,t 表示tap输出
$monitor ($ time, "tS=%btD1=%btD0=%dtY=%d", PS, PD1, PD0, PY);
// dumpfile和dumpvars用于保存仿真数据文件
$dumpfile ("text1.vcd");
$dumpvars;
end
endmodule
4. 实际操作
(自己动手玩吧)
最后
以上就是激动蓝天为你收集整理的Verilog HDL 学习笔记 ——— (1)Verilog HDL基本框架的全部内容,希望文章能够帮你解决Verilog HDL 学习笔记 ——— (1)Verilog HDL基本框架所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复