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

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

3天内不再提示

简述HDL中循环语句的可综合性

电子工程师 来源:FPGA设计论坛 作者:FPGA设计论坛 2021-05-12 09:27 次阅读

在HDL的循环语句中,在指定的循环过程中,其代码块(循环体)输出同名信号,则构成顺序-循环(SAS-LOOP),其代码块(循环体)输出不同名信号,则构成并发-循环(CAS-LOOP)。

包括循环语句(含循环体)组成的代码块,EDA称为循环框架(Loop Frame)。

5ca8a4e0-b2a3-11eb-bf61-12bb97331649.png

在这里,HDL循环语句与算法语言的循环语句的差异:

1.HDL的循环变量i是以常量进入循环体。算法语言则是以变量进入循环体。

2.HDL的循环体并不被循环执行,而是被重复描述(多次重复综合),从而实现建模的效率。算法语言的循环体则一定是被循环执行。

循环语句可综合性的“数学归纳法”

数学归纳法常用于证明数学序列,它的要点是:

1.首先证明序列的基数成立

2.假设序列为N时成立

3.证明序列的N+1成立

HDL的循环语句是否可综合,可以借用这个方法:

1.首先将循环语句的循环次数修改为一个很小的基数。由于在很小的基数时,其电路一定可以用结构化方法直接描述(不使用循环语句)

2.将基数加1,仍然可以是结构化描述,并加以验证

3.将基数修改为LPM参数可定制,使用循环语句描述,并加以验证

4.修改LPM定制参数,将其加1,观察其综合结果(验证)

通过以上步骤,可以证明所编写的HDL循环语句是可综合的,并且具有很高的综合效率。

循环语句设计例子:具有64个输入端口的8位异或电路:

5cafbeb0-b2a3-11eb-bf61-12bb97331649.png

使用“数学归纳法”为其使用循环语句建模和验证:

1.将基数(端口数)设定为4,得到:

5cd11a38-b2a3-11eb-bf61-12bb97331649.png

RTL视图(验证过程):

5ce87926-b2a3-11eb-bf61-12bb97331649.png

2.将基数加1,这里将端口数修改为8,得到:

5d04fccc-b2a3-11eb-bf61-12bb97331649.png

RTL视图(验证过程):

5d4cd948-b2a3-11eb-bf61-12bb97331649.png

修改为端口数可定制的LPM模型

其RTL视图:

5d762dc0-b2a3-11eb-bf61-12bb97331649.png

现在将LPM的基数+1(修改端口指数PortNum_Power为4)

其RTL视图:

5db63e60-b2a3-11eb-bf61-12bb97331649.png

以上就是循环语句构成二叉树异或门的过程,为了得到最终结果(64端口),将端口指数PortNum_Power=6,得到:

5dd86dbe-b2a3-11eb-bf61-12bb97331649.png

这里由于端口数过多,EDA的自动绘图需要中间过程,故首层仅展示如上部分。

循环语句可综合性的设计例子二:同步计数器的结构化设计

1.顶层框图

5e07f64c-b2a3-11eb-bf61-12bb97331649.png

2.代码和代码模型分析

5e21c7b6-b2a3-11eb-bf61-12bb97331649.png

其RTL视图:

615056d2-b2a3-11eb-bf61-12bb97331649.png

以上视图中,当rst_n=0时,多路器指向常数0;当rst_n=1时,多路器指向加法器的输出;注意加法器是寄存器的输出q与1相加。

根据代码模型和RTL视图,可以得到等效节点模型:

6172da40-b2a3-11eb-bf61-12bb97331649.png

若将复位信号的条件语句描述屏蔽,则得到RTL视图更接近节点等效:

618b06ba-b2a3-11eb-bf61-12bb97331649.png

3.计数器的数学模型

在RTL视图中,计数器有限自动机的加法器执行q+1(的描述),其真实的电路是得到优化和简化的一个数学模型:

若Q序列表示为:

时钟离散时刻,Q的变化为:

观察表格,能够发现Q的每一个比特位翻转的规律:

()

(, )

(, )

……

(, )

将触发翻转的条件(前级全部为1)采用级联以减少面积:

(,)

(, )

(, )

……

(, )

式中:

…….

注意位翻转的一般表达式:(, )

其真值表为:

其SOP为:

代入序列中,得到:

……

根据数学模型得到的代码模型为:

