Verilog HDL模型的不同抽象级别

所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述。如果只从行为功能的角度来描述某一电路模块,就称作行为模块。如果从电路结构的角度来描述该电路模块,就称作结构模块。根据抽象的级别将Verilog的模块分为5种不同的等级:

1)系统级 2)算法级 3)RTL级(register-transfer-level)4)门级 5)开关级。

对于数字系统的逻辑设计工程师而言:熟练地掌握门级、RTL级、算法级、系统级的描述是非常重要的。

对于电路基本元部件的设计者而言,则需要掌握用户自定义原语(UDP)和开关级的描述。

Verilog中有关门类型的关键字有26个,这里简单介绍其中8种:

and-与门;nand-与非门;or-或门;nor-或非门;xor-异或门;xnor-异或非门;buf-缓冲器;not-非门。

用户定义原语:

 用户定义原语是从英语User Defined Primitive直接翻译过来的,简称UDP。利用用户定义原语可以自己定义自己设计的基本逻辑器件的功能,由于UDP是用查表的方法来确定输出的,在用仿真器进行仿真时,对他的处理较对一般用户编写的模块和组合逻辑快得多。UDP的定义和一般模块类似,只是不用module而是改用primitive作为关键词,不用endmodule而是endprimitive关键词结束。

语法:primitive 元件名(输出端口,输入端口1,输入端口2,....);      //书上没有分号?

              output   输出端口名;

              input     输入端口1,输入端口2....;

              reg    输出端口;

              initial

                begin 输出端口寄存器或者时序逻辑内部寄存器初始化0; end

              table

                //输入1  输入2  输入3  ... :输出

                  逻辑1  逻辑2  逻辑3  ... :逻辑值;

                  逻辑1  逻辑2  逻辑3  ... :逻辑值;

                  逻辑1  逻辑2  逻辑3  ... :逻辑值;

                  ...          .... ... ... ..... ...........;

             endtable

      endprimitive

注意:

1)UDP只能有一个输出量,而且必须是端口说明的第一项;

2)UDP可以有多个输入端,最多允许有10个输入端;

3)UDP所有端口变量必须是标量,即必须是1位的;

4)在UDP的逻辑表中只允许出现0,1,x三种逻辑值,高阻状态z不允许出现。

5)只有输出端可以定义为reg寄存器类型变量;

6)initial语句用于为时序电路内部寄存器赋初值,只允许赋0,1,x的三种逻辑值,默认值为X。

原文地址:https://www.cnblogs.com/SYoong/p/5916907.html