Verilog基本概念
了解Verilog HDL程序的框架
刷题推荐
链接: Verilog刷题
Verilog语法的基本概念
最重要的几个基本概念:并行性、层次结构性、可综合性和测试平台
例1
/*此程序通过连续赋值语句描述了一个名为adder的3位加法器*/
module adder (count,sum,a,b,cin);
input [2:0] a,b;
input cin;
output count;
output [2:0] sum;
assign {count,sum} = a + b + cin;
endmodule
从例子中可以看出整个Verilog HDL程序是位于module 和 endmodule 声明语句之间的。
例2
/*此程序通过连续赋值语句描述了一个名为compare的比较器*/
module compare (equal,a,b);
output equal; //声明输出信号equal
input [1:0] a,b; //声明输入信号a,b
assign equal = (a == b)? 1:0
/*如果a、b两个输入信号相等,输出为1,否则为0*/
endmodule
在这个程序中,/* …*/的作用和 // 表示注释部分。
例3
/*此程序描述了一个名为trist2的三态驱动器*/
module trist2(out,in,enable);
output out;
input in,enable;
bufifl mybuf(out,in,enable);
endmodule
程序调用一个在Verilog语言提供的原语库中现存的三态驱动器元件bufifl来实现其逻辑功能。这个调用过程也称为库元件bufifl的实例化,在本模块中它被具体化为mybuf。
原语库了解链接: Verilog基本语法——原语篇(Gate门)
例4
/*此程序通过另一种方法描述了一个三态门*/
module trist1(sout,sin,ena);
output sout;
input sin,ena;
mytri tri_inst(.out(sout),.in(sin),.enable(ena));
/*调用有mytri模块定义的实例元件tri_inst,即把已定义的模块myfri在本模块中具体化为tri_inst*/
endmodule
module mytir(out,in,enable);
output out;
input in,enable;
assign out = enable?in:bz;
endmodule
在这个例子中存在两个模块,模块trist1调用由模块mytri定义的实例部件tri_inst,模块trist1是上层模块,模块mytri则被称为子模块。在实例部件tri_inst中,带“ . ”的表示被引用模块的端口,名称必须与被引用模块的端口一致,小括号中表示在本模块中与之连接的线路。
自学Verilog(二)链接: 常用Verilog语法(1)
这里是引用《Verilog数字系统设计教程》——夏宇闻