触发器:flipflop,锁存器:latch,寄存器:register
锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,尽当锁存器处于使能状态时,输出才会随着数据输入发生变化。

触发器是边沿敏感的存储单元,数据存储的动作有某一信号的上升或者下降沿进行同步的。

寄存器用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。
触发器是在时钟的沿进行数据的锁存的,而锁存器是用电平使能来锁存数据的。所以触发器的Q输出端在每一个时钟沿都会被更新,而所存器只能在使能电平有效器件才会被更新。在FPGA设计中建议如果不是必须那么应该尽量使用触发器而不是所存器。
触发器的语言描述:
process
begin
wait until clk’event and clk=’1’;
q<=d;
end process;
所存器的语言描述:
process(en,d)
begin
if en=’1’ then
q<=d;
end if;
end process;

触发器(flip-flop)VS寄存器(register)

触发器:仅能存储一位二进制信息

寄存器:多个触发器构成,存储多位二进制信息

触发器(flip-flop)VS锁存器(latch)

触发器:需要时钟信号配合,一般为时钟边沿跳变时数据被存储。

锁存器:电平敏感,此时的时钟CP应理解成使能信号更为合理,当使能有效时数据被存储。

触发器:能够存储一位信号的基本单元电路称为“触发器”;

锁存器:一位D触发器只能传送或存储一位数据,而在实际工作中往往希望一次传送或存储多位数据。为此 可把多个D触发器的时钟输入端口CP连接起来,用一个公共的控制信号来控制,而各个数据端口仍然是各处独立地接收数据。这样所构成的能一次传送或存储多位 数据的电路就称为“锁存器”。

寄存器:在实际的数字系统中,通常把能够用来存储一组二进制代码的同步时序逻辑电路称为寄存器。由于触发器内有记忆功能,因此利用触发器可以方便地构成寄存器。由于一个触发器能够存储一位二进制码,所以把n个触发器的时钟端口连接起来就能构成一个存储n位二进制码的寄存器。

区别:从寄存数据的角度来年,寄存器和锁存器的功能是相同的;它们的区别在于寄存器是同步时钟控制, 而锁存器是电位信号控制。可见,寄存器和锁存器具有不同的应用场合,取决于控制方式以及控制信号和数据之间的时间关系:若数据有效一定滞后于控制信号有 效,则只能使用锁;数据提前于控制信号而到达并且要求同步操作,则可用寄存器来存放数据。