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

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

3天内不再提示

【教程分享】在FPGA中何时用组合逻辑或时序逻辑?

电子发烧友论坛 来源:未知 2023-03-21 09:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习FPGA设计方法及设计思想的同时,实操结合各类操作软件,会让你在技术学习道路上无比的顺畅,告别技术学习小BUG卡破脑壳,告别目前忽悠性的培训诱导,真正的去学习去实战应用,这种快乐试试你就会懂的。话不多说,上货。

在FPGA中何时用组合逻辑或时序逻辑

在设计FPGA时,大多数采用Verilog HDL或者VHDL语言进行设计(本文重点以verilog来做介绍)。设计的电路都是利用FPGA内部的LUT和触发器等效出来的电路。

数字逻辑电路分为组合逻辑电路和时序逻辑电路。时序逻辑电路是由组合逻辑电路和时序逻辑器件构成(触发器),即数字逻辑电路是由组合逻辑和时序逻辑器件构成。所以FPGA的最小单元往往是由LUT(等效为组合逻辑)和触发器构成。

在进行FPGA设计时,应该采用组合逻辑设计还是时序逻辑?这个问题是很多初学者不可避免的一个问题。

设计两个无符号的8bit数据相加的电路。

组合逻辑设计代码:

01fa80d8-c78a-11ed-bfe3-dac502259ad0.png

对应的电路为:

0214c538-c78a-11ed-bfe3-dac502259ad0.png

时序逻辑对应代码为:

021d9032-c78a-11ed-bfe3-dac502259ad0.png

对应的电路为:

022e12ae-c78a-11ed-bfe3-dac502259ad0.png

可以思考一下,这个两种设计方法都没有任何错误。那么在设计时应该用哪一种呢?

在设计时,有没有什么规定必须要用组合逻辑或者时序逻辑?例如:在verilog中,在always中被赋值了就必须是reg类型,assign赋值了就必须是wire类型。很遗憾的是,目前没有任何的规定。

下面几点笔者平时自己做设计的经验,在这里分享一下:

带有反馈的必须用时序逻辑

何为带有有反馈?即输出结果拉回到输入。

自加一计数器。

代码为:

02356842-c78a-11ed-bfe3-dac502259ad0.png

对应的电路为:

0245679c-c78a-11ed-bfe3-dac502259ad0.png

这种电路在工作时,就会出现无限反馈,不受任何控制,一般情况下,我们认为结果没有任何意义。

和上面的情况类似的还有取反。

0250b782-c78a-11ed-bfe3-dac502259ad0.png

类似情况还有很多就不在一一列举。

上述说的情况都是直接带有反馈,下面说明间接反馈。

代码为:

02619070-c78a-11ed-bfe3-dac502259ad0.png

从代码上来看,没有什么明确反馈,下面看实际对应的电路。

026928d0-c78a-11ed-bfe3-dac502259ad0.png

从实际的电路上来看,一旦运行起来,还是会出现无限反馈,不受任何控制。

还有一种情况是带有控制的反馈。

设计代码为:

0277f4fa-c78a-11ed-bfe3-dac502259ad0.png

这个电路可以等效为:

02802328-c78a-11ed-bfe3-dac502259ad0.png

在flag等于1期间,此电路依然会无限制的反馈,无法确定在此期间进行了多少次反馈。

从代码的角度理解是flag变化一次,加一次。可是对应于电路后,和预想的是不相同的。

说了这么多的这么多不对的情况,下面考虑正确的情况。

028f1d74-c78a-11ed-bfe3-dac502259ad0.png

设计代码为:

029a348e-c78a-11ed-bfe3-dac502259ad0.png

在上述的电路中,clk每来一个上升沿,cnt的数值增加一。可以用作计时使用。

利用寄存器将反馈路径切换即可。此时的反馈是可控制,并且此时的结果就有了意义。

其他的反馈中,加入寄存器即可。而加入寄存器后,就变为时序逻辑。

根据时序对齐关系进行选择

在很多的设计时,没有反馈,那么应该如何选择呢?

举例说明:输入一个八位的数据(idata),然后将此八位数据进行平方后,扩大2倍,作为输出。要求输出结果(result)时,将原数据同步输出(odata),即数据和结果在时序上是对齐的。

设计代码为:

02a58ba4-c78a-11ed-bfe3-dac502259ad0.png

