Verilog-HDL
- 格式:ppt
- 大小:4.03 MB
- 文档页数:30


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等也被内置在语言中。
提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。
Verilog HDL 硬件描述语言
实验报告
学院:信息科学与工程学院
班级:电科09-1
学号:3090748137 3090748135
姓名:
实验一简单组合逻辑电路的设计
一 实验要求
1. 用verilog HDL语言描写出简单的一位数据比较器及其测试程序;
2. 用测试程序对比较器进行波形仿真测试;画出仿真波形;
3. 总结实验步骤和实验结果。
二 实验原理与内容
这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。
模块源代码:
//--------------- compare.v -----------------
module compare(equal,a,b);
input a,b;
output equal;
assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,
//equal输出为0。
endmodule
测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。
测试模块源代码:
`timescale 1ns/1ns //定义时间单位。
module comparetest;
reg a,b;
wire equal;
initial //initial常用于仿真时信号的给出。
begin
a=0; b=0;
#100 a=0; b=1;
#100 a=1; b=1;
#100 a=1; b=0;
#100 $stop; //系统任务,暂停仿真以便观察仿真波形。
verilog hdl高级数字设计pdf
Verilog HDL高级数字设计是以综合性的方式介绍Verilog HDL用于设计数字系统的最新技术的一本全面而有系统的书籍。它全面而深入地介绍了Verilog HDL的概念,语法和功能,并且介绍了用Verilog HDL语言描述复杂数字系统的多种综合方法。书中涵盖了Verilog HDL的语言架构、语言核心、内部实现机制和工具,以及如何实现Verilog HDL模型,建立高效实现方法和流程自动化等内容。书中还探讨了Verilog HDL用于设计复杂数字系统中的一些优化与实施技术,例如状态机设计与实现、宏建模及性能优化等。本书同时也是有实际工程应用背景的资深 Verilog HDL 工程师的丰富实战经验导航工具,可以引导读者的实际工程综合应用中达到最优的设计和最高的综合水平效果。