0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog HDL指定用户定义原语UDP的能力介绍

电子工程师 来源:FPGA设计论坛 作者:FPGA设计论坛 2021-03-05 15:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

用户定义的原语

在前一章中,我们介绍了Verilog HDL提供的内置基本门。本章讲述Verilog HDL指定用户定义原语U D P的能力。

U D P的实例语句与基本门的实例语句完全相同,即 U D P实例语句的语法与基本门的实例语句语法一致。

6.1 UDP的定义

使用具有如下语法的U D P说明定义U D P。

p r i m i t i v e U D P _ n a m e (OutputName, List_of_inputs )

O u t p u t _ d e c l a r a t i o n

L i s t _ o f _ i n p u t _ d e c l a r a t i o n s

[R e g _ d e c l a r a t i o n]

[I n i t i a l _ s t a t e m e n t]

t a b l e

L i s t _ o f _ t a b e l _ e n t r i e s

e n d t a b l e

e n d p r i m i t i v e

U D P的定义不依赖于模块定义,因此出现在模块定义以外。也可以在单独的文本文件中

定义U D P。U D P只能有一个输出和一个或多个输入。第一个端口必须是输出端口。此外,输出可以取值0、1或x(不允许取z值)。输入中出现值z以x处理。U D P的行为以表的形式描述。在U D P中可以描述下面两类行为:

1) 组合电路

2) 时序电路(边沿触发和电平触发)

6.2 组合电路UDP

在组合电路U D P中,表规定了不同的输入组合和相对应的输出值。没有指定的任意组合输出为x。下面以2 - 1多路选择器为例加以说明。

p r i m i t i v e MUX2x1 (Z, Hab, Bay, Sel ) ;

o u t p u t Z;

i n p u t Hab,Bay, Sel;

t a b l e

// Hab Bay Sel : Z 注:本行仅作为注释。

0 ? 1 : 0 ;

1 ? 1 : 1 ;

? 0 0 : 0 ;

? 1 0 : 1 ;

0 0 x : 0 ;

1 1 x : 1 ;

e n d t a b l e

e n d p r i m i t i v e

字符?代表不必关心相应变量的具体值,即它可以是0、1或x。输入端口的次序必须与表中各项的次序匹配,即表中的第一列对应于原语端口队列的第一个输入 (例子中为 H a b),第二列是 B a y,第三列是 S e l。在多路选择器的表中没有输入组合 0 1x项(还有其它一些项 );在这种情况下,输出的缺省值为 x(对其它未定义的项也是如此 )。

5bd729e0-7c77-11eb-8b86-12bb97331649.png

图6 - 1为使用2 - 1多路选择器原语组成的4 - 1多路选择器的示例。

如上例所示,在U D P实例中,总共可以指定 2个时延,这是由于U D P的输出可以取值0、1或x(无截止时延)。

6.3 时序电路UDP

在时序电路U D P中,使用1位寄存器描述内部状态。该寄存器的值是时序电路U D P的输出值。共有两种不同类型的时序电路U D P:一种模拟电平触发行为;另一种模拟边沿触发行为。时序电路U D P使用寄存器当前值和输入值决定寄存器的下一状态 (和后继的输出)。

6.3.1 初始化状态寄存器

时序电路U D P的状态初始化可以使用带有一条过程赋值语句的初始化语句实现。形式如下:

i n i t i a l r e g _ n a m e = 0,1,or x;

初始化语句在U D P定义中出现。

6.3.2 电平触发的时序电路UDP

下面是D锁存器建模的电平触发的时序电路 U D P示例。只要时钟为低电平 0,数据就从输入传递到输出;否则输出值被锁存。

p r i m i t i v e Latch (Q, Clk, D) ;

o u t p u t Q;

r e g Q;

i n p u t Clk, D;

t a b l e

// Clk D Q(State) Q( n e x t )

0 1 : ? : 1 ;

0 0 : ? : 0 ;

1 ? : ? : - ;

e n d t a b l e

e n d p r i m i t i v e

“-”字符表示值“无变化”。注意U D P的状态存储在寄存器D中。

6.3.3 边沿触发的时序电路UDP

下例用边沿触发时序电路U D P为D边沿触发触发器建模。初始化语句用于初始化触发器的状态。

表项( 0 1 )表示从0转换到1,表项( 0 x )表示从0转换到x,表项( ? 0 )表示从任意值( 0 , 1或x)转换到0,表项( ? ? )表示任意转换。对任意未定义的转换,输出缺省为 x。

假定D _ E d g e _ F F为U D P定义,它现在就能够象基本门一样在模块中使用,如下面的 4位寄存器所示。

6.3.4 边沿触发和电平触发的混合行为

在同一个表中能够混合电平触发和边沿触发项。在这种情况下,边沿变化在电平触发之前处理,即电平触发项覆盖边沿触发项。下例是带异步清空的D触发器的U D P描述。

6.4 另一实例

下面是3位表决电路的U D P描述。如果输入向量中存在2个或更多的1,则输出为1。

6.5 表项汇总

原文标题:Verilog入门-用户定义的原语

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    31

    文章

    1374

    浏览量

    114718
  • HDL
    HDL
    +关注

    关注

    8

    文章

    332

    浏览量

    49044

