数字系统各模块之间的信息传输,以及模块内部各子模块之间的信息加工、存储与传输操作,不能用组合电路和时序电路中采用的方法进行描述,必须采用更高级的描述方法,方法之一是寄存器传输语言RTL,并且这个表示法同硬件之间有着简单的对应关系。这种寄存器传输语言适于描述功能部件级的数字系统,用RTL语言使系统要求与硬件电路间建立对应的关系。能简明、精确地描述系统内信息的传送和处理。 在寄存器传输语言中,一个语句标号对应于时序流程图中的一个状态框,条件转移语句对应时序流程图中的判断框,用无条件转移语句描述状态之间的无条件转移等等。数字系统中最常用到的操作有6类:
1、寄存器间相互传送操作
在寄存器传输语言中,用大写英文字母表示寄存器,也可用图形表示,如图1左所示。还可以把寄存器的每一位都表示出来,如图1右所示。其中方括号内是每一位的编号。
(1)无条件传送语句
无条件传送语句格式为:A←B,其中,箭头表示传送方向,B称为源寄存器,A称为目的寄存器。传送操作是一个复制过程,不改变源寄存器的内容,无条件传送操作一般与时钟无关,而是在一定条件下发生。
(2)条件传送语句
传送条件常由控制器给出的逻辑函数规定,其中"!"和"*"是条件语句专用符,"!"称为间隔符,其意义是间隔符左边和右边的数据之间没有联系。"*"是条件语句的连接符,"*"号右边是传送条件。
图1 RTL中寄存器间相互传递操作
2、算术运算操作
基本的算术操作是加、减、取反和移位。
表1 算术操作 | |
符号表示法 | 说明 |
F←A+B | A与B之和传输给F |
F←A-B | A与B之差传输给F |
B←B+1 | 求寄存器B存数的补码 |
B←B | 求寄存器B存数的反码 |
F←A+B+1 | A加B的补码传输给F |
A←A+1 | 加1 |
A←A-1 | 减1 |
3、逻辑操作
逻辑操作是两个寄存器对应之间的操作,包括与、或、非,为了区别于算术运算符号,这里的与、或、非分别用符号∧、∨和字母上方加一横表示。
表2逻辑运算 | |
符号表示法 | 说明 |
F←A | “非"操作 |
F←A∨B | "或"操作 |
F←A∧B | "与"操作 |
F←A⊕B | "异或"操作 |
4、移位操作
移位操作分为左移和右移两种。
(1)左移操作语句:A←shlA,A[0]←0
(2)右移操作语句:A←shrA,A[3]←0
(3)循环左移操作语句: A←shlA,A[0]←A[3]
(4)循环右移操作语句: A←shrA,A[3]←A[0]
5、输入和输出操作
寄存器传输语言还可以描述系统输入、输出操作,如果将输入线X的数据传送到A寄存器,则表示为
A←X 把寄存器A的各位传送到输出线时,则采用符号"="表示
Z=A该语句意味着寄存器输入与输出线Z直接相连。
6、无条件转移和条件转移
(1)无条件转移语句
→(S) 表示下一步转向编号为S的语句继续执行。
(2)条件转移语句
(f1,f2,fn)/(S1,S2,Sn)
其中f是系统变量的函数,取值为0或1,当fi=1时,执行Si标号的语句,当所有的fi均为0时,顺序执行语句。
(3)空操作语句
→NULL表示不进行任何操作,而是利用它得到一个时钟的延时时间,然后顺序执行下一条语句。