第7章VerilogHDL语言基础.doc

第7章VerilogHDL语言基础.doc

第 7 章 Verilog HDL语言基础 7.1 Verilog HDL设计初步 Verilog HDL是一种硬件描述语言,主要用于从行为级、寄存器级(RTL级)、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象既可以是简单的门,也可以是完整的电子数字系统。除此而外,还可用Verilog HDL进行仿真验证、时序分析和逻辑综合等。 7.1.1 Verilog HDL设计流程简介 运用Verilog HDL设计系统一般采用自顶向下分层设计的方法。首先从系统设计入手,在顶层进行功能方框图的划分和结构设计,并用硬件描述语言对高层次的系统行为进行描述所谓行为描述,就是对整个系统的数学模型描述,行为描述的目的是意图通过行为仿真来发现设计中存在的问题。 在系统设计的基础上,进行各个功能模块的设计,以保证能够正确地实现模块所要求的逻辑功能。这种功能级的设计也是要通过硬件描述语言来完成的,主要是要求正确地描述模块的功能和逻辑关系,但不考虑逻辑关系的具体实现。在完成功能设计后,通过相应软件对设计进行逻辑模拟,以验证设计在功能上是否正确,若发现有问题应修改设计。 由于这种逻辑模拟是高层次的系统仿真,所以这一仿真层次的许多Verilog语句不能被综合器所接受,必须将行为方式描述的Verilog语言程序改写为数据流方式(即RTL级)描述的Verilog语言程序,为下一步的逻辑综合作准备。 所谓逻辑综合是指将高层次的设计描述自动转化为低层次的设计描述,即将RTL级描述转化为逻辑门级描述,其结果相当于根据系统要求画出了系统的逻辑电路图。综合后的结果可为硬件系统所接受,具有硬件系统可实现性。 逻辑综合后必须利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,也就是通常所说的布局布线设计。在布局布线完成之后,一般还要针对设计的结果再进行一次时序仿真。 如果以上所有过程都完成了,就可通过编程器或下载电缆将设计文件载入目标芯片FPGA或CPLD中。 7.1.2 Verilog HDL语言与C语言的比较 Verilog语言是在C语言的基础上发展而来的。从语法结构上看,Verilog语言与C语言有许多相似之处,继承和借鉴了C语言的许多语法结构。在表7.1中我们给出常用C语言与Verilog相对应的关键字、控制结构和运算符的比较。 表7.1 C语言 Verilog语言 C语言 Verilog语言 功能 function module, function + + 加 if-then-else if-then-else - - 减 for for * * 乘 while while / / 除 case case % % 取模 break break ! ! 逻辑非 define define 逻辑与 printf printf ( ( 逻辑或 int int 大于 {,} begin,end 小于 = = 大于等于 = = 小于等于 == == 等于 != != 不等于 ~ ~ 取反 按位与 | | 按位或 ^ ^ 按位异或 左移 右移 ?: ?: 等同于if-else 从表中可以看出,Verilog语言与C语言几乎完全相同。但是作为一种硬件描述语言,Verilog语言与C语言在使用中还是有着本质的区别的:C语言是一行一行依次执行的,属于顺序结构;而Verilog语言是用语言的方式去描述物理电路的行为,在任何时刻,只要接通电源,所有电路都同时工作,因此,虽然程序语句是顺序编写的,但一旦综合成硬件电路后,各部分电路可以在同一时刻同时运行,属于并行结构。C语言的函数调用与Verilog中的模块调用也有区别,C语言调用函数是没有延迟特性的,一个函数是惟一确定的,对同一个函数的不同调用是一样的。而Verilog中对模块的不同调用是不同的,即使调用的是同一模块,也必须用不同的名字来指定。 7.1.3 基本的Verilog HDL模块 模块是Verilog的基本描述单元,掌握了模块的概念对学习Verilog语言至关重要。模块代表硬件上的逻辑实体,其范围可以从简单的门到整个大的系统,比如一个加法器,一个存储子系统,一个微处理器等。 在Verilog语言中,首先要做的就是模块定义。“模块”(module)是Verilog程序的基本设计单元。下面以图7.1为例来说明模块的结构。 用Verilog语言对两输入与门的描述: /*AND2*/ module AND2 (A,B,F ); //模块名为AND2 input A,B; //输入信号定义 output

文档评论(0)

1亿VIP精品文档

相关文档