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

    文章

    2708

    浏览量

    172842
  • HDL
    HDL
    +关注

    关注

    8

    文章

    327

    浏览量

    47336
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59693
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68326
  • LPM
    LPM
    +关注

    关注

    0

    文章

    11

    浏览量

    9938

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

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

收藏 人收藏

    评论

    相关推荐

    高压放大器在压电材料综合性能测试的应用

    实验名称:压电材料综合性能测试装置的设计与搭建 测试设备:高压放大器、铁电分析仪、示波器、电容位移传感器等。 图1:压电测试腔 实验过程: 设计并加工了压电测试腔,如图1所示,然后搭建压电材料综合性
    的头像 发表于 11-21 11:50 30次阅读
    高压放大器在压电材料<b class='flag-5'>综合性</b>能测试<b class='flag-5'>中</b>的应用

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识。
    的头像 发表于 10-24 15:00 169次阅读
    Verilog <b class='flag-5'>HDL</b>的基础知识

    引领电池组综合性能测试新纪元|比斯特自动化

    在新能源产业的蓬勃发展,电池组的性能稳定性与安全成为了行业关注的焦点。比斯特自动化,作为业界领先的智能测试设备制造商,凭借其创新的电池组综合性能测试机,为这一领域注入了新的活力。这款测试机集成
    的头像 发表于 08-28 09:48 217次阅读
    引领电池组<b class='flag-5'>综合性</b>能测试新纪元|比斯特自动化

    一次使用无菌脑积水分流器综合性测试仪

    一次使用无菌脑积水分流器综合性测试仪 描述 一次使用无菌脑积水分流器是一种用于治疗脑积水的医疗器械。脑积水是指在颅内或脑脊液循环系统
    的头像 发表于 04-06 09:13 298次阅读
    一次<b class='flag-5'>性</b>使用无菌脑积水分流器<b class='flag-5'>综合性</b>测试仪

    焊锡膏的综合性能该如何进行评估?

    一款合适的锡膏对生产效率会带来巨大的提升,可以减少因为锡膏性能问题导致的工期延误。客户在选择锡膏产品是常常会遇到的问题就是,如何评估所选购焊锡膏综合性能的优劣? 根据深圳福英达工业技术有限公司多年的锡膏解决方案经验,
    的头像 发表于 03-20 09:13 320次阅读

    verilogrepeat必须用begin和end吗

    在Verilog,repeat语句不需要使用begin和end块。repeat语句是一种循环控制语句,允许重复执行一个代码块指定的次数。它
    的头像 发表于 02-23 10:14 1098次阅读

    assign语句和always语句的用法

    的用法和功能。 一、Assign语句 Assign语句的定义和语法 Assign语句用于在HDL连续赋值,它允许在设计
    的头像 发表于 02-22 16:24 2269次阅读

    verilogfor循环是串行执行还是并行执行

    的for循环也是并行执行的。 Verilog的for循环可以用来实现重复的操作,例如在一个时钟周期中对多个电路进行操作。在循环内部,多个语句
    的头像 发表于 02-22 16:06 2695次阅读

    arduino如何停止loop循环

    退出这个循环。本文将详细介绍如何在Arduino停止loop循环。 在Arduino,可以通过使用一个布尔变量或条件语句来实现停止loo
    的头像 发表于 02-14 16:24 4181次阅读

    arduinowhile循环怎么跳出

    执行某段代码的情况。然而,如何在合适的时机跳出 while 循环是一个需要注意的问题。本文将详细介绍 Arduino while 循环的基本概念,以及如何使用不同的技巧跳出该循环
    的头像 发表于 02-14 16:22 2382次阅读

    多协议网关BE115是一款多协议转多上行协议的综合性转换网关

    数据传输解决方案——协议转换网关应运而生,广泛应用于工业自动化和数字化工厂应用环境。 无缝衔接工业4.0时代 尽享楼宇暖通系统优势 多协议网关BE115是一款多协议转多上行协议的综合性转换网关,支持IEC104、MQTT、OPC UA、Mo
    的头像 发表于 02-02 09:26 364次阅读
    多协议网关BE115是一款多协议转多上行协议的<b class='flag-5'>综合性</b>转换网关

    单片机if是什么语句

    单片机的if语句是一种条件语句,用于根据不同的条件执行不同的代码块。在程序执行过程,条件语句用来决定是否执行特定的代码段。在单片机编程
    的头像 发表于 01-05 14:04 1623次阅读

    单片机for语句的运用

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

    java的switch语句 case的取值

    Java的switch语句是一种用于多重条件判断的语句,用于根据不同的条件执行不同的代码块。在switch语句中,case关键字用来指定不同的取值。 在Java
    的头像 发表于 11-30 16:05 1069次阅读

    python怎么设置循环次数

    在Python,可以使用循环语句来重复执行一段代码多次。要设置循环次数,可以使用循环的计数器来控制循环
    的头像 发表于 11-23 15:50 5082次阅读