最近看RISC CPU设计,发现里面的设计有Latch,以前记得总是说最好不要用Latch,所以就有点怀疑,于是查了一些资料,发现虽然Latch有一定的缺点,但是既然它存在,就肯定就有优点,原来它占用面积更小,运行速度更快,所以有时会用在CPU设计,但是在普通设计中,还是不提倡的,既然提到了Latch,那就不能不说说和它相关的几个其它概念:触发器、寄存器。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
锁存器(latch):我听过的最多的就是它是电平触发的,呵呵。锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,当锁存器处于使能状态时,输出才会随着数据输入发生变化。(简单地说,它有两个输入,分别是一个有效信号EN,一个输入数据信号DATA_IN,它有一个输出Q,它的功能就是在EN有效的时候把DATA_IN的值传给Q,也就是锁存的过程)。
应用场合:数据有效迟后于时钟信号有效。这意味着时钟信号先到,数据信号后到。在某些运算器电路中有时采用锁存器作为数据暂存器。
缺点:时序分析较困难。不要锁存器的原因有二:1、锁存器容易产生毛刺,2、锁存器在ASIC设计中应该说比ff要简单,但是在FPGA的资源中,大部分器件没有锁存器这个东西,所以需要用一个逻辑门和ff来组成锁存器,这样就浪费了资源。
优点:面积小。锁存器比FF快,所以用在地址锁存是很合适的,不过一定要保证所有的latch信号源的质量,锁存器在CPU设计中很常见,正是由于它的应用使得CPU的速度比外部IO部件逻辑快许多。latch完成同一个功能所需要的门较触发器要少,所以在asic中用的较多
触发器(flipflop):呵呵,当然最基本的就是边沿触发,也是我平时用的最多的了。记得刚接触IC时,死活就不明白ff到底是什么东西,呵呵
应用场合:时钟有效迟后于数据有效。这意味着数据信号先建立,时钟信号后建立。在CP上升沿时刻打入到寄存器。
锁存器与触发器的区别:
锁存器电平触发会把输入端的毛刺带入输出;而触发器由于边沿作用可以有效抑制输入端干扰;
寄存器(register):用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。
至于寄存器,是processor里面的东西,比如ARM核里面的R0~R15、CPSR、SPSR和MIPS核里面的$0~$31,这些都是寄存器。而寄存器既可以由触发器设计,也可以由锁存器设计(register file设计是processor design里面非常核心的技术问题之一)。
Buffer:缓冲区,一个用于促初速度不同步的设备或者优先级不同的设备之间传输数据的区域,通过缓冲区,可以使进程之间的相互等待变少,从而是从速度慢的设备读入数据是,速度快的设备的操作进程不发生间断。
上述资料也是自己查找相关资料总结的,大多出自论坛上,所以大部分也是大家个人的观点,争议性比较大,也没有什么权威具体的参考资料,所以难免有不正确的地方,如果有什么问题,也欢迎大家指出修改。
用户823625 2007-7-27 14:35
用户1100340 2007-1-16 10:11
好!
我是初学者,又帮助。
上面提到的用逻辑们和ff组成琐存器,怎么实现
用异步置零置一吗