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

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

3天内不再提示

浅谈条件语句的可综合性

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

条件语句的可综合性

HDL语言的条件语句与算法语言的条件语句,最大的差异在于:

1.不管条件:当前输入条件没有对应的描述,则该条件为不管条件(Don’tCare)。对应不管条件的信号称为不管信号

2.不选条件:多个条件分支中,未获得当前输入条件指向的分析,称为不选条件(Don’tSelect)。对应的信号称为不选信号。

不管不选发生时,HDL的综合器,将尽量维持原值,并且得到额外的生成结构。若无法用生成结构维持原值,则直接报错。根据行为语句的开节点ON/闭节点CN描述;部分条件PC/全部条件FC;以及条件分支的输出是否具有同名信号(线与WAND)或不同名信号(非线与Not_WAND),综合器将得到不同的处理结果。

开节点全部条件全部分支非线与描述

此时,全条件描述导致没有不管条件和不管信号。但全部分支非线与(即每一个条件分支语句输出不同名信号),将导致不选信号。对于不选条件不选信号,EDA将维持原值。生成结构为锁存器。

50a9776e-b2a3-11eb-bf61-12bb97331649.png

条件译码逻辑:

pIYBAGCbLLqAMuUNAAATUZNF6dE149.png

RTL视图:(QuartusII)

50d462da-b2a3-11eb-bf61-12bb97331649.png

这里的译码逻辑为:

50dddacc-b2a3-11eb-bf61-12bb97331649.png

一般性的代码模型分析:

左侧为代码块,全条件描述不存在不管条件,全部分支非线与存在不选条件和不选信号,EDA需要为这些不选信号生成锁存器,用于维持原值。右侧为其代码模型:

50ec746a-b2a3-11eb-bf61-12bb97331649.png

结论:开节点全部条件全部输出非线与的HDL描述,将得到的结构

闭节点全部条件全部分支非线与描述

综合分析:

1.闭节点描述将导致生成寄存器

2.全部条件描述,使得此时不存在不管条件

3.全部分支输出非线与,将导致不选条件/不选信号。这些不选信号需要维持原值。

4.由于此时已经输出末端已经得到有记忆的寄存器,因此综合器此时将使用这些生成寄存器维持原值(不选信号)

例如:

5110e124-b2a3-11eb-bf61-12bb97331649.png

RTL视图(QuartusII):

51306292-b2a3-11eb-bf61-12bb97331649.png

这里译码逻辑为:

51703444-b2a3-11eb-bf61-12bb97331649.png

关于使用寄存器维持原值(不选信号/不管信号):

寄存器维持原值需要遵循两个互相矛盾的综合原则:

1.优化原则:寄存器使用其使能端维持原值,将导致时钟信号的路由产生逻辑,或者说时钟信号被加工,最终导致时钟偏斜参数的恶化,影响系统的最高速度。因此,综合器将尽量避免寄存器使用使能端。

2.原创原则:综合器根据代码模型分析,和实际的物理实现,必然需要对已经的描述的代码进行加工和修改,最典型的例子就是生成结构(生成锁存器,生成寄存器)。但过多的生成结构,将导致最终实现的电路可能与设计者的愿望相悖。因此,综合器将尽量避免生成结构。

除了使用使能端维持寄存器原值,另一个产生生成结构的方法则是多路器闭环:

51a6e638-b2a3-11eb-bf61-12bb97331649.png

一般性的代码模型分析:

51c4ee76-b2a3-11eb-bf61-12bb97331649.png

结论:闭节点全部条件全部分支输出非线与描述,将得到的结构。注意此时综合器在寄存器维持原值时,可能产生时钟优化原则和原创原则的选择。

5.3开节点全部条件全部分支线与描述

综合分析:

1.全部条件避免了不管条件

2.全部分支线与(所以分支输出同名信号),综合器为了避免短路,将生产多路器。

注意此时没有生成锁存器。

51e163f8-b2a3-11eb-bf61-12bb97331649.png

RTL视图:

5217cff6-b2a3-11eb-bf61-12bb97331649.png

一般性代码模型分析:

5237d670-b2a3-11eb-bf61-12bb97331649.png

结论:开节点全部条件全部输出线与描述,将得到<多路器输出>结构。

注意这里没有锁存器,虽然有不选信号,但这些不选信号被多路器屏蔽。

编辑:jq

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

    关注

    31

    文章

    5308

    浏览量

    119981
  • HDL
    HDL
    +关注

    关注

    8

    文章

    327

    浏览量

    47336
  • 锁存器
    +关注

    关注

    8

    文章

    904

    浏览量

    41441
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68326

