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

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

3天内不再提示

Verilog HDL为门级电路建模的能力详解

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

扫码添加小助手

加入工程师交流群

门电平模型化

本章讲述Verilog HDL为门级电路建模的能力,包括可以使用的内置基本门和如何使用它们来进行硬件描述。

5.1 内置基本门

Verilog HDL中提供下列内置基本门:

1) 多输入门:

and, nand,or, nor, x o r, x n o r

2) 多输出门:

buf, not

3) 三态门:

bufif0, bufif1, notif0,notif1

4) 上拉、下拉电阻

pullup, pulldown

5) MOS开关:

cmos, nmos, pmos, rcmos, rnmos, rpmos

6) 双向开关:

tran,tranif0, tranif1, rtran, rtranif0, rt r a n i f 1

门级逻辑设计描述中可使用具体的门实例语句。下面是简单的门实例语句的格式。

g a t e _ t y p e[i n s t a n c e _ n a m e] (term1, term2, . . . ,termN ) ;

注意,i n s t a n c e _ n a m e是可选的;g a t e _ t y p e为前面列出的某种门类型。各 term用于表示与门的输入/输出端口相连的线网或寄存器

同一门类型的多个实例能够在一个结构形式中定义。语法如下 :

g a t e _ t y p e

[i n s t a n c e _ n a m e 1] (term11, term12, . . .,term1N ) ,

[i n s t a n c e _ n a m e 2] (term21, term22, . . .,term2N ) ,

. . .

[i n s t a n c e _ n a m e M] (termM1, termM2, . . .,termMN ) ;

6d82a71e-7c77-11eb-8b86-12bb97331649.png

5.2 多输入门

内置的多输入门如下:

and nand nor or xor xnor

这些逻辑门只有单个输出, 1个或多个输入。多输入门实例语句的语法如下:

m u l t i p l e _ i n p u t _ g a t e _ t y p e

[i n s t a n c e _ n a m e] (OutputA, Input1, Input2, . . .,InputN ) ;

第一个端口是输出,其它端口是输入。如图5 - 1所示。

下面是几个具体实例。图5 - 2为对应的逻辑图。

and A 1(Out1, In1, In2 ) ;

a n d R B X (Sty, Rib, Bro, Qit, Fix ) ;

x o r (Bar, Bud[ 0 ] ,B u d[1], B u d[ 2 ] ) ,

(Car, Cut[0], C u t[ 1 ] ) ,

(Sar, Sut[2], S u t[1], S u t[0], S u t[ 3 ] ) ;

6dd33a1c-7c77-11eb-8b86-12bb97331649.png

第一个门实例语句是单元名为 A 1、输出为O u t 1、并带有两个输入I n 1和I n 2的两输入与门。第二个门实例语句是四输入与门,单元名为 R B X,输出为S t y,4个输入为R i b、B ro、Q i t和F i x。第三个门实例语句是异或门的具体实例,没有单元名。它的输出是 B a r,三个输入分别为B u d[ 0 ]、B u d[ 1 ]和B u d[ 2 ]。同时,这一个实例语句中还有两个相同类型的单元。下面是这些门的真值表。注意在输入端的 z与对x的处理方式相同;多输入门的输出决不能是z。

5.3 多输出门

多输出门有:

buf not

这些门都只有单个输入,一个或多个输出。如图 5 - 3所示。这些门的实例语句的基本语法如下:

m u l t i p l e _ o u t p u t _ g a t e _ t y p e

[i n s t a n c e _ n a m e] (Out1, Out2, . . . OutN ,InputA ) ;

最后的端口是输入端口,其余的所有端口为输出端口。

6e78aaa6-7c77-11eb-8b86-12bb97331649.png

例如:

b u f B 1 (Fan [ 0 ],Fan [ 1 ],Fan [ 2 ],Fan [ 3 ],C l k);

n o t N 1 (P h A,P h B,R e a d y);

