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
    +关注

    关注

    28

    文章

    1333

    浏览量

    109776
  • HDL
    HDL
    +关注

    关注

    8

    文章

    324

    浏览量

    47259

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

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

收藏 人收藏

    评论

    相关推荐

    FPGA芯片架构和资源有深入的理解,精通Verilog HDL、VHDL

    、计算机相关专业,具有良好的专业基础知识。 2.工作年限不限,有工作经验或优秀应届毕业生亦可。 3.对FPGA芯片架构和资源有深入的理解,精通Verilog HDL、VHDL编程语言,熟悉时序约束、时序分析
    发表于 09-15 15:23

    FPGA Verilog HDL有什么奇技巧?

    今天给大侠带来在FPAG技术交流群里平时讨论的问题答疑合集(九),以后还会多推出本系列,话不多说,上货。 交流问题(一) Q:Verilog 有什么奇技淫巧? A:在 Verilog 中,以下这些
    发表于 09-12 19:10

    tcp和udp的区别和联系

    一、引言 在现代网络通信中,数据传输是至关重要的。为了确保数据的可靠传输,网络协议发挥着关键作用。传输控制协议(TCP)和用户数据报协议(UDP)是两种常用的网络协议,它们在许多应用场景中发
    的头像 发表于 08-16 11:06 370次阅读

    FPGA设计中 Verilog HDL实现基本的图像滤波处理仿真

    今天给大侠带来FPGA设计中用Verilog HDL实现基本的图像滤波处理仿真,话不多说,上货。 1、用matlab代码,准备好把图片转化成Vivado Simulator识别的格式,即每行一
    发表于 05-20 16:44

    有什么好用的verilog HDL编辑工具可用?

    有什么好用的verilog HDL编辑工具可用?最好能集成实时的verilog HDL语法检测、自定义模块识别触发等功能,最好能够免费;
    发表于 04-28 11:00

    udp是什么协议?udp协议介绍

    UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,不保证数据传输的可靠性,只负责把数据包发送给目标地址。它提供了简单、高效的数据传输方式,适合对传输质量
    的头像 发表于 04-19 15:57 999次阅读

    verilog中input和output作用

    以完成各种计算和控制任务。本文将详细介绍input和output在Verilog中的作用及其使用方式。 一、input的作用及使用方式 作用 在Verilog中,input用于定义模块
    的头像 发表于 02-23 10:29 2349次阅读

    verilog调用模块端口对应方式

    Verilog是一种硬件描述语言(HDL),广泛应用于数字电路设计和硬件验证。在Verilog中,模块是构建电路的基本单元,而模块端口对应方式则用于描述模块之间信号传递的方式。本文将介绍
    的头像 发表于 02-23 10:20 1191次阅读

    verilog function函数的用法

    Verilog 中被广泛用于对电路进行模块化设计,以简化和组织代码。 本文将详细介绍 Verilog 函数的用法,并探讨函数在硬件设计中的重要性和实际应用场景。 一. Verilog
    的头像 发表于 02-22 15:49 4136次阅读

    Verilog HDL数字集成电路设计方法概述

    电子发烧友网站提供《Verilog HDL数字集成电路设计方法概述.zip》资料免费下载
    发表于 02-03 09:27 2次下载

    通过HDL制作了一个4位计数组件VERILOG ,如何设置像这些标准组件这样的API?

    我通过 HDL 制作了一个 4 位计数组件 VERILOG ,如何设置像这些标准组件这样的 API? 例如 counter_writeCounter ()、counter_readCounter () 的命令。
    发表于 01-25 06:06

    #2024,立Flag了嘛? #spinal HDL的基本模块结构

    ]):Unit = { SpinalVerilog(new Demo01)// 生成对应的Verilog HDL文件 } } 生成对应的Verilog HDL // Gener
    发表于 01-21 11:15

    例说Verilog HDL和VHDL区别

    Verilog和VHDL之间的区别将在本文中通过示例进行详细说明。对优点和缺点的Verilog和VHDL进行了讨论。
    的头像 发表于 12-20 09:03 2438次阅读
    例说<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>和VHDL区别

    浅谈Verilog HDL代码编写风格

    深层次的问题,对于这个行业来说可能我才是一直脚踩在门外面。所以这篇文章是写给一些刚开始学习FPGA、Verilog HDL的同学,我看过一些大神写的代码,然后尽量模仿大神写法,经过好几个大神的影响和自己
    的头像 发表于 11-20 10:04 624次阅读
    浅谈<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>代码编写风格

    Verilog HDL实用精解配套源代码

    轻松成为设计高手Verilog HDL 实用精解 配套源代码。
    发表于 10-09 06:28