close
当前位置: 物联网在线 > 技术文库 >

FPGA中组合逻辑和时序逻辑的区别

 FPGA中组合逻辑和时序逻辑的区别

数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。

1.组合逻辑概念
组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关,不涉及对信号跳变沿的处理,无存储电路,也没有反馈电路。通常可以通过真值表的形式表达出来。

2.组合逻辑的Verilog HDL 描述
根据组合逻辑的电路行为,可以得到两种常用的RTL 级描述方式。第一种是always 模块的触发事件为电平敏感信号列表;第二种就是用assign 关键字描述的数据流赋值语句。

(1)always 模块的敏感表为电平敏感信号的电路
always模块的敏感列表为所有判断条件信号和输入信号,但一定要注意敏感列表的完整性。在always 模块中可以使用if、case 和for 等各种RTL 关键字结构。由于赋值语句有阻塞赋值和非阻塞赋值两类,建议读者使用阻塞赋值语句“=”。always 模块中的信号必须定义为reg 型,不过最终的实现结果中并没有寄存器。这是由于在组合逻辑电路描述中,将信号定义为reg型,只是为了满足语法要求。

(2)assign语句描述的电路
利用条件符“?”可以描述一些相对简单的组合逻辑电路,信号只能被定义为wire型。当组合逻辑比较复杂时,需要很多条assign语句或者多重嵌套“?”,使得代码可读性极差,因此此时推荐第一种组合逻辑建模方式。

3.组合逻辑电路的注意事项

(1)敏感信号列表
在组合逻辑设计中,读者必须重点对待敏感信号列表。敏感信号列表出现在always块中,其典型行为级的含义为:只要敏感信号列表内的信号发生电平变化,则always模块中的语句就执行一次,因此设计人员必须将所有的输入信号和条件判断信号都列在信号列表中。

不完整的信号列表会造成不同的仿真和综合结果,因此需要保证敏感信号的完备性。如果缺少信号,则无法触发和该信号相关的仿真进程,也就得不到正确的仿真结果。如果设计人员在设计中,认为列举信号麻烦,则采用下面的语句:always@(*).此时,综合工具和仿真工具会自动将所有的敏感信号自动加入敏感信号列表。

(2)不要在组合逻辑中引入环路
在组合逻辑中引入环路会导致电路产生振荡、毛刺以及冲突等问题,从而降低设计的稳定性和可靠性,因此要彻底避免环路。

之所以称逻辑环路是一种高风险设计,其原因如下:
首先,环回逻辑的延时完全依靠组合逻辑门延迟和布线延迟。一旦这些传播时延有所变化,则环路的整体逻辑将彻底失效。
其次,环路的时序分析是个死循环过程。目前的EDA 开发工具为了计算环路的时序逻辑都会主动割断时序路径,引入许多不确定的因素。

1 . 时序逻辑概念
时序逻辑是Verilog HDL 设计中另一类重要应用。从电路特征上看来,其特点为任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。电路里面有存储元件(各类触发器,在FPGA 芯片结构中只有D 触发器)用于记忆信息,如图8-7 所示。从电路行为上讲,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时,才有可能使输出发生变化。
(1)在描述时序电路的always块中的reg型信号都会被综合成寄存器,这是和组合逻辑电路所不同的。
(2)时序逻辑中推荐使用非阻塞赋值“<=”。
(3)时序逻辑的敏感信号列表只需要加入所用的时钟触发沿即可,其余所有的输入和条件判断信号都不用加入,这是因为时序逻辑是通过时钟信号的跳变沿来控制的。

2. 竞争与冒险

(1)竞争与毛线概念
信号在组合逻辑电路内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。此外,信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”,如果一个组合逻辑电路中有“毛刺”出现,就说明该电路存在“冒险”。

需要注意的是,冒险信号的脉冲宽度很小,常常只有数纳秒或数十纳秒,其频带带宽可达数百兆赫兹或更宽。在板级调试时,如果示波器的上限频率较低,会将幅度较大的毛刺显示为幅度较小的毛刺,甚至不易被察觉。这都是在实际开发中捕获毛刺应该注意的问题。


(责任编辑:ioter)

用户喜欢...

Xilinx FPGA复位浅析

1. 普通逻辑的复位 对于xilinx 7系列的FPGA而言,flip-flop支持高有效的异步复/置位和同步复位/置位。对普通逻辑设计,同步复位和异步复位没有区别,当然由于器件内部信号均为高有效,因此推...


FPGA双端口RAM操作(乒乓操作)

如果需要重读,需要用ram,如果不需要重读的话就用FIFO 双buffer不太好实现错误重传机制!!!! 双buffer作用: 1、跨时钟域 2、完成数据位宽转换 3、完成数据缓冲 双buffer缓冲操作示意图,...


Mellanox网卡嵌入Xilinx FPGA将降低背板插槽数量与CPU周期占用

Mellanox公司的下一代Innova网络适配器不仅将整合强制性高速接口,同时亦将嵌入一块Xilinx FPGA芯片。 分流工作负载已经成为Mellanox适配器发展策略中的一项重要组成部分,而这显然也迎合了一...


XMOS扩展远场拾音解决方案产品组合

高级嵌入式语音和音频接口解决方案领先供应商——XMOS公司(www.xmos.com),今天宣布推出商用xCOREVocalFusion扬声器线性...


用BittWare XUPPR3R Virtex UltraScale+FPGA搭建48端口的服务器

想要自己搭建一个以太网交换机么?想要快速的搭建一个SDN交换器么?想要在VPN集线器、路由器、防火墙以及指令检测系统等方面搞事情么?在硬件开源之风吹来的时代,只要一个有FPGA的平...


FPGA差分信号缓冲的转换(IBUFDS、IBUFGDS和OBUFDS)

IBUFDS、IBUFGDS和OBUFDS都是差分信号缓冲器,用于不同电平接口之间的缓冲和转换。 IBUFDS 是差分输入的时候用; OBUFDS 是差分输出的时候用; IBUFGDS 则是时钟信号专用的输入缓冲器。 下面详细说明...


如何简单快捷地用小型Xiliinx FPGA加速卷积神经网络CNN

刚好在知乎上看到这个问题 如何用FPGA加速卷积神经网络CNN,恰巧我的硕士毕业设计做的就是在FPGA上实现CNN的架构,在此和大家分享。 先说一下背景,这个项目的目标硬件是Xilinx的PYNQ。该开...


一站式FPGA基础设施服务:FPGA加速云服务器亮相华为欧洲生态大会

在欧洲举行的2017 华为欧洲生态大会(HUAWEI ECO-CONNECT EUROPE,HCE)上,华为云FPGA加速云服务器(FACS)惊艳亮相,获得广泛关注,完整的基础设施服务及其两款FP1实例,成为本次大会的一大亮点...


再破吉尼斯世界纪录 赛灵思FPGA加速服务吸睛开发者

10月19日,继在美国、日本成功举办之后的赛灵思(Xilinx)公司首次中国开发者大会(XDF)在北京举行。本次XDF共有三个分会场,包括针对传统赛灵思客户的硬件开发者,以及软件与嵌入式应用开...


PYNQ 用Python运行FPGA

PYNQ介绍 PYNQ全称为Python Productivity for Zynq,即在原有Zynq架构的基础上,添加了对python的支持。Zynq是赛灵思公司推出的行业第一个可扩展处理平台系列,在芯片中集成了ARM处理器和FPGA可编程逻...