这种设计方法是可以的,因为都采用组合逻辑设计,odata和result都是和idata同步的,只有逻辑上的延迟,没有任何时钟的延迟。

另外一种设计代码为:

02ad891c-c78a-11ed-bfe3-dac502259ad0.png

这种设计方法为错误,odata的输出是和idata同步的,而result的输出将会比idata晚一拍,最终导致result要比odata晚一拍,此时结果为不同步,设计错误。

修改方案为:将result的寄存器去掉,修改为组合逻辑,那就是第一种设计方案。第二种为将odata也进行时序逻辑输出,那么此时odata也将会比idata延迟一拍,最终结果为result和odata同步输出。

根据运行速度进行选择

在数字逻辑电路中,中间某一部分为组合逻辑,两侧的输入或者输出也会对延迟或者输入的数据速率有一定的要求。

02bac334-c78a-11ed-bfe3-dac502259ad0.png

组合逻辑1越复杂延迟越大,而导致的结果就是clk的时钟速率只能降低,进而导致设计结果失败。

当组合逻辑1无法进行优化时,还想要达到自己想要的速度时,我们可以进行逻辑拆分,增加数据的输出潜伏期,增加数据的运行速度。

02c77804-c78a-11ed-bfe3-dac502259ad0.png

将组合逻辑1的功能拆分为组合逻辑A和组合逻辑B,此时,输入的数据得到结果虽然会多延迟一拍,但是数据的流速会变快。

那么这个和选用组合逻辑和时序逻辑有什么关系呢?

举例说明:目前要设计模块A,不涉及反馈,不涉及时序对齐等,可以采取组合逻辑设计也可以采用时序逻辑设计。

模块A的输出连接到模块B,经过一些变换(组合逻辑N)连接到某个寄存器K上。如果模块A采用组合逻辑,那么模块A的组合逻辑和模块B到达寄存器K之前的组合逻辑N会合并到一起。那么此时组合逻辑的延迟就会变得很大,导致整体设计的时钟速率上不去。

当运行速率比较快时,建议对于复杂的组合逻辑进行拆分,有利于时序分析的通过。

在上述的三个规则中,第一个和第二个用的是最多的,第三个在设计时,有时不一定能够注意到,当出现时序违例时,知道拆分能够解决问题就可以。


本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com

02de6fa0-c78a-11ed-bfe3-dac502259ad0.png

热门推荐干货好文

1、RK3568!四核64位ARMv8.2A架构,汇聚编译源码及实战样例

2、开源作品秀,教你如何DIY一款自己的声源跟踪小车

3、ARM架构国产MCU移植!国民技术N32系列开源移植样例合集

4、低成本ESP32方案,支持OpenHarmony系统开发(附10+项目样例Demo)

5、从0到1玩转瑞萨RA4系列开发板,教你变着花样玩板子

6、四核64位,超强CPU ,看RK3568“竞”开发板DEMO!

7、人工智能也能这么玩, 简单快速入手,还能自定义AI运算

8、全部开源 | 基于全志V85X的运动相机,工业网关,可穿戴式摄像头

9、高性能双核RISC-V,满足大多数开发,这款国产MCU工程师都爱


原文标题:【教程分享】在FPGA中何时用组合逻辑或时序逻辑?

