【Verilog】UDP用户原语
User-defined primitives
- 概述
- 基本语法
- 组合逻辑的UDP
- 时序逻辑的UDP
- UDP 符号表
Verilog HDL(简称 Verilog )是一种硬件描述语言,用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。
Verilog 不仅定义了语法,还对语法结构都定义了清晰的仿真语义。因此,Verilog 编写的数字模型就能够使用 Verilog 仿真器进行验证
概述
在使用 Verilog 进行门级建模的时候,除了使用内置的门单元(and、or、nor等)之外,还可以使用自定义的逻辑门,这些自定义的逻辑门就是 User-defined primitives (UDPs)。
and、or、nor 等这些门单元属于是 Verilog 自带的一整套标准原语,即通常所说的内置原语。
但是当我们需要使用更加复杂的门电路的时候,这些内置原语不能满足需求,就需要使用 UDPs。
UDPs的出现,给予了IC工程师定义自己设计的基本逻辑元件的能力。但是 UDP 语句没有办法综合,因此它更多的使用在验证功能上。
UDPs 可以分为如三类:
- 组合逻辑 UDPs
- 时序逻辑 UDPs
- 混合型 UDPs
基本语法
UDPs 的基本结构如下:
primitive name(/*在括号内定义端口*/); table/*在这里定义输入与输出的的关系*/endtableendprimitive
① primitive 和 endprimitive 类似于 module 和 endmodule;
② UDP可以有多个输入,但是只能存在一个输出,在端口声明的时候,输出端口需要处在第一个的位置上;
③ inout 双向端口在UDP中不被允许,同时无论是输入端口还是输出端口都必须是标量(即一位位宽);
④ 时序逻辑UDP,输出端口都需要定义成reg型;
⑤ 时序逻辑的UDP中,可以使用 initial 语句对 reg 类型变量(输出)进行赋初值;
组合逻辑的UDP
使用 UDPs 定义的一个 mux 如下所示:
primitive mux_tmp (q,d0,d1,s);output q; // 输出端口放在第一个intput s,d0,d1;table// d0 d1 s : q0 ? 0 : 0 ;1 ? 0 : 1 ;? 0 1 : 0 ;? 1 1 : 1 ;0 o x : 0 ;1 1 x : 1 ;endtable
endprimitive
关于状态表:
① 状态表的每一行的输出端口顺序一定要和端口列表相同;
② 输入和输出之间使用 : 隔开,每一行以 ; 结束;
③ 状态表中的值可以包含 0、1 或 x ,? 表示的是无关项。UDP不能处理z值,输入UDP的 z 值被当作 x 值处理;
④ 尽可能完整的列出UDP中的状态表,对于没有给出的输入组合情况,默认输出为不定态 x;
时序逻辑的UDP
① 时序逻辑的 UDP 的输出必须声明为 reg 类型,并且可以使用 initial 进行初始化;
② 时序逻辑 UDP 状态表的每一行内容为:<输入1><输入2>…<输入N> : <当前状态> : <下一状态>
③ 状态表的输入项可以是电平或者跳变沿的形式,输出项中的 - 表示的是状态保持不变
④ 当前状态是寄存器的当前值,下一状态是计算得到值会被存到寄存器中成为新值。
示例1:电平敏感
带清零端口的电平敏感的锁存器对应的 UDP 如下所示:
primitive latch(output reg q = 0input d, clock, clear);initial q = 0; // 锁存器的初始值为 0table // d clock clear : q : q+;? ? 1 : ? : 0;// clock = 1 时将 d 值锁存到 q 中1 1 0 : ? :1;0 1 0 : ? : 0;? 0 0 : ? : -;endtable
endprimitive
示例2:边沿敏感
带清零端口,时钟下降沿敏感的 D 触发器的 UDP 如下:
primitive edge_dff(output reg q=0input d, clock, clear);
table
// d clock clear : q : q+;? ? 1 : ? : 0 ;? ? (10) : ? : - ; //(10) 由1向0跳变1 (10) 0 : ? : 1 ;0 (10) 0 : ? : 0 ;? (1x) 0 : ? : - ; //(1x)由1向不确定状态跳变? (0?) 0 : ? : - ; ? (x1) 0 : ? : - ;(??) ? 0 : ? : - : //(??)信号值再0,1,x三者之间任意跳变
endtable
endprimitive
UDP 符号表