61a7654e-b2a3-11eb-bf61-12bb97331649.png

编辑:jq

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

    关注

    71

    文章

    2535

    浏览量

    170820
  • HDL
    HDL
    +关注

    关注

    8

    文章

    322

    浏览量

    47101
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59060
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66734
  • LPM
    LPM
    +关注

    关注

    0

    文章

    10

    浏览量

    9891

原文标题:FPGA学习:循环语句的可综合性

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

收藏 人收藏

    评论

    相关推荐

    assign语句和always语句的用法

    Assign语句和Always语句是在硬件描述语言(HDL)中常用的两种语句,用于对数字电路建模和设计。Assign语句用于连续赋值,而Al
    的头像 发表于 02-22 16:24 477次阅读

    单片机中for语句的运用

    单片机中的for语句是一种常见的循环控制结构,用于重复执行一段代码块,可以简化程序的编写和减少代码量。本文将详细介绍单片机中for语句的运用。 一、for语句的基本结构和功能 for
    的头像 发表于 01-05 14:02 593次阅读

    如何评估所选购焊锡膏综合性能的优劣?

    简要分享如何评估所选购焊锡膏综合性能的优劣?
    的头像 发表于 10-23 09:08 263次阅读

    Verilog:for循环综合实现

    采用for循环语句,逐个bit位判断是否为1,为1则累加,否则保持不变,最终输出输入信号中1的数量。
    的头像 发表于 10-09 16:31 1510次阅读
    Verilog:for<b class='flag-5'>循环</b>的<b class='flag-5'>综合</b>实现

    FOR循环语句分析与应用

    FOR循环语句应用比较广泛,在机器人编程、PLC编程、C语言编程中都有应用。能读懂这些程序语句,可以更好地理解机电设备控制原理,为机电设备安装维修工作带来便利。
    的头像 发表于 09-25 17:14 2561次阅读
    FOR<b class='flag-5'>循环</b><b class='flag-5'>语句</b>分析与应用

    python改变循环正常的执行顺序

    循环控制循环控制语句可以改变循环正常的执行顺序 循环控制语句 break
    的头像 发表于 09-12 16:59 557次阅读
    python改变<b class='flag-5'>循环</b>正常的执行顺序

    Python中什么是语句

    条件判断 语句块 什么是语句块呢? 语句块是在条件为真(条件语句)时执行或者执行多次(循环语句
    的头像 发表于 09-12 16:41 621次阅读

    for循环语句基本用法及示例 介绍几种可综合的for循环语句

    利用for循环实现对信号的赋值。
    的头像 发表于 08-03 10:22 1671次阅读

    条件语句/循环语句simulink的实现方法(一)

    条件语句循环语句是计算机编程中常用的两种控制结构
    的头像 发表于 07-21 16:48 6439次阅读
    条件<b class='flag-5'>语句</b>/<b class='flag-5'>循环</b><b class='flag-5'>语句</b>simulink的实现方法(一)

    MATLAB中条件语句循环结构的使用方式

    MATLAB提供了多种条件语句循环结构。
    的头像 发表于 07-05 09:41 2491次阅读

    verilog语言的可综合性和仿真特性

    综合就是将HDL语言转化成与,非,或门等等基本逻辑单元组成的门级连接。因此,可综合语句就是能够通过EDA工具自动转化成硬件逻辑的语句
    发表于 06-28 10:39 949次阅读

    C语言基础知识(5)--循环语句

    C语言基础知识(5)--循环语句
    的头像 发表于 06-15 10:18 1378次阅读
    C语言基础知识(5)--<b class='flag-5'>循环</b><b class='flag-5'>语句</b>

    VerilogHDL 综合设计的注意事项

    ,但一定要注意敏感列表的完整(注意通配符*的使用)。 由于赋值语句有阻塞赋值和非阻塞赋值两类,建议读者使用阻塞赋值语句“=”,原因将在“阻塞赋值和非阻塞赋值”(现在还没有写)进行说
    发表于 06-02 14:20

    Verilog常用的循环语句及用途

    本文主要介绍verilog常用的循环语句循环语句的用途,主要是可以多次执行相同的代码或逻辑。
    的头像 发表于 05-12 18:26 1238次阅读

    Python的循环语句介绍

    哈喽大家好,我是知道。今天带大家了解下Python的循环语句 定义循环语句允许我们执行一个语句语句
    的头像 发表于 05-11 17:39 642次阅读