【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
		/*在这里定义输入与输出的的关系*/
	endtable

endprimitive

① 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	:	q
		0	?	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 = 0
                input d, clock, clear);
	initial q = 0; 	// 锁存器的初始值为 0
	table  
		//	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=0
                    input 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 符号表


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Java核心技术I》Swing中滚动窗格

滚动窗格 Swing中文本区没有滚动条&#xff0c;如需要&#xff0c;可以将文本区放在 滚动窗格(scrollpane)中。 textArea new JTextArea(8,40); var scrollPane new JScrollPane(textArea); 添加到滚动窗格不是文本区特有的&#xff0c;所有组件都可以。 注释&#xff1a;JTe…

Node.js day-01

01.Node.js 讲解 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端…

排序算法(7):堆排序

问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 堆排序 堆排序是一种基于堆数据结构的排序算法。堆是一个近似完全二叉树的结构&#xff0c;即除了最后一层外&#xff0c;每一层都必须填满&#xff0c;且最后一层从左往右填充。 堆可以分为大根堆和小根堆。在大根堆中&…

操作系统如何管理进程所用的资源

PCB 操作内核的作用 进程与模式的切换 软中断——相当于审核——审核有没有访问权限什么的 操作系统以什么方式提供服务&#xff1f; 进程的创建和终止 线程 七状态图&#xff0c;挂起

罗德与施瓦茨NRP33SN,一款独立、特性齐全的功率探头

罗德与施瓦茨NRP33SN功率探头概述 ROHDE & SCHWARZ NRP33S 三路二极管功率传感器 罗德与施瓦茨 NRP33S 三路二极管功率传感器是一款独立 、特性齐全的仪器。它们可以通过罗德与施瓦茨 NRP2 基 本单元、通过 USB 的笔记本电脑/PC 以及许多罗德与施瓦 茨仪器&#xff08;例如…

uniapp自定义树型结构数据弹窗,给默认选中的节点,禁用所有子节点

兼容H5、安卓App、微信小程序 实现逻辑&#xff1a;给默认选中节点的所有子节点添加一个disabled属性&#xff0c;以此禁用子节点。 /components/sonTreeNode/sonTreeNode.vue 封装成组件 <template><view><view :class"[item,item.is_level1?pL1:item…

运维工程师面试系统监控与优化自动化与脚本云计算的理解虚拟化技术的优点和缺点

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

【GCC】2015: draft-alvestrand-rmcat-congestion-03 机器翻译

腾讯云的一个分析,明显是看了这个论文和草案的 : 最新的是应该是这个 A Google Congestion Control Algorithm for Real-Time Communication draft-ietf-rmcat-gcc-02 下面的这个应该过期了: draft-alvestrand-rmcat-congestion-03

web自动化测试知识总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、自动化测试基本介绍 1、自动化测试概述&#xff1a; 什么是自动化测试&#xff1f;一般说来所有能替代人工测试的方式都属于自动化测试&#xff0c;即通过工…

进程间通信方式---消息队列(System V IPC)

进程间通信方式—消息队列&#xff08;System V IPC&#xff09; 文章目录 进程间通信方式---消息队列&#xff08;System V IPC&#xff09;消息队列1.消息队列进程间通信原理2.msgget 系统调用3.msgsnd 系统调用4.msgrcv 系统调用5.msgctl 系统调用6.函数使用案例7.实现生产者…

python学opencv|读取图像(十七)认识alpha通道

【1】引言 前序学习进程中&#xff0c;我们已经掌握了RGB和HSV图像的通道拆分和合并&#xff0c;获得了很多意想不到的效果&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图像转HSV图像-CSDN博客 python学opencv|读…

Unity Post请求发送fromdata数据content-type

wwwfrom 的 headers["Content-Type"]修改 错误代码&#xff1a; WWWForm form new WWWForm(); if (form.headers.ContainsKey("Content-Type")) {string boundary string.Format("--{0}", DateTime.Now.Ticks.ToString("x"));form…

服务平滑发布与线上验证

发布策略可分为&#xff1a; 蓝绿发布&#xff1a;将新版本服务器全部发好后&#xff0c;将旧版本服务器的流量统一切换到新版本上灰度发布&#xff08;金丝雀发布&#xff09;&#xff1a;是一种滚动发布方式&#xff0c;首先部署部分新版本服务器&#xff0c;将部分流量切到…

【数据安全】如何保证其安全

数据安全风险 数字经济时代&#xff0c;数据已成为重要的生产要素。智慧城市、智慧政务的建设&#xff0c;正以数据为核心&#xff0c;推动城市管理的智能化和公共服务的优化。然而&#xff0c;公共数据开放共享与隐私保护之间的矛盾日益凸显&#xff0c;如何在确保数据安全的…

ai论文生成器:分享8款AI一键生成论文的写作软件

在撰写毕业论文的过程中&#xff0c;高效利用各类软件工具可以极大地提升写作效率与质量。以下是八个免费的神器软件工具&#xff0c;它们各自在论文撰写、文献管理、语法校对、数据可视化等方面发挥着重要作用。希望这些推荐能帮助你顺利完成毕业论文的写作。 千笔AI论文&…

白话AI大模型(LLM)原理

大模型&#xff08;例如 GPT-4或类似的深度学习模型&#xff09;是基于神经网络的系统&#xff0c;用于理解、生成文本、图像或其他数据类型。其工作原理可以分为以下几个核心步骤&#xff0c;我将通过易于理解的例子逐一解释。 1. 神经网络的基本概念 大模型背后有一个非常庞…

数据压缩比 38.65%,TDengine 重塑 3H1 的存储与性能

小T导读&#xff1a;这篇文章是“2024&#xff0c;我想和 TDengine 谈谈”征文活动的三等奖作品之一。作者通过自身实践&#xff0c;详细分享了 TDengine 在高端装备运维服务平台中的应用&#xff0c;涵盖架构改造、性能测试、功能实现等多个方面。从压缩效率到查询性能&#x…

【Prometheus 】【实战篇(四)】Node Exporter安装方式(含一键安装脚本)及重要监控指标一览

目录 一、Node Exporter 1.8.2安装步骤详解1、下载 Node Exporter 安装包2、解压下载的文件3、将 Node Exporter 移动到 /usr/local/bin/4、创建一个专用的系统用户5、创建 systemd 服务文件6、重新加载 systemd 配置7、启动并启用 Node Exporter 服务8、检查 Node Exporter 状…

Qt之串口设计-线程实现(十二)

Qt开发 系列文章 - Serial-port&#xff08;十二&#xff09; 目录 前言 一、SerialPort 二、实现方式 1.创建类 2.相关功能函数 3.用户使用 4.效果演示 5.拓展应用-实时刷新 总结 前言 Qt作为一个跨平台的应用程序开发框架&#xff0c;在串口编程方面提供了方便易用…

信号处理相关的东东(学习解惑)

信号处理相关的东东&#xff08;学习解惑&#xff09; 所有内容学习自知乎专栏&#xff0c;https://www.zhihu.com/column/xinhao&#xff0c;写的很好&#xff0c;值得反复学习 时频域分析的一些常用概念 FROM&#xff1a;https://zhuanlan.zhihu.com/p/35742606 1、相加性…