在第一个门实例语句中,C l k是缓冲门的输入。门B 1有4个输出:F a n[ 0 ]到F a n[ 3 ]。在第二个门实例语句中,R e a d y是非门的唯一输入端口。门N 1有两个输出:P h A和P h B。这些门的真值表如下:

6ec2fbb0-7c77-11eb-8b86-12bb97331649.png

5.4 三态门

三态门有:

bufif0 bufif1 notif0 notif1

这些门用于对三态驱动器建模。这些门有一个输出、一个数据输入和一个控制输入。三态门实例语句的基本语法如下:

t r i s t a t e _ g a t e[i n s t a n c e _ n a m e] (OutputA, InputB,ControlC ) ;

第一个端口O u t p u t A是输出端口,第二个端口 I n p u t B是数据输入, C o n t ro l C是控制输入。参见图5 - 4。根据控制输入,输出可被驱动到高阻状态,即值 z。对于b u f i f 0,若通过控制输入为1,则输出为z;否则数据被传输至输出端。对于 b u f i f 1,若控制输入为0,则输出为z。对于n o t i f 0,如果控制输出为 1,那么输出为 z;否则输入数据值的非传输到输出端。对于 n o t i f 1,若控制输入为0;则输出为z。

例如:

bufif1BF1 (D b u s,M e m D a t a,S t r o b e);

n o t i f 0 N T 2 (Addr, Abus, Probe ) ;

当Strobe为0时,bufif1门B F 1驱动输出D b u s为高阻;否则Mem Data被传输至D b us。在第2个实例语句中,当P ro b e为1时,A d d r为高阻;否则Abus的非传输到Addr。

6f0e3b16-7c77-11eb-8b86-12bb97331649.png

下面是这些门的真值表。表中的某些项是可选项。例如, 0 /z表明输出根据数据的信号强度和控制值既可以为0也可以为z。

5.5 上拉、下拉电阻

上拉、下拉电阻有:

pullup pulldown

这类门设备没有输入只有输出。上拉电阻将输出置为 1。下拉电阻将输出置为 0。门实例语句形式如下:

pull _ gate[i n s t a n c e _ n a m e] (out putA) ;

门实例的端口表只包含1个输出。例如:

pullupPUP (P w r) ;

此上拉电阻实例名为P U P,输出P w r置为高电平1。

5.6 MOS开关

M O S开关有:

cmos pmos nmos rcmos rpmos rnmos

这类门用来为单向开关建模。即数据从输入流向输出,并且可以通过设置合适的控制输入关闭数据流。

pmos ( p类型M O S管)、nmos( n类型M O S管),rnmos( r代表电阻)和r p m o s开关有一个输出、一个输入和一个控制输入。实例的基本语法如下:

g a t e _ t y p e[i n s t a n c e _ n a m e] (OutputA, InputB, ControlC ) ;

第一个端口为输出,第二个端口是输入,第三个端口是控制输入端。如果 n m o s和r n m o s开关的控制输入为0,p m o s和r p m o s开关的控制为1,那么开关关闭,即输出为 z;如果控制是1,输入数据传输至输出;如图 5 - 5所示。与n m o s和p m o s相比,r n m o s和r p m o s在输入引线和输出引线之间存在高阻抗(电阻)。因此当数据从输入传输至输出时,对于 r p m o s和r m o s,存在数据信号强度衰减。

70f75ef8-7c77-11eb-8b86-12bb97331649.png

例如:

pmos P 1 (BigBus, SmallBus, GateControl ) ;

rnmos R N 1 (ControlBit, ReadyBit, Hold ) ;

第一个实例为一个实例名为 P 1 的p m o s开关。开关的输入为smallbus输出为bigbus,控制信号为Gate Control。

这些开关的真值表如下所示。表中的某些项是可选项。例如, 1 /z表明,根据输入和控制信号的强度,输出既可以为1,也可以为z。

c m o s ( m o s求补)和r c m o s ( c m o s的高阻态版本)开关有一个数据输出,一个数据输入和两个控制输入。这两个开关实例语句的语法形式如下:

