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。

  • 相关阅读:
    byte在计算机中的存储方式--Double.byteValue()的输出结果思考
    启动Eclipse时An internal error occurred during: "Initializing Java Tooling".错误
    java实现两个int数交换
    cmd编译运行java
    java配置环境变量
    使用jQuery获取session中存储的list集合
    搭建ssm框架,可实现登录和数据展示以及增删改查
    java 生成UUID
    jQuery serialize()方法获取不到数据,alert结果为空
    SpringMVC架构的项目,js,css等静态文件导入有问题
  • 原文地址:https://www.cnblogs.com/SYoong/p/5916907.html
Copyright © 2011-2022 走看看