一、https://m.elecfans.com/article/1806329.html
assign和always 区别
二、https://wenku.baidu.com/view/07de3253f78a6529647d5378.html?_wkts_=1674089883320&bdQuery=cpld%E5%8F%AF%E4%BB%A5%E4%BB%BB%E6%84%8F%E5%88%86%E9%A2%91%E5%90%97
任意奇偶分频
三、
数电基础:触发器&寄存器
1、锁存器(latch)
是电平触发单元,数据存储的动作取决于输入时钟(或使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据的输入发生变化。
简单说:两输入信号为使能信号EN,数据输入信号DATA_IN,以及一个输出信号Q,它的功能就是在EN有效的时候把输入数据DATA_IN的值传给Q,EN无效的时候就保持原有输出状态,直到EN再次有效,这就是锁存过程。也称透明锁存器,即不锁存时输出与输入始终一致,输出对输入而言是透明的。
2、触发器(Flip_Flop,简写FF)
也叫双稳态门,又称双稳态触发器,-3.是一种可在两种状态下运行的数字逻辑电路。触发器一直保持它们的状态,直到它们收到输入脉冲,即触发。当收到输入脉冲时,触发器输出就会根据规则改变状态,然后保持这种状态直到下一次触发。触发器对脉冲边沿敏感,其状态只在时钟的上升/下降沿的瞬间改变。
3、两者的区别
锁存器和触发器是具有记忆功能的二进制存储器件,是组成时序逻辑电路的基本器件之一。
区别在于,latch同所有的输入信号相关,当输入信号变化时latch就变化,没有时钟端;flip-flop受时钟控制,只有在时钟触发时才采样当前的输入,产生输出。当然,因为锁存器和触发器都是时序逻辑,所以输出不但同当前的输入相关,还与上一时间的输出相关
具体如下:
(1)latch是电平触发,非同步控制。使能信号有效时,latch相当于通路,无效时保持输出状态。DFF由时钟边沿触发,同步控制。优点:面积小,速度快,消耗资源少
(2)latch对输入电平敏感,受布线延迟影响较大,很难保证输出没有毛刺产生,而DFF则不易产生毛刺。
(3)如果使用门电路搭建latch和DFF,则latch消耗的门资源比DFF要少,这是latch优越的地方。故ASIC中使用latch的集成度比DFF高,但在FPGA中则正好相反,因为FPGA中没有标准的latch单元,但有DFF单元,一个Latch多个LE才能实现。
很多时候latch是不能代替FF的。
(4)latch将静态时序分析变得极为复杂。
一般设计规则是,在绝大多数设计中避免产生latch。因为latch会让设计的时序混乱,并且它的隐蔽性很强,很难检查。Latch最大的危害在于不能过滤毛刺,这对下一级电路是极其危险的。所以能用D触发器的地方就不用latch。
有些地方没有时钟,也只能使用latch了。比如现在将一个clk接到latch的使能端(假设高电平是能),这样需要的setup时间(建立时间)就是数据在时钟的下降沿之前需要的时间
4、寄存器(register)
用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果,它被广泛的用于各类数字系统和计算机中。就是个常用的时序逻辑电路,但这总时序逻辑电路只包含存储电路。
寄存器的存储电路是由 锁存器 或 触发器 构成的,因为一个锁存器或触发器存储1位二进制数,所以由N个锁存器或触发器可以构成N位的寄存器。工程中的寄存器一般按计算机中字节的位数设计,所以一般有8位、16位寄存器。
寄存器的应用:
完成数据的并串、串并转换;
用作显示数据锁存器:如许多设备需要显示计数器值,以BCD码计数以数码管显示,若计数速度较高人眼则无法发觉变化的字符。在计数器和译码器之间加一个锁存器,控制数据的显示时间是常用的方法
用作缓冲期;
组成计数器:移位寄存器可以组成移位型计数器如环形和扭环形计数器。
寄存器与锁存器的区别
寄存器与锁存器的功能是提供数据寄存和锁存。寄存功能是指把数据暂时保存,需要时取出。锁存功能是指总线电路中,锁定数据输出,使输出端不随输入端变化。
5、移位寄存器
移位寄存器:具有移位功能的寄存器称为移位寄存器。寄存器只有寄存数据或代码的功能。有时为了处理数据,需要将寄存器中的各位数据在移位控制信号作用下,依次向高位或向低位移动1位。移位寄存器按数码移动方向分类有左移,右移,可控制双向(可逆)移位寄存器;按数据输入端、输出方式分类有串行和并行之分。除了D边沿触发器构成移位寄存器外,还可以用诸如JK等触发器构成移位寄存器。
6、总线收发器/缓冲器
缓冲寄存器:又称缓冲器(buffer):多用在总线上,提高驱动能力、隔离前后级。
缓冲器多半有三态输出功能。当负载不具有非选通,输出为高阻特性时,将起到隔离作用;当总线的驱动能力不够驱动负载时,将起到驱动作用。
由于 缓冲器接在数据总线 上,故必须具有三态输出功能。它分 输入缓冲器 和 输出缓冲器 两种。
输入缓冲器:将外设送来的数据暂时存放,以便处理器将它取走;
输出缓冲器:是用来暂时存放处理器送往外设的数据。有了数控缓冲器,就可以使高速工作的CPU与慢速工作的外设起协调和缓冲作用,实现数据传送的同步。
Buffer: 缓冲区,一个用于在初速度不同步的设备或者优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。
缓冲器主要是计算机领域的称呼。具体实现上,缓冲器有用锁存器结构的电路来实现,也有用不带锁存结构的电路来实现。一般来说,当收发数据双方的工作速度匹配时,这里的缓冲器可以用不带锁存结构的电路来实现;而当收发数据双方的工作速度不匹配时,就要用带锁存结构的电路来实现了(否则会出现数据丢失)。
缓冲器在数字系统中用途很多:
如果器件带负载能力有限,可加一级带驱动器的缓冲器;
前后级间逻辑电平不同,可用电平转换器加以匹配;
逻辑极性不同或需要将单性变量转换为互补变量时,加带反相缓冲器;
需要将缓变信号变为边沿陡峭信号时,加带施密特电路的缓冲器;
数据传输和处理中不同装置间温度和时间不同时,加一级缓冲器进行弥补等等。
————————————————
版权声明:本文为CSDN博主「风中少年01」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26652069/article/details/99703042
四、阻塞赋值和非阻塞赋值
目前,我正在学习一些使用VHDL的FPGA设计技术,我的问题是我们是否可以在VHDL中使用:=和<=可互换,尽管我已经看到在常量声明中使用:=和<=在赋值中?提前致谢!
规则比这更复杂,但基本上:你使用 <= 进行信号分配,这将在下一个增量循环中生效 . 您使用 := 进行变量赋值,这将立即发生 . 因此,如果您有信号,则始终使用 <= . 如果您有变量,则始终使用 := .
在某些地方,这种情况并不常见,例如初始化,即使对于信号,也会使用 := .
所以:
signal some_signal : std_logic := '0'; -- 0 initial value
...
variable some_variable : std_logic := '0'; -- 0 initial value
...
some_signal <= '1'; -- will assign 1 at the next time step (delta cycle)
...
some_variable := '1'; -- assigns 1 immediately
回复于 2019-04-02T00:54:53+00:00
如果你使用 signal temp:std_logic_vector 那么你将不得不使用 <=
如果您使用 variable temp:std_logic_vector 那么您将不得不使用 :=
求vhdl里<=和:=的区别
<=是对信号进行赋值的赋值操作符,另外在关系运算中作为小于等于号使用;:=是对变量和常量进行赋值的赋值操作符,另外在声明信号、变量、常量的时候,可以用:=对其赋初值。
标签:输出,触发器,缓冲器,基础,存器,杂记,cpld,寄存器,latch From: https://www.cnblogs.com/luhuaiji1983/p/17397415.html