原文标题:FPGA学习:条件语句的可综合性

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

收藏 人收藏

    评论

    相关推荐

    技术干货驿站 ▏深入理解C语言:掌握C语言条件判断,从if到switch的应用

    语句条件运算符。这些结构不仅增强了代码的灵活性,还提高了程序的可读和可维护。本文将深入探讨C语言中的主要条件判断
    的头像 发表于 11-09 01:10 155次阅读
    技术干货驿站 ▏深入理解C语言:掌握C语言<b class='flag-5'>条件</b>判断,从if到switch的应用

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

    一次使用无菌脑积水分流器综合性测试仪 描述 一次使用无菌脑积水分流器是一种用于治疗脑积水的医疗器械。脑积水是指在颅内或脑脊液循环系统中积聚过多液体导致颅内压力增高的病症。脑积水分流器被用来帮助
    的头像 发表于 04-06 09:13 298次阅读
    一次<b class='flag-5'>性</b>使用无菌脑积水分流器<b class='flag-5'>综合性</b>测试仪

    鸿蒙TypeScript入门学习第6天:【条件语句

    条件语句用于基于不同的条件来执行不同的动作。 TypeScript 条件语句是通过一条或多条语句
    的头像 发表于 04-01 13:51 708次阅读
    鸿蒙TypeScript入门学习第6天:【<b class='flag-5'>条件</b><b class='flag-5'>语句</b>】

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

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

    浅谈电气火灾监控系统在天津西站综合交通枢纽中的应用

    浅谈电气火灾监控系统在天津西站综合交通枢纽中的应用 张颖姣 安科瑞电气股份有限公司 上海嘉定201801 摘要:为了预防综合交通枢纽电气火灾的发生,在天津西站枢纽中设计使用了电气火灾监控系统。首先
    的头像 发表于 03-12 10:49 355次阅读
    <b class='flag-5'>浅谈</b>电气火灾监控系统在天津西站<b class='flag-5'>综合</b>交通枢纽中的应用

    assign语句和always语句的用法

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

    浅谈商业综合建筑能耗分析及节能发展情况

    浅谈商业综合建筑能耗分析及节能发展情况 张颖姣 安科瑞电气股份有限公司 上海嘉定 201801 摘要:商业的发展促进了人类的交流与进步,从早期的集市到后来的市场再到现在的购物商城,商业综合体,可以说
    的头像 发表于 02-20 15:30 5563次阅读
    <b class='flag-5'>浅谈</b>商业<b class='flag-5'>综合</b>建筑能耗分析及节能发展情况

    深入探讨嵌入式C编程的goto语句

    什么是goto语句? goto 语句被称为 C 语言中的跳转语句。 用于无条件跳转到其他标签。它将控制权转移到程序的其他部分。 goto
    发表于 01-21 10:41 551次阅读
    深入探讨嵌入式C编程的goto<b class='flag-5'>语句</b>

    单片机if是什么语句

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

    单片机中for语句的运用

    语句,它的基本结构如下: for (初始化语句; 条件表达式; 更新语句) {循环体;} for语句的执行流程: 运行初始化
    的头像 发表于 01-05 14:02 2163次阅读

    浅谈Verilog中casex语句

    代码如下,大家看到这个代码有什么体会?综合会有什么Warning?
    的头像 发表于 12-07 11:35 1202次阅读
    <b class='flag-5'>浅谈</b>Verilog中casex<b class='flag-5'>语句</b>

    java中的switch语句 case的取值

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

    sql语句多个条件怎么连接

    SQL语句中使用了两个条件,age >= 25表示年龄大于等于25,age OR运算符用于满足多个条件中的至少一个条件的情况。例如,
    的头像 发表于 11-23 11:34 2301次阅读

    sql where条件的执行顺序

    SQL语句中的WHERE条件是用来筛选数据的,它决定了哪些数据会被返回给用户。WHERE条件的执行顺序是影响SQL语句性能的一个重要因素,正确地理解和优化WHERE
    的头像 发表于 11-23 11:31 2136次阅读

    sql语句where条件查询

    SQL是一种用于管理和操作关系型数据库的编程语言。其中,WHERE子句是用于过滤查询结果的重要部分。通过WHERE条件,我们可以指定一系列条件,以仅返回满足条件的记录。本文将探讨WHERE条件
    的头像 发表于 11-23 11:28 1126次阅读