逻辑电路根据是否包含记忆元件,分为组合逻辑电路和时序逻辑电路。组合逻辑电路不包含记忆元件,某时间点的输出(逻辑函数值)仅取决于当时的输入。含有记忆元件的逻辑电路被称为时序逻辑电路。在组合逻辑电路中,当前的输出只取决于当前的输入。而在时序逻辑电路中,只知道当前的输入并不足以确定当前的输出。也就是说,时序逻辑电路是一种过去的电路状态也会对输出产生影响的逻辑电路。
时序逻辑电路分为同步时序逻辑电路和异步时序逻辑电路两种。同步时序逻辑电路中,输入和内部状态的变化由时钟信号控制同步进行,而异步时序逻辑电路则不需要时钟信号。FPGA电路设计一般使用同步时序逻辑电路。
https://blog.csdn.net/HEN_MAN/article/details/6923155
逻辑电路:
以二进制为原理、实现数字信号逻辑运算和操作的电路。分组合逻辑电路和时序逻辑电路。前者的逻辑功能与时间无关,即不具记忆和存储功能,后者的操作按时间程序进行。由于只分高、低电平,抗干扰力强,精度和保密性佳。广泛应用于计算机、数字控制、通信、自动化和仪表等方面。 最基本的有与电路 或电路 和非电路。简单的逻辑电路通常是由门电路构成,也可以用三极管来制作,比如,一个NPN三极管的集电极和另一个NPN三极管的发射极连接,这就可以看作是一个简单的与门电路,即:当两个三极管的基极都接高电平的时候,电路导通,而只要有一个不接高电平,电路就不导通……
组合逻辑电路:
组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。组合逻辑电路可以有若个输入变量和若干个输出变量,其每个输出变量是其输入的逻辑函数,其每个时刻的输出变量的状态仅与当时的输入变量的状态有关,与本输出的原来状态及输入的原状态无关,也就是输入状态的变化立即反映在输出状态的变化。组合逻辑电路没有记忆功能。
在VHDL编程设计中,程序一般分为时序逻辑(Sync_process)和组合逻辑(Async_process)两部分。时序逻辑是具有记忆功能的,在时序部分的赋值会产生寄存器以供后续逻辑使用。但是,在组合逻辑部分,应该只产生控制信号,在该控制信号的控制下,在时序部分赋值产生寄存器。如果在组合逻辑部分进行了下面类似的运算:
when st1 =>
a <= *&^&^&;
NextState <= st2;
when st2 =>
b <= *&%&*;
NextState <= st3;
when st3 =>
c <= a+b;
那么,在仿真中虽然能看到c确实被赋值为a+b,但是,烧板子之后,c的值仍旧为0。这是因为\在组合逻辑中,一个signal又被放在等式左边又被放在等式右边,会产生memory,但是,其实组合逻辑是无记忆性的,是不允许产生memory的,所以没有寄存器(只在时序部分clk控制下产生)生成,a和b的生命周期只有在各自被赋值的状态中有效,跳出该状态之后,该信号就被重新置0。所以,正确的做法是在组合逻辑部分发送控制信号,enable时序部分的计算与赋值。
时序逻辑电路:
时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。时序电路具有记忆功能。
同步时序电路:时序逻辑电路可以分为同步时序电路和异步时序电路两大类。其中同步时序电路是指各触发器的时钟端全部连接在一起,并接系统时钟端;只有当时钟脉冲到来时,电路的状态才能改变;改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化;状态表中的每个状态都是稳定的.
异步时序电路:
时序逻辑电路可以分为同步时序电路和异步时序电路两大类。其中异步时序电路是指电路中除以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件;电路中没有统一的时钟;电路状态的改变由外部输入的变化直接引起.可将异步时序逻辑电路分为脉冲异步时序电路和电平异步时序电路.
同步时序逻辑设计中整个电路可看做由组合逻辑和寄存器相间隔而成。