文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工程师高培解读XilinxVivadoFPGA设计进阶与AI自动编程

    FPGA开发,Vivado是贯穿设计全流程的核心工具。许多工程师掌握基本操作后,仍会在时序收敛、综合策略、IP复用等方面遇到瓶颈。现根
    的头像 发表于 04-22 16:29 151次阅读
    工程师高培解读XilinxVivado<b class='flag-5'>FPGA</b>设计进阶与AI自动编程

    Xilinx FPGA的混合模式时钟管理器MMCME2_ADV详解

    FPGA 的浩瀚宇宙,时钟系统不仅是驱动逻辑运转的“心脏”,更是决定系统稳定性与性能上限的“指挥棒”。对于 Xilinx 7 系列 FPGA
    的头像 发表于 04-10 11:20 184次阅读
    Xilinx <b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的混合模式时钟管理器MMCME2_ADV详解

    FPGA时序收敛的痛点与解决之道——从一次高速接口调试谈起

    FPGA开发时序收敛往往是项目后期最令人头疼的环节。许多工程师都有过这样的经历:RTL仿真通过,综合布线后却出现大量时序违例,为了满足
    的头像 发表于 03-11 11:43 325次阅读

    Vivado时序约束invert参数的作用和应用场景

    Vivado的时序约束,-invert是用于控制信号极性的特殊参数,应用于时钟约束(Clock Constraints)和延迟约束(Delay Constraints),用于指定
    的头像 发表于 02-09 13:49 429次阅读
    Vivado<b class='flag-5'>时序</b>约束<b class='flag-5'>中</b>invert参数的作用和应用场景

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

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

    【「龙芯之光 自主可控处理器设计解析」阅读体验】--LoongArch逻辑综合、芯片设计

    TransferLevel,RTL)描述转换为满足功能、时序和面积要求的门级网表的过程。 按照流程,逻辑综合通常可分为面向应用的专用集成电路(Application-Specific
    发表于 01-18 14:15

    有源逻辑探头的具体应用

    及典型场景的详细拆解: 一、数字电路研发与调试 此为有源逻辑探头的核心应用场景,核心解决复杂数字系统“信号观测无干扰、多通道信号同步分析”的关键需求,为电路设计验证提供精准的信号数据支撑。 时序
    的头像 发表于 12-16 10:29 291次阅读
    有源<b class='flag-5'>逻辑</b>探头的具体应用

    数字IC/FPGA设计时序优化方法

    在数字IC/FPGA设计的过程,对PPA的优化是无处不在的,也是芯片设计工程师的使命所在。此节主要将介绍performance性能的优化,如何对时序路径进行优化,提高工作时钟频率。
    的头像 发表于 12-09 10:33 3546次阅读
    数字IC/<b class='flag-5'>FPGA</b>设计<b class='flag-5'>中</b>的<b class='flag-5'>时序</b>优化方法

    长晶科技逻辑芯片产品矩阵介绍

    逻辑IC是用于实现基本逻辑运算和复合逻辑运算的集成电路, 广泛应用于各种电子设备和系统,成为现代电子设备智能化、高效化的关键所在。
    的头像 发表于 11-04 17:47 1440次阅读
    长晶科技<b class='flag-5'>逻辑</b>芯片产品矩阵介绍

    vivado时序分析相关经验

    存在不满足时序要求的逻辑级数。逻辑级数过多一般可以通过插入寄存器打拍子,分割冗长的组合逻辑。 线延时较长时,一般是因为扇出较大。 ”repo
    发表于 10-30 06:58

    MDD 逻辑IC的逻辑电平不兼容问题与解决方案

    现代电子系统,MDD辰达半导体逻辑IC(集成电路)扮演着至关重要的角色,广泛应用于数据处理、时序控制、信号转换等各类电路。随着技术的进
    的头像 发表于 10-29 09:39 594次阅读
    MDD <b class='flag-5'>逻辑</b>IC的<b class='flag-5'>逻辑</b>电平不兼容问题与解决方案

    时序约束问题的解决办法

    是:两寄存器的组合逻辑之间添加反相器当作 buffer。 若综合后的 Hold Slack 为 7% 及以内的时钟周期,都可以不用做优化,因为这个可以 Implementation
    发表于 10-24 09:55

    掌握数字设计基础:迈向芯片设计的第一步

    复杂的电路功能。 而 布尔代数(Boolean Algebra) 则是它们的“数学语法”,帮助我们简洁的表达式去分析、优化电路,确保设计的高效与可靠。 3、组合逻辑时序
    发表于 10-09 21:11

    咨询符合国标GB/T 4728.12-2022的逻辑门电路设计软件

    背景 大学教授《数字逻辑》,总是遇到绘逻辑电路图的问题,想适配国家标准GB/T 4728.12-2022的逻辑门电路,培养学生的家国情怀,但目前的软件好像使用的都是IEEE标准,
    发表于 09-09 09:46

    CMOS的逻辑门如何应用在电路

    CMOS的逻辑门如何应用在电路 前言 如今的电子电路,CMOS逻辑门有着接近零静态功耗和超高集成度的特点,是数字电路不可或缺的存在。其
    的头像 发表于 06-19 16:07 1940次阅读
    CMOS的<b class='flag-5'>逻辑</b>门如何应用在电路<b class='flag-5'>中</b>