2.2.2 组成存储设备的器件
计算机核心器件除了运算器之外,存储设备也是非常重要的组成部件。
2.2.2.1 触发器与寄存器
我们知道电信号传播的速度是同光的速度一样,300000km/s。因而电路输入端信号在输出端引起反应要经过一定的时间。可是电信号在一般电子器件中穿行的距离太小,因而许多小的电子器件电信号穿行的时间可以忽略不计。如果想让信号保留一段时间,必须用专门的设备,这种设备叫触发器,也称为锁存器。
一个触发器只能记录一位二进制数。如果将多个触发器组织在一起,并且能够人为地控制保存数据的时间,能够根据需要设置所保留的数据,这个设备就叫寄存器。
Verilog HDL语言将触发器看作寄存器的特例,用“reg”来描述寄存器。
例如,reg [15:0] a,b;定义了一个16位的寄存器。对寄存器的赋值也简单用“=”或“<=”符号进行。前者叫阻塞赋值,如果有多个这样的赋值表达式,要由前向后逐个进行。后者叫非阻塞赋值,多个这种赋值表达式可以同时进行。
例如,a = 8’b10101000;
b = 8’b10000011;
要先给a赋值,然后再给b赋值。如果将此处的“=”换成“<=”则a、b的赋值是同时进行的。赋值表达式的右侧是二进制常数10101000和10000011的表示,“b”是二进制表示符,单引号前面的数字是二进制数的位数。如果用其他进制表示数也可以,但前面的长度仍然用二进制的数码长度。
例如,a = 8’b10101000;可以表示成 a = 8’hA8;或a = 8’o250;字母“h”代表十六进制,“o”代表八进制。
实际的电路并不像Verilog HDL语言书写的那样简单,而必需转化成能够完成置数和保存数的电路。
2.2.2.1.1 D型触发器
图 2 -6是一个D型触发器,能在CLK瞬间为1时让D的值在Q端保持。
图 2 -6 D型触发器
若CLK=1,则 S=D,R=D’。如果此时D=1,那么S=1,R=0;由于门电路都是“高电位”起作用,所以或门再通过一个非门(或非门),使Q’=0,于是瞬间形成Q=1,Q’=0的状态。在CLK=1时,若D=0,那么S=0,R=1;由于或门电路高电位起作用,再通过一个非门,使Q’=1,于是瞬间形成Q=0,Q’=1的状态。可见不论D为何值,当CLK=1时,总有Q=D。
若此后CLK=0保持,则使S=R=0保持,但由于Q和Q’的反馈作用和“或非门”的特点,Q=D的状态会一直保持,这是一个稳定的状态。
不难看出CLK=0的时间长短,决定着前面进入的D的值保持时间的长度。
2.2.2.1.2 前沿触发器
D型触发器通过CLK=1能够将D的值保持,但实际电路中D的值变化很快,快到CLK=1的时间段内,D的值发生多次变化,也就是我们得到的值不一定是我们所要的那个值。一个直接的想法是让CLK=1的时间非常短,短到D的值来不及变化的程度,还有一个办法是让某个时刻的D值保持不变。图 2- 7就是为了解决这个问题而设计的。
图 2 -7 前沿触发器及简图
图 2 7(a)中将两个D型触发器连接成一个前沿触发器。CLK=0时,通过一个非门的作用,使左面一个D型触发器不断将输入端D值传给其Q端输出,但右面的D型触发器由于CLK=0,故仍然保持原来的值。而当CLK由0变1的瞬间,通过图中的非门电路,左面一个D型触发器的外面输入被封锁,右面的D型触发器接收的输入就保持D被封锁前的最末的值。此后,不论CLK的值是否变成0,右面D型触发器的输出端总是前面那个CLK由0变1的瞬间的外界的那个D值。
由于CLK由0变1的瞬间是矩形波形的前沿,得到的D值就在 CLK的前沿,故称图 2- 7的触发器组合为前沿触发器。可知,前沿触发器能够准确地捕捉数据信号。
前沿触发器使用时用简单的图 2- 7(b)图形符号表示。
2.2.2.1.3 寄存器
将多个前沿触发器顺序排在一起,就组成了能够将多位数据保存在两个CLK=1的间隔时间内的寄存器。如果想控制保存的时间,只要在CLK线路上加一个与门电路,与门的一个输入端还是原来的CLK,这样用另一个输入端就可以控制所有的前沿触发器保存数据的时间。图 2 -8是寄存器的简图。
图 2 -8 寄存器
图 2 -8中斜线上方的数字表示多股线的条数。寄存器一般也用矩形来简单表示,将与门隐藏进矩形内,外面多标出一条控制线k。
2.2.2.2 计数器
用硬件程序设计语言解决寄存器加减运算是非常容易的事,因为只要定义了寄存器变量,就可以用加减运算符号表达出来。
计数器是能够作加一运算和减一运算的寄存器,它的动作要远比将寄存器的数送到运算器,做完加减一或减一之后再回送寄存器的速度快得多。
计数器的构造和工作原理,暂时不懂也不影响用Verilog HDL编写设计程序。如果读者想深入了解,请参考姜咏江写的《计算机原理教程》一书的120页至121页,或者参考《计算机原理综合课程设计》一书的82页。
--- 待续 ---