相关文章:
【Verilog】UDP用户原语
User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL(简称 Verilog )是一种硬件描述语言,用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…...
问题小记-达梦数据库报错“字符串转换出错”处理
最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题,这个问题主要是涉及到一条sql语句的执行,在此分享下这个报错的处理过程。 问题表现为:一样的表结构和数据,执行相同的SQL,在Oracle数据库中执行正常&…...
MyBatis入门的详细应用实例
目录 MyBatis第一章:代理Dao方式的CRUD操作1. 代理Dao方式的增删改查 第二章:MyBatis参数详解1. parameterType2. resultType 第三章:SqlMapConfig.xml配置文件1. 定义properties标签的方式管理数据库的信息2. 类型别名定义 MyBatis 第一章&…...
Sequelize ORM sql 语句工具
Sequelize ORM sql 语句工具 初始化配置 Sequelize orm 配置文章落日沉溺于海 在命令行中全局安装 npm i -g sequelize-clisequelize 执行需要匹配 mysql2 对应的依赖(安装 mysql2) npm i sequelize mysql2初始化项目 sequelize init熟悉初始化项目后…...
增强LabVIEW与PLC通信稳定性
在工业自动化系统中,上位机与PLC之间的通信稳定性至关重要,尤其是在数据采集和控制任务的实时性要求较高的场景中。LabVIEW作为常用的上位机开发平台,通过合理优化通信协议、硬件接口、数据传输方式以及系统容错机制,可以大大提升…...
UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏
UDP系统控制器(ShuiYX) 帮助文档 概述 本程序设计用于通过UDP协议接收指令来远程控制计算机的音量、执行特定命令和其他功能。为了确保程序正常工作,请确认防火墙和网络设置允许UDP通信,并且程序启动后会最小化到托盘图标。 命令格式及说明 音量控制…...
NK细胞杀伐功能如何实现?
在人体的免疫系统中,自然杀伐细胞(Natural Killer Cells,简称NK细胞)是一类完全自然的免疫激活力量。它们为人体提供了快速反应能力,不依赖类元的特定识别力,但能直接寻找和毁灭毒病感染细胞和肿瘤细胞。那…...
Ubuntu搭建ES8集群+加密通讯+https访问
目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…...
PC寄存器(Program Counter Register)jvm
在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色。以下是对JVM中PC寄存器的详细解释: 一、定义与功能 定义: JVM中的PC寄存器,也被称为程序计数器,是对物理PC寄存器的一种抽象模拟。它用于存储当前线程所执行的字节码指令的地址,即指…...
预览和下载 (pc和微信小程序)
1.微信小程序 预览pdf 或者 图片等 //utils.js 文件//通过接口返回文件链接 打开文档 export default function previewFile({ downLinkUrl, tempFilePath }) {let url "https://" downLinkUrl.replace("http://", "").replace("https:…...
使用 DeepSpeed 微调 OPT 基础语言模型
文章目录 OPT 基础语言模型Using OPT with DeepSpeedmain.py 解析1、导入库和模块2、解析命令行参数3、main 函数3.1 设备与分布式初始化3.2 模型与数据准备3.3 定义评估函数3.4 优化器与学习率调度器设置3.5 使用 deepspeed 进行模型等初始化3.6 训练循环3.7 模型保存 4、dsch…...
BSM和BMS什么区别?
BSM BSM(Battery System Manager)是指用于管理和控制电动车辆的电池系统的设备,其功能包括监测电池状态、控制充放电过程、保护电池安全等。 BMS BMS(Battery Management System)是指用于监测、控制和保护电池组的设…...
使用Maven打包javaagent.jar
1、简介 javaagent 是 Java1.5 之后引入的新特性,其主要作用是在class被加载之前对其拦截,以插入我们的字节码。 java1.5 之前使用的是JVMTI(jvm tool interface)技术来实现对class的拦截,不过这个是用 C 编写的&#…...
R语言混合模型回归GBTM群组轨迹模型绘图可视化研究
全文链接:https://tecdat.cn/?p38581 在回归分析的广袤领域中,面对具有多条未知函数线的复杂数据时,传统方法常常捉襟见肘。混合模型作为一种强有力的分析手段应运而生,其在处理此类复杂情境时展现出独特的优势与潜力(…...
【毕业设计】A079-基于Java的影院订票系统的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...
Vue.js前端框架教程11:Vue监听器watch和watchEffect
文章目录 监听器(watchers)基本用法deep: trueimmediate: true总结 watchEffect基本用法自动追踪依赖停止监听与 watch 的对比性能优化总结 监听器(watchers) 在 Vue 中,监听器(watchers)是一种…...
疾风大模型气象系统:精准预报,引领未来
精准预报,引领未来 在当今快速变化的世界中,天气预报已成为日常生活和社会运行中不可或缺的一部分。从规划日常出行到防范极端天气影响,高精准的气象服务正在重新定义我们的生活方式。而在这一领域,疾风大模型气象系统以其卓越的技术实力和领先的预测能力,正引领气象服务…...
U9应收单拉单生成时找不到退货单
财务说做应收单时抓不到一张退货单。2022年单据。这样的单据让人联想翩翩,胡思乱想。怎么复杂怎么想,钻了牛角尖。分析了1天也没有结果。不知道系统的逻辑,只能用猜想的形式去分析。 问过顾问之后,原来是单据类型错了。从而知道了…...
设计模式--单例模式【创建型模式】
设计模式的分类 我们都知道有 23 种设计模式,这 23 种设计模式可分为如下三类: 创建型模式(5 种):单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式(7 种)࿱…...
挑战一个月基本掌握C++(第七天)了解指针,引用,时间,输入输出,结构体,vector容器,数据结构 - 通用完结
一 指针 每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。 下面的实例,它将输出定义的变量地址: #include <iostream>using…...
视频会议不止办公!揭秘它如何重构医疗与教育两大行业
在数字技术全面普及的今天,视频会议早已不再局限于企业内部日常办公沟通这一单一用途,开始深度渗透到各大垂直行业领域中。其中医疗、教育这两大与民生息息相关的领域,更是借助定制化开发的视频会议技术,解决了不少长期存在的行业…...
UniApp跨平台开发入门:用现有Vue代码快速生成小程序/App(2023最新版)
UniApp跨平台开发实战:2023年Vue代码高效迁移指南 移动互联网时代,开发者常面临一个核心挑战:如何用最小成本将Web应用扩展到移动端。如果你手头已有成熟的Vue项目,UniApp可能是最经济的跨平台解决方案——它允许你复用80%以上的现…...
从‘双注意力网络’到MANet:手把手拆解CVPR经典模块在遥感分割中的魔改与应用
从双注意力机制到遥感图像分割:MANet的模块化设计与实战解析 遥感图像分割一直是计算机视觉领域的特殊挑战——当无人机以不同高度和角度拍摄地表时,同一张图像中可能同时存在微小的车辆和庞大的工业园区,这种极端的尺度变化让传统分割网络束…...
S32K3XX车载以太网驱动:从硬件接口到数据收发的全链路解析
1. S32K3XX车载以太网驱动的硬件架构解析 第一次接触S32K3XX系列芯片的车载以太网驱动时,最让我头疼的就是那一堆专业术语:MAC、PHY、MII、MDIO... 后来在实际项目中摸爬滚打才发现,理解硬件架构就像拆解汽车的发动机,只要搞清各个…...
别再只用命令行!华为防火墙USG6000V的Web界面到底怎么玩?eNSP实战演示
华为USG6000V防火墙Web界面高效操作指南:从CLI到图形化的思维转换 对于习惯了命令行操作的老牌网络工程师来说,第一次接触华为USG6000V防火墙的Web管理界面时,往往会陷入一种矛盾心理——既惊叹于可视化操作的直观,又担心图形化界…...
基于模拟退火算法优化的最小二乘支持向量机(SA-LSSVM)数据分类预测及Matlab代码实现...
基于模拟退火算法优化最小二乘支持向量机(SA-LSSVM)的数据分类预测 SA-LSSVM数据分类 matlab代码,采用交叉验证抑制过拟合问题注:采用交叉验证在一定程度上抑制了过拟合问题。 注:要求 Matlab 2018B 版本及以上最近在搞分类预测的项目&#x…...
LFM2.5-1.2B-Thinking-GGUF部署教程:解决‘返回为空’问题的max_tokens调优策略
LFM2.5-1.2B-Thinking-GGUF部署教程:解决返回为空问题的max_tokens调优策略 1. 模型简介与部署准备 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,特别适合在资源有限的环境中快速部署使用。这个模型采用GGUF格式和llama.cpp运行时&…...
Winhance:重塑Windows体验的系统优化与个性化解决方案
Winhance:重塑Windows体验的系统优化与个性化解决方案 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. PowerShell GUI application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi…...
Python 正则表达式详解:从原理到实践
Python 正则表达式详解:从原理到实践 1. 背景与动机 正则表达式(Regular Expression)是一种用于匹配字符串中字符组合的模式,它在文本处理、数据提取、验证等场景中发挥着重要作用。Python 的 re 模块提供了对正则表达式的支持&am…...
Vivo Xplay6专用降级刷机工具AFTool|支持1.15.1/1.16.6/1.16.14等多版本线刷|含教程+驱动+工具包
温馨提示:文末有联系方式【适用机型精准说明】 本工具包专为Vivo Xplay6(型号V317A/V317K)深度适配,非Xplay6机型(含其他Vivo手机)请勿购买——不同机型Bootloader锁机制与分区结构差异极大,强行…...