(r)cmos [i n s t a n c e _ n a m e]

(OutputA, InputB, NControl, PControl);

第一个端口为输出端口,第二个端口为输入端口,第三个端口为n通道控制输入,第四个端口为是 P通道控制输入。c m o s ( r c m o s )开关行为与带有公共输入、输出的 p m o s

(r p m o s)和n m o s ( r n m o s )开关组合十分相似。参见图5 - 6。

71393d8c-7c77-11eb-8b86-12bb97331649.png

5.7 双向开关

双向开关有:

tran rtran tranif0 rtranif0 tranif1 rtranif1

这些开关是双向的,即数据可以双向流动,并且当数据在开关中传播时没有延时。后 4个开关能够通过设置合适的控制信号来关闭。t r a n和r t r a n开关不能被关闭。

t r a n或r t r a n ( t r a n 的高阻态版本)开关实例语句的语法如下:

( r ) t r a n [i n s t a n c e _ n a m e] (SignalA, SignalB) ;

端口表只有两个端口,并且无条件地双向流动,即从 S i g n a l A向S i g n a l B,反之亦然。其它双向开关的实例语句的语法如下:

g a t e _ t y p e[i n s t a n c e _ n a m e] (SignalA, SignalB, ControlC ) ;

前两个端口是双向端口,即数据从 S i g n a l A流向S i g n a l B,反之亦然。第三个端口是控制信号。如果对 t r a n i f 0和t r a n i f 0,controlC是1;对t r a n i f 1和r t r a n i f 1,contorlC是0;那么禁止双向数据流动。对于 r t r a n、r t r a n i f 0和r t r a n i f 1,当信号通过开关传输时,信号强度减弱。

5.8 门时延

可以使用门时延定义门从任何输入到其输出的信号传输时延。门时延可以在门自身实例语句中定义。带有时延定义的门实例语句的语法如下:

gate_type [d e l a y] [i n s t a n c e _ n a m e] (t e r m i n a l _ l i s t) ;

时延规定了门时延,即从门的任意输入到输出的传输时延。当没有强调门时延时,缺省的时延值为0。

门时延由三类时延值组成:

1) 上升时延

2) 下降时延

3) 截止时延

门时延定义可以包含 0个、1个、2个或3个时延值。下表为不同个数时延值说明条件下,各种具体的时延取值情形。

71b265c2-7c77-11eb-8b86-12bb97331649.png

注意转换到x的时延( t o _ x )不但被显式地定义,还可以通过其它定义的值决定。下面是一些具体实例。注意 Verilog HDL模型中的所有时延都以单位时间表示。单位时间与实际时间的关联可以通过` t i m e s c a l e编译器指令实现。在下面的实例中 ,

n o t N 1 (Qbar, Q) ;

因为没有定义时延,门时延为0。下面的门实例中,

n a n d #6 (Out, In1, In2) ;

所有时延均为6,即上升时延和下降时延都是 6。因为输出决不会是高阻态,截止时延不适用于与非门。转换到x的时延也是6。

a n d #(3,5) (Out, In1, In2, In3 ) ;

在这个实例中,上升时延被定义为 3,下降时延为5,转换到x的时延是3和5中间的最小值,即3。在下面的实例中,

n o t i f 1 #(2,8,6) (Dout, Din1, Din2 ) ;

上升时延为2,下降时延为8,截止时延为6,转换到x的时延是2、8和6中的最小值,即2。对多输入门(例如与门和非门)和多输出门 (缓冲门和非门 )总共只能够定义 2个时延(因为输出决不会是 z)。三态门共有 3个时延,并且上拉、下拉电阻实例门不能有任何时延。

minmax时延形式

门延迟也可采用m i n : t y p : m a x形式定义。形式如下:

minimum: typical: maximum

最小值、典型值和最大值必须是常数表达式。下面是在实例中使用这种形式的实例。

n a n d #(24, 57) ( Pout, Pin1, Pin2 ) ;

选择使用哪种时延通常作为模拟运行中的一个选项。例如,如果执行最大时延模拟,与

非门单元使用上升时延4和下降时延7。程序块也能够定义门时延。

5.9 实例数组

当需要重复性的实例时,在实例描述语句中能够有选择地定义范围说明 (范围说明也能够在模块实例语句中使用)。这种情况的门描述语句的语法如下:

g a t e _ t y p e [d e l a y]instance_name [l e f t b o u n d : r i g h t b o u n d]

(l i s t _ o f _ t e r m i n a l _ n a m e s) ;

l e f t b o u n d和r i g h t b o u n d值是任意的两个常量表达式。左界不必大于右界,并且左、右界两者都不必限定为0。示例如下。

w i r e [3:0] Out, InA, InB ;

. . .

n a n d G a n g [3:0] (Out, InA, InB ) ;

带有范围说明的实例语句与下述语句等价:

n a n d

Gang3 (O u t[3], I n A[3], I n B[ 3 ] ) ,

G a n g 2 (O u t[2], I n A[2], I n B[ 2 ] ) ,

G a n g 1 (O u t[ 1 ] , I n A[1], I n B[ 1 ] ) ,

Gang0 (O u t[0], I n A[ 0 ] , I n B[ 0 ] ) ;

注意定义实例数组时,实例名称是不可选的。

5.10 隐式线网

如果在Verilog HDL模型中一个线网没有被特别说明,那么它被缺省声明为 1位线网。但是` d e f a u l t _ n e t t y p e编译指令能够用于取代缺省线网类型。编译指令格式如下:

` d e f a u l t _ n e t t y p e n e t _ t y p e

例如:

`default_nettype wand

根据此编译指令,所有后续未说明的线网都是 w a n d类型。

` d e f a u l t _ n e t t y p e编译指令在模块定义外出现,并且在下一个相同编译指令或 ` re s e t a l l编译指令出现前一直有效。

5.11 简单示例

下面是图5 - 7中4 - 1多路选择电路的门级描述。注意因为实例名是可选的 (除用于实例数组

情况外),在门实例语句中没有指定实例名。

725c23aa-7c77-11eb-8b86-12bb97331649.png

如果或门实例由下列的实例代替呢 ?

o r Z (Z , T 0 , T 1 , T 2 , T 3); //非法的Verilog HDL表达式。注意实例名还是Z,并且连接到实例输出的线网也是 Z。这种情况在Verilog HDL中是不允许的。在同一模块中,实例名不能与线网名相同。

5.12 2-4解码器举例

图5 - 8中显示的2 - 4解码器电路的门级描述如下:

732adf60-7c77-11eb-8b86-12bb97331649.png

5.13 主从触发器举例

图5 - 9所示的主从D触发器的门级描述如下:

73b7d94c-7c77-11eb-8b86-12bb97331649.png

5.14 奇偶电路

图5 - 1 0所示的9位奇偶发生器门级模型描述如下:

746e5fe6-7c77-11eb-8b86-12bb97331649.png

原文标题:verilog入门- 门电平模型化

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

责任编辑:haq

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

    关注

    173

    文章

    6087

    浏览量

    178878
  • Verilog
    +关注

    关注

    31

    文章

    1374

    浏览量

    114730
  • HDL
    HDL
    +关注

    关注

    8

    文章

    332

    浏览量

    49051

原文标题:verilog入门- 门电平模型化

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ATX电源电路分析详解开关电源的原理

    ATX电源电路分析详解开关电源的原理,WORD版,图文并茂,详细说明各个元件在电路中的作用。适合初学者
    发表于 03-29 16:47 3次下载

    74LVC32 四 2 输入或:特性与应用详解

    74LVC32 四 2 输入或:特性与应用详解 在电子电路设计中,逻辑是构建复杂电路的基础组件。今天我们要深入探讨的是 SGMICRO
    的头像 发表于 03-13 16:00 515次阅读

    【参赛必读】紫光同创初赛能力测评操作指南详解#2026集创赛

    ,专注创新!便于大家顺利通过初赛能力测评,我们在逻辑矩阵技术论坛部署了远程环境,本文将为大家详解能力测评操作指南,助力各参赛队伍顺利通关,高效完成测评。赛题发布|芯
    的头像 发表于 03-06 08:04 1101次阅读
    【参赛必读】紫光同创初赛<b class='flag-5'>能力</b>测评操作指南<b class='flag-5'>详解</b>#2026集创赛

    Verilog HDL语法学习笔记

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

    汽车多功能执行器驱动器L99DZ80EP深度解析

    汽车多功能执行器驱动器L99DZ80EP深度解析 在汽车电子领域,执行器驱动器的性能和可靠性至关重要。今天我们要深入探讨的L99DZ80EP,就是一款专为汽车应用设计的微控制器驱动多功能
    的头像 发表于 03-02 15:25 259次阅读

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

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

    HT4125低压CMOS缓冲器件详解

          在便携式电子设备、工业控制及汽车电子等领域,器件的电压适配性、电平转换稳定性与低功耗性能直接决定了产品的可靠性和续航能力。HT4125作为一款专为低压场景设计的CMOS缓冲器件,凭借其
    的头像 发表于 12-22 15:26 450次阅读
    HT4125低压CMOS缓冲<b class='flag-5'>门</b>器件<b class='flag-5'>详解</b>

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

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

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

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

    边聊安全 | 以L3自动驾驶例,详解DDT、DDT Fallback、MRC、MRM概念

    以L3自动驾驶例,详解DDT、DDTFallback、MRC、MRM概念写在前面:在自动驾驶技术迅猛发展的今天,动态驾驶任务(DDT)及其后备(DDTfallback)成为理解自动驾驶系统运作
    的头像 发表于 09-05 16:20 5235次阅读
    边聊安全 | 以L3<b class='flag-5'>级</b>自动驾驶<b class='flag-5'>为</b>例,<b class='flag-5'>详解</b>DDT、DDT Fallback、MRC、MRM概念

    明晚开播 |数据智能系列讲座第7期:面向高泛化能力的视觉感知系统空间建模与微调学习

    鹭岛论坛数据智能系列讲座第7期「面向高泛化能力的视觉感知系统空间建模与微调学习」明晚8点精彩开播期待与您云相聚,共襄学术盛宴!|直播信息报告题目面向高泛化能力的视觉感知系统空间建模与微
    的头像 发表于 06-24 08:01 1225次阅读
    明晚开播 |数据智能系列讲座第7期:面向高泛化<b class='flag-5'>能力</b>的视觉感知系统空间<b class='flag-5'>建模</b>与微调学习

    VirtualLab Fusion应用:Herriott池的建模

    处的反射  通过孔的传播  探测器 在我们的例子中,光束足够窄,不会与整个孔相互作用,因此,函数方法就足够了。 孔 第一反射镜上的孔建模一个理想的透射光栅,定义在一个圆形区域中,只有0透射
    发表于 06-11 08:52

    直播预约 |数据智能系列讲座第7期:面向高泛化能力的视觉感知系统空间建模与微调学习

    建模与微调学习报告简介构建高效、物理一致且具备良好泛化能力的视觉感知系统,是视觉智能、边缘计算与具身机器人中的关键挑战。提升系统的泛化与适应能力,一类方法致力于构
    的头像 发表于 05-29 10:04 751次阅读
    直播预约 |数据智能系列讲座第7期:面向高泛化<b class='flag-5'>能力</b>的视觉感知系统空间<b class='flag-5'>建模</b>与微调学习

    索尼FCB-ER8530:三维建模与视觉感知的跨界融合

    的“视觉基石”  三维建模依赖高精度视觉数据实现虚拟场景重构,而索尼FCB-ER8530的4K分辨率(3840×2160)与20倍光学变焦能力建模提供毫米
    的头像 发表于 05-19 17:30 737次阅读