第4章 Verilog HDL
- 格式:ppt
- 大小:862.50 KB
- 文档页数:80


Verilog HDL基本程序结构
用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型,也称为模块,是Verilog的基本描述单位。模块描述某个设计的功能或结构以及与其他模块通信的外部接口,一般来说一个文件就是一个模块,但并不绝对如此。模块是并行运行的,通常需要一个高层模块通过调用其他模块的实例来定义一个封闭的系统,包括测试数据和硬件描述。一个模块的基本架构如下:
module module_name (port_list)
//声明各种变量、信号
reg //寄存器
wire//线网
parameter//参数
input//输入信号
output/输出信号
inout//输入输出信号
function//函数
task//任务
……
//程序代码
initial assignment
always assignment
module assignment
gate assignment
UDP assignment
continous assignment
endmodule
说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。语句用于定义设计的功能和结构。说明部分可以分散于模块的任何地方,但是变量、寄存器、线网和参数等的说明必须在使用前出现。一般的模块结构如下:
module ()
endmodule
其中,用来指定数据对象为寄存器型、存储器型、线型以及过程块。可以是initial结构、always结构、连续赋值或模块实例。
下面给出一个简单的Verilog模块,实现了一个二选一选择器。
对Verilog HDL的一些认识
Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
Verilog HDL和软件编程语言的差异主要体现在:
Verilog HDL硬件描述语言和一般的软件编程语言有着很大的差别,它跟硬件是息息相关的,什么样的HDL就有什么样的硬件。
Verliog HDL跟C的语法比较相近,但描述的方式有很大的不同,Verilog 里面跟多的是alawys块,这个跟VHDL的进程有异曲同工之处啊。C跟时序不相关的多,但HDL跟时序太密切了,如果忘了这一点,理解程序就很麻烦了。
然而在实际中,Verilog HDL和软件编程语言通常是配合使用的。因为:软件编程语言(如C语言)应用与更多领域,有可靠的编译环境,语法完备,缺陷较少,而Verilog HDL只是针对硬件描述的,在别处不方便,且Verilog HDL的仿真、综合、查错工具等大部分都是商业软件,可靠性差,有很多缺陷。所以,只有在软件编程语言的配合使用下,它才能更好地发挥作用。总之,既要利用软件编译语言的完整性,又要结合Verilog HDL对硬件描述的精确性,来更快、更好地设计出符合要求的硬件电路系统。
Verilog HDL的特点:
基本逻辑门,例如and、or和nand等都内置在语言中。
用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。
提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。
1EDAEDA应用技术应用技术
3.1 引言
3.2 Verilog HDL基本结构
3.3 数据类型及常量、变量
34运算符及表达式第3章硬件描述语言Verilog HDL
3.8 循环语句
3.9 结构说明语句
3.10 编译预处理语句
3.11 语句的顺序执行与并行执行
3.12 不同抽象级别的Verilog HDL模型
3.13 设计技巧3.4 运算符及表达式
3.5 语句
3.6 赋值语句和块语句
3.7 条件语句
3-2
3.1 引言
什么是VilHDL内容概要
一、什么是Verilog HDL
二、Verilog HDL的发展历史
三、不同层次的Verilog HDL抽象
四、Verilog HDL的特点
3-33.1 引言
一、什么是VerilogHDL
VerilogHDL是一种用于数字逻辑电路设计的硬件描述
语言(HradwareDescriptionLanguage),可以用来进
行数字电路的仿真验证、时序分析、逻辑综合。
¾用VerilogHDL描述的电路设计就是该电路的Verilog
HDL模型。
¾VerilogHDL既是一种行为描述语言也是一种结构描述
语言。
既可以用电路的功能描述,也可以用元器件及其之间的
连接来建立VerilogHDL模型。
3-4
3.1 引言
二、VerilogHDL的发展历史
1983年,由GDA(GateWayDesignAutomation)公
司的PhilMoorby首创;
1989年,Cadence公司收购了GDA公司;
1990年,Cadence公司公开发表VerilogHDL;
1995年,IEEE制定并公开发表VerilogHDL1364-
1995标准;
1999年,模拟和数字电路都适用的Verilog标准公开
发表
3-53.1 引言
三、不同层次的VerilogHDL抽象
VerilogHDL模型可以是实际电路的不同级别的抽象。
抽象级别可分为五级:
¾系统级(system level): 用高级语言结构(如case语句)
任务举例
module alutask(code,a,b,c);
input[1:0] code;
input[3:0] a,b;
output[4:0] c;
reg[4:0] c;
task my_and;
input[3:0] a,b;
output[4:0] out;
integer i;
begin
for(i=3;i>=0;i=i-1)
out[i]=a[i]&b[i];
end
endtask
always@(code or a or b)
begin
case(code)
2'b00: my_and(a,b,c);
2'b01: c=a|b;
2'b10: c=a-b;
2'b11: c=a+b;
endcase
end
endmodule
测试程序
`include "alutask.v"
module alu_tp;
reg[3:0] a,b;
reg[1:0] code;
wire[4:0] c;
parameter DELY = 100;
alutask ADD(code,a,b,c);
initial begin
code=4'd0; a= 4'b0000; b= 4'b1111;
#DELY code=4'd0; a= 4'b0111; b= 4'b1101; #DELY code=4'd1; a= 4'b0001; b= 4'b0011;
#DELY code=4'd2; a= 4'b1001; b= 4'b0011;
#DELY code=4'd3; a= 4'b0011; b= 4'b0001;
#DELY code=4'd3; a= 4'b0111; b= 4'b1001;
#DELY $finish;
end
initial $monitor($time,"code=%b a=%b b=%b c=%b", code,a,b,c);