Verilog HDL语言的用户自定义元件

来源:互联网 发布:作图软件origin 编辑:程序博客网 时间:2024/05/05 11:57

Verilog HDL语言提供了一种扩展基元的方法,允许用户自己定义元件(User Defined Primitives,UDP)。通过UDP,可以把一块组合逻辑电路或时序逻辑电路封装在一个UDP内,并把这个UDP作为一个基本门元件来使用。需要注意的是,UDP是不能综合的,只能用来仿真

1、定义UDP的语法:

primitive 元件名(输出端口名, 输入端口名1, 输入端口名2,…)
    output 输出端口名;
    input 输入端口名1, 输入端口名2,…;
    reg 输出端口名;

    initial begin
        // 输出端口寄存器或时序逻辑内部寄存器赋初值(0,1,X);
        ...
    end

    table
    // 输入1    输入2    …    :    输出
    逻辑值       逻辑值        :  逻辑值;
    逻辑值       逻辑值        :  逻辑值; 
    …    …    …    …;
    endtable
endprimitive

2、UDP的调用

UDP名 例化名 (连接端口1信号名, 连接端口2信号名, …, 连接端口n信号名);

3、注意事项:

a. UDP只能有一个输出端,而且必须是端口说明列表的第一项。

b. UDP可以有多个输入端,最多允许10个输入端。

c. UDP所有端口变量必须是标量,也就是必须是1位的。

d. 在UDP的真值表项中,只允许出现0、1、X三种逻辑值,高阻态Z是不允许的。

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