【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…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
