zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Mythological VI
    新访问计划
    数学小记
    【Learning】带花树——一般图最大匹配
    朋友
    【bzoj 1414】对称的正方形 单调队列+manacher
    【半集训记录】
    【codeforces 718E】E. Matvey's Birthday
    【codeforces 718 C&D】C. Sasha and Array&D. Andrew and Chemistry
    【bzoj 3233】[Ahoi2013]找硬币 ——搜索
  • 原文地址:https://www.cnblogs.com/SYoong/p/5916907.html
Copyright © 2011-2022 走看看