• ​ Verilog UDP 基础知识分类


            门级建模中介绍的内置门单元,例如 and,or , nor 等,均属于 Verilog 自带的一整套标准原语,即通常所说的内置原语。此外,Verilog 还为用户提供了自己编写原语的能力,这种原语就是用户自定义原语(User Defined Primitive,简称 UDP)。在 UDP 中,不能调用其他 module 或 primitive,调用方式和门级原语完全相同。

    UDP 类型主要有以下 2 种,后面将逐一介绍。

    • 组合逻辑 UDP:输出仅取决于输入信号的组合逻辑。
    • 时序逻辑 UDP:下一个输出值不但取决于当前输入值,还取决于当前的内部状态。

    UDP 定义

    UDP 的定义不依赖于模块定义,因此可以出现在模块定义外,也可以单独在文件里定义。

    UDP 格式定义如下:

    实例

    1. primitive UDP_name (
    2.   output_name,
    3.   list_of_input) ;
    4.   output_declaration ;
    5.   list_of_input_declaration ;
    6.   [reg_declaration] ;
    7.   [initial_statement] ;
    8.  
    9.   table
    10.     list_of_table_entries ;
    11.   endtable
    12. endprimitive

    UDP 说明

    端口声明:

    • 1、端口声明部分和 module 类似,可以在端口列表声明时只列出端口信号然后在 primitive 实体中说明其类型,也可以直接在端口列表声明时就指明其类型。
    • 2、输入端口只能采用标量(即 1 位),允许有多个输入端口。
    • 3、输出端口只允许有一个标量(即 1 位),且输出端口必须出现在端口列表的第一个位置。绝对不允许有多个输出端口。
    • 4、输出端口用 output 关键字说明,时序逻辑 UDP 需要保存状态,则其输出端口还需要声明为 reg 类型。
    • 5、UDP 不支持 inout 端口类型。

    初始化

    可以用 initial 语句对时序逻辑 UDP 的输出端口(reg 类型)进行初始化,该语句是可选的。

    状态表

    • 1、UDP 状态表是 UDP 中最重要的部分,用关键字 table 声明,它定义了如何根据输入状态和当前状态得到输出值,类似于逻辑真值表。
    • 2、状态表的项可以为 0,1,或 x。UDP 不能处理 z 值,所以传递给 UDP 的 z 值会被当做 x 处理。
  • 相关阅读:
    基于Vite+React构建在线Excel
    禁忌搜索算法在求解取送货路径问题中的应用
    Linux命令(79)之tr
    宏观经济学名词解释
    基于Redis+Cookie实现Session共享
    基于 Docker 的 ELK 高可用集群架构
    微信管理系统的便捷功能:自动回复
    上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技
    Git的远程仓库
    MS1861 视频处理与显示控制器 HDMI转MIPI LVDS转MIPI带旋转功能 图像带缩放,旋转,锐化
  • 原文地址:https://blog.csdn.net/qq_33300585/article/details/127944150