原文标题:Verilog入门-用户定义的原语

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Verilog HDL语法学习笔记

    Verilog HDL 语 言 最 初 是 作为 Gateway Design Automation 公 司 ( Gateway DesignAutomation 公司后来被著名的 Cadence Design Systems 公司收购)模拟器产品开发的硬件建模语言。
    的头像 发表于 03-04 15:04 5773次阅读
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>语法学习笔记

    RDMA设计46:RoCE v2原语功能:单边语义

    本博文主要交流设计思路,在本博客已给出相关博文约170篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 续上,为便于查看,给出表1部分表1 RoCE v2原语功能
    发表于 03-01 23:14

    零知IDE——基于STM32与W5500的UDP通信实现温湿度监控

    本文详细介绍了一个基于零知增强板(STM32F407VET6)和W5500以太网模块的UDP通信温湿度监控系统。系统通过DHT11传感器采集数据,通过W5500实现UDP通信,支持远程LED控制
    的头像 发表于 02-28 15:26 1685次阅读
    零知IDE——基于STM32与W5500的<b class='flag-5'>UDP</b>通信实现温湿度监控

    FPGA 入门必看:Verilog 与 VHDL 编程基础解析!

    很多开发者第一次接触FPGA,都会有同样的疑问:FPGA是硬件,不是软件,怎么写程序?答案就是用硬件描述语言(HDL),最常用的就是Verilog和VHDL。今天,我们就带你入门,搞清楚FPGA编程
    的头像 发表于 01-19 09:05 708次阅读
    FPGA 入门必看:<b class='flag-5'>Verilog</b> 与 VHDL 编程基础解析!

    新突破!AI企业Anthropic将开发者工具核心能力下放至普通用户

    电子发烧友网报道 当地时间1月12日,AI巨头Anthropic正式发布新工具“Cowork”,意图将开发者工具的核心能力下放至普通用户,重新定义人机协作边界。   Claude Cowork:从
    的头像 发表于 01-13 14:43 5279次阅读

    TCP和UDP的区别

    首先概括一下基本的区别: TCP是一个面向连接的、可靠的、基于字节流的传输层协议。 而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。 具体来分析,和 UDP
    发表于 12-09 07:24

    堆栈的定义,堆栈的使用方法

    堆栈的定义 堆栈也是用户使用的存储器的一部分,用于存放临时性的数据和一些其他信息。堆栈段的定义语法如下: 堆栈名SEGMENTSTACK (堆栈内容) 堆栈名ENDS 语法解释: 堆栈
    发表于 11-21 06:49

    【产品介绍】Modelsim:HDL语言仿真软件

    概述ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核
    的头像 发表于 11-13 11:41 681次阅读
    【产品<b class='flag-5'>介绍</b>】Modelsim:<b class='flag-5'>HDL</b>语言仿真软件

    ZeroNews basic auth policy: 0代码为你的HTTP站点追加安全可控的基本权限验证能力

    basic auth (基本权限验证)是HTTP标准协议在 RFC 7235 条中定义的一层基本权限控制规范,当外部请求访问设定了basic auth 规则的站点或者url时,会强制要求输入指定
    的头像 发表于 11-04 18:27 2005次阅读
    ZeroNews basic auth policy: 0代码为你的HTTP站点追加安全可控的基本权限验证<b class='flag-5'>能力</b>

    NucleiStudio如何生成.verilog文件和.dasm文件,以及对.dasm文件中自定义指令反汇编结果分析

    硬件设计需要.verilog文件来运行加NICE后的tb仿真、软件组需要.dasm来确定自定义指令有无被正确编译。今天,我们来分享一下NucleiStudio如何生成.verilog文件和.dasm
    发表于 10-24 06:33

    如何利用Verilog HDL在FPGA上实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDL在FPGA上实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。在FPGA中实现SRAM读写测试,包括设计SRAM接口模块
    的头像 发表于 10-22 17:21 4557次阅读
    如何利用<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>在FPGA上实现SRAM的读写测试

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    引言 想要实现浮点运算功能,如果自己写Verilog代码,需要花费较多的时间和精力。好在Simulink HDL Coder工具箱提供了自动代码生成技术。下图展示了HDL Coder如何生成浮点运算
    发表于 10-22 06:48

    第五章 W55MH32 UDP示例

    本文介绍了在 W55MH32 芯片上实现 UDP 通信及数据回环测试的方法。阐述了 UDP 协议的概念、特点、应用场景、报文传输流程和报文结构,展示了实现过程,借助网络调试工具完成测试。
    的头像 发表于 07-24 09:13 1363次阅读
    第五章 W55MH32 <b class='flag-5'>UDP</b>示例

    HarmonyOS应用自定义键盘解决方案

    增强用户输入的安全性,避免敏感信息被截取或者泄露。本文介绍了自定义键盘的实现,并结合自定义键盘和系统键盘的切换、自定义键盘的布局避让等场景,
    的头像 发表于 06-05 14:19 2612次阅读

    HarmonyOS NEXT应用开发-Notification Kit(用户通知服务)更多系统能力

    ,即指定应用的包信息。 系统能力: SystemCapability.Notification.Notification 类型 说明 _BundleOption 描述BundleOption信息,即指定
    发表于 06-04 15:43