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

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

3天内不再提示

Verilog HDL语言中连续赋值的特征

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

扫码添加小助手

加入工程师交流群

数据流模型化

本章讲述Verilog HDL语言中连续赋值的特征。连续赋值用于数据流行为建模;相反,过程赋值用于(下章的主题)顺序行为建模。组合逻辑电路的行为最好使用连续赋值语句建模。

7.1 连续赋值语句

连续赋值语句将值赋给线网(连续赋值不能为寄存器赋值),它的格式如下(简单形式):assignLHS_target = RHS_expression ;例如,wire [3:0] Z, Preset, Clear; // 线网说明assign Z = Preset & Clear; //连续赋值语句连续赋值的目标为 Z,表达式右端为“ Preset & Clear”。注意连续赋值语句中的关键词assign。连续赋值语句在什么时候执行呢 ?

只要在右端表达式的操作数上有事件 (事件为值的变化)发生时,表达式即被计算;如果结果值有变化,新结果就赋给左边的线网。在上面的例子中,如果 P re s e t或C l e a r变化,就计算右边的整个表达式。如果结果变化,那么结果即赋值到线网Z。连续赋值的目标类型如下:

1) 标量线网

2)。 向量线网

3) 向量的常数型位选择4) 向量的常数型部分选择5) 上述类型的任意的拼接运算结果下面是连续赋值语句的另一些例子:assgin BusErr = Parity| (One & OP) ;assign Z = ~ (A | B) & (C | D) & (E | F) ;只要A、B、C、D、E或F的值变化,最后一个连续赋值语句就执行。在这种情况下,计算右边整个表达式,并将结果赋给目标 Z。

在下一个例子中,目标是一个向量线网和一个标量线网的拼接结果。wireCout, C i n ;wire [3:0] Sum, A, B;。 。 .assign{Cout, Sum} = A + B + Cin;因为A和B是4位宽,加操作的结果最大能够产生 5位结果。左端表达式的长度指定为 5位(Cout 1位,Sum 4位)。

赋值语句因此促使右端表达式最右边的 4位的结果赋给S u m,第5位(进位位)赋给C o u t。下例说明如何在一个连续赋值语句中编写多个赋值方式。assgin M u x = (S = = 0)?

A : ‘bz, M u x = (S = = 1)?

B : ’bz, M u x = (S = = 2)?

C : ‘bz, M u x = (S = = 3)?

D : ’bz;这是下述4个独立的连续赋值语句的简化书写形式。

assign M u x = (S = = 0)? A : ‘bz;assign M u x = (S = = 1)? B : ’bz;assign M u x = (S = = 2)? C : ‘bz;assign M u x = (S = = 3)? D : ’bz;

7.2 举例

下例采用数据流方式描述1位全加器。

在本例中,有两个连续赋值语句。这些赋值语句是并发的,与其书写的顺序无关。只要连续赋值语句右端表达式中操作数的值变化 (即有事件发生), 连续赋值语句即被执行。如果 A变化,则两个连续赋值都被计算,即同时对右端表达式求值,并将结果赋给左端目标。

7.3 线网说明赋值

连续赋值可作为线网说明本身的一部分。这样的赋值被称为线网说明赋值。例如 :wire [3:0] S u m = 4‘b0;wire C l e a r = ’b1;wire A _ G T _ B = A 》 B, B_GT_A= B 》 A;线网说明赋值说明线网与连续赋值。说明线网然后编写连续赋值语句是一种方便的形式。参见下例。wire Clear;assign Clear= ‘b1;等价于线网声明e赋值:wire Clear= ’b1;不允许在同一个线网上出现多个线网说明赋值。如果多个赋值是必需的,则必须使用连续赋值语句。

7.4 时延

如果在连续赋值语句中没有定义时延,如前面的例子,则右端表达式的值立即赋给左端表达式, 时延为0。如下例所示显式定义连续赋值的时延。assign #6 Ask = Quiet | | L a t e;规定右边表达式结果的计算到其赋给左边目标需经过 6个时间单位时延。例如,如果在时刻5,L a t e值发生变化,则赋值的右端表达式被计算,并且 A s k在时刻11( = 5 +6)被赋于新值。图7 - 1举例说明了时延概念。

2dff7374-7c77-11eb-8b86-12bb97331649.png

如果右端在传输给左端之前变化,会发生什么呢?在这种情况下,应用最新的变化值。下例显示了这种行为:assign #4 Cab = Drm;图7 - 2显示了这种变化的效果。右端发生在时延间隔内的变化被滤掉。例如,在时刻 5,Dr m的上升边沿预定在时刻9显示在Cab上,但是因为Drm在时刻8下降为0,预定在Cab上的值被删除。同样, Drm在时刻1 8和2 0之间的脉冲被滤掉。这也同样适用于惯性时延行为:即右端值变化在能够传播到左端前必须至少保持时延间隔;如果在时延间隔内右端值变化,则前面的值不能传输到输出。

2e69f7da-7c77-11eb-8b86-12bb97331649.png

对于每个时延定义,总共能够指定三类时延值:1) 上升时延2) 下降时延3) 关闭时延这三类时延的语法如下:

在第一个赋值语句中,上升时延、下降时延、截止时延和传递到 x的时延相同,都为 4。在第二个语句中,上升时延为4,下降时延为8,传递到x和z的时延相同,是4和8中的最小值,即4。在第3个赋值中,上升时延为 4,下降时延为8,截止时延为6,传递到x的时延为4 ( 4、8和6中的最小值)。在最后的语句中,所有的时延都为 0。上升时延对于向量线网目标意味着什么呢 ? 如果右端从非0向量变化到0向量,那么就使用下降时延。如果右端值到达z,那么使用下降时延;否则使用上升时延。

7.5 线网时延

时延也可以在线网说明中定义,如下面的说明。wire #5 A r b;这个时延表明A r b驱动源值改变与线网A r b本身间的时延。考虑下面对线网 A r b的连续赋值语句:

assign # 2 Arb = Bod & Cap;

2ef9ce6e-7c77-11eb-8b86-12bb97331649.png

假定在时刻1 0,B o d上的事件促使右端表达式计算。如果结果不同,则在 2个时间单位后赋值给 A r b,即时刻1 2。但是因为定义了线网时延,实际对 A r b的赋值发生在时刻17( = 10 + 2 + 5)。图7 - 3的波形举例说明了不同的时延。图7 - 4很好地描述了线网时延的效果。首先使用赋值时延,然后增加任意线网时延。如果时延在线网说明赋值中出现,那么时延不是线网时延,而是赋值时延。下面是 A的线网说明赋值,2个时间单位是赋值时延,而不是线网时延。w i r e #2 A = B - C; // 赋值时延

7.6 举例

7.6.1 主从触发器

下面是图5 - 9所示的主从触发器的Verilog HDL模型。

7.6.2 数值比较器

下面是8位(参数定义的)数值比较器数据流模型。

原文标题:Verilog入门-数据流模型化

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

责任编辑:haq

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

    关注

    30

    文章

    1370

    浏览量

    114140
  • HDL
    HDL
    +关注

    关注

    8

    文章

    331

    浏览量

    48813

原文标题:Verilog入门-数据流模型化

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    第4章 C语言基础以及流水灯的实现(4.3 4.4)

    4.3 C语言基本运算符 小学数学学过加、减、乘、除等运算符号以及四则混合运算,而这些运算符号在C语言中也有,但是有些表达方法不一样,并且还有额外的运算符号。在C语言编程中,加、减、乘、除和取余数
    的头像 发表于 10-29 15:30 181次阅读

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

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

    Windows环境下32位汇编语言中文资料

    电子发烧友网站提供《Windows环境下32位汇编语言中文资料.rar》资料免费下载
    发表于 06-30 15:14 0次下载

    在testbench中如何使用阻塞赋值和非阻塞赋值

    本文详细阐述了在一个testbench中,应该如何使用阻塞赋值与非阻塞赋值。首先说结论,建议在testbench中,对时钟信号(包括分频时钟)使用阻塞赋值,对其他同步信号使用非阻塞赋值
    的头像 发表于 04-15 09:34 1007次阅读
    在testbench中如何使用阻塞<b class='flag-5'>赋值</b>和非阻塞<b class='flag-5'>赋值</b>

    FPGA Verilog HDL语法之编译预处理

    Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL
    的头像 发表于 03-27 13:30 1088次阅读
    FPGA <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>语法之编译预处理

    一文详解Verilog HDL

    Verilog HDL(Hardware Description Language)是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。现实生活中多用于专用集成电路
    的头像 发表于 03-17 15:17 3780次阅读
    一文详解<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>

    浅谈Verilog和VHDL的区别

    Verilog和VHDL是两种广泛使用的硬件描述语言HDL),它们用于描述和模拟数字电路系统的行为和结构。这两种语言的主要作用是帮助工程师设计、仿真和验证集成电路(IC)和系统级芯片
    的头像 发表于 02-17 14:20 2630次阅读
    浅谈<b class='flag-5'>Verilog</b>和VHDL的区别

    数字电路编程语言介绍

    数字电路编程语言是专门为描述和模拟数字电路而设计的编程语言。它们通常具有以下特点: 硬件描述语言HDL) :大多数数字电路编程语言都是硬件
    的头像 发表于 01-24 09:39 1392次阅读

    EE-62:在C语言中访问短字内存

    电子发烧友网站提供《EE-62:在C语言中访问短字内存.pdf》资料免费下载
    发表于 01-07 14:02 0次下载
    EE-62:在C<b class='flag-5'>语言中</b>访问短字内存

    EE-128:C语言中的DSP:从C调用汇编类成员函数

    电子发烧友网站提供《EE-128:C语言中的DSP:从C调用汇编类成员函数.pdf》资料免费下载
    发表于 01-07 13:48 0次下载
    EE-128:C<b class='flag-5'>语言中</b>的DSP:从C调用汇编类成员函数

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Verilog与ASIC设计的关系 Verilog作为一种硬件描述语言HDL),在ASIC设计中扮演着至关重要的角色。ASIC(Application Specific Integr
    的头像 发表于 12-17 09:52 1439次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog测试平台设计方法是Verilog FPGA开发中的重要环节,它用于验证Verilog设计的正确性和性能。以下是一个详细的Verilog测试平台设计方法及
    的头像 发表于 12-17 09:50 1560次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程
    的头像 发表于 12-17 09:44 2691次阅读