1 / 76

5.1 微操作和寄存器传送语言 5.2 用 RTL 表示数字系统 5.3 复杂数字系统和 RTL 5.4 实例: VHDL - VHSIC 硬件描述语言

第五章 寄存器传送语言. 5.1 微操作和寄存器传送语言 5.2 用 RTL 表示数字系统 5.3 复杂数字系统和 RTL 5.4 实例: VHDL - VHSIC 硬件描述语言. 微操作: 大部分时序数字系统的基础。 是更简单的行为。. 数据从一个寄存器、存储器单元或者 I/O 设备 到另一个的传送 修改存储的值 执行算术或逻辑功能 修改已存储的值. 确定时序数字系统: 确定正确的微操作传送及其条件。 (这些条件保证微操作按正确的顺序执行) 设计时序数字系统:. 首先用微操作表述系统的行为

leoma
Télécharger la présentation

5.1 微操作和寄存器传送语言 5.2 用 RTL 表示数字系统 5.3 复杂数字系统和 RTL 5.4 实例: VHDL - VHSIC 硬件描述语言

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 寄存器传送语言 5.1 微操作和寄存器传送语言 5.2 用RTL表示数字系统 5.3 复杂数字系统和RTL 5.4 实例:VHDL-VHSIC硬件描述语言

  2. 微操作:大部分时序数字系统的基础。 是更简单的行为。 • 数据从一个寄存器、存储器单元或者I/O设备 • 到另一个的传送 • 修改存储的值 • 执行算术或逻辑功能 • 修改已存储的值

  3. 确定时序数字系统:确定正确的微操作传送及其条件。确定时序数字系统:确定正确的微操作传送及其条件。 (这些条件保证微操作按正确的顺序执行) 设计时序数字系统: • 首先用微操作表述系统的行为 • 设计硬件来匹配这些表述 硬件描述语言(hardware description language,HDL) (说明与系统需求对应的微操作的条件和传送) 电路分析和设计(circuit analysis and design,CAD)软件 (可以在用户规定的各种条件下仿真电路的行为)

  4. 5.1 微操作和寄存器传送语言 设计时序数字系统: • 首先用微操作表述系统的行为 • 设计硬件来匹配这些表述 一、微操作的格式 考虑有两个1位寄存器X和Y的一个数字系统。 拷贝寄存器Y的内容到寄存器X中的微操作:X←Y (有时也可以表示为Y→X)

  5. 两种实现: • 由直接连接实现 • 通过总线连接实现 X

  6. 二、传送发生的条件 1.假定传送应发生在输入控制α为高时, 则传送过程可以写为 IF α THEN X←Y 2.表示微操作和它们发生的条件: 条件:微操作 当所有冒号左边的条件满足时,执行微操作 (可以是多个)规定的数据传送。 3.上面的传送可以写为 α:X←Y

  7. X 4.具有控制信号的数据传送α:X←Y的实现 (a) 用直接通路 (b) 用总线

  8. 三、提高系统性能的一种方法 同时执行两个或多个微操作。 1.如果某系统在α= 1时执行X←Y和Y←Z的传 送,则这种情况可以表示成 α: X←Y,Y←Z 或者 α: Y←Z,X←Y

  9. 数据传送α: X←Y,Y←Z的实现

  10. 2.同时拷贝相同的数据到多个目的地。 考虑 α: X←Y,Z←Y 实现数据传送α: X←Y,Z←Y

  11. 3.数字系统不能同时往同一寄存器中写入两个不同的值。3.数字系统不能同时往同一寄存器中写入两个不同的值。 例如: 表示 α: X←Y,X←Z无效 四、传送常量的有效条件和微操作 α: X←0 β: X←1 实现这两个传送的三种不同方法: ◆ 通过两个传送通路装载数据来设置X的值。 ◆ 装载数据与第一个完全相同,但它的数据直接由 信号β产生。 ◆ 为简化硬件可使用寄存器的清除输入功能。

  12. 数据传送α: X←0与β: X←1的三种实现: (a) 用一个多路选择器来选择输入的数据 (b) 用β作为数据输入 (c) 用CLR信号

  13. 问题:当α和β同时为1时,怎么办? 两种解决方法: ◆ 产生α和β的硬件能保证它们决不会被同时置为1 ◆ 修改条件使它们互斥 αβ’: X←0 α: X←0 αβ’: X←0 β : X←1 α’β: X←1 α’β: X←1 五.寄存器之间的多位数据传送 1.同样大小寄存器对应位之间传送数据 例如:当α=1时,从4位寄存器Y传送数据到4位寄存器X 用符号表示 α: X←Y

  14. 4比特数据传送α:X←Y的实现: (a) 用直接连接 (b) 用总线

  15. 2.访问一个寄存器的某一位或位组。 表示每一位:如X3或Y2。 3.表示位组(用一个域表示) 如X3、X2和X1可以写成X(3-1)或X(3:1) α: X(3-1)←Y(2-0) β: X3←X2 γ: X(3-0)←X(2-0),X3 (X(2-0,3)或 X3←X2,X2←X1,X1←X0,X0←X3)

  16. 操 作 示 例 Add X←X + Y Subtract X←X – Y 或 X←X + Y’ + 1 Increment X←X + 1 Decrement X←X–1 And X←X ∧ Y 或 X←XY OR X←X ∨ Y XOR X←X ⊕ Y NOT X←/X 或 X←X’ 六、执行数据的算术运算、逻辑运算和移位运算的微操 作 1.一些常用的算术运算和逻辑运算的微操作

  17. 2.移位微操作 ◆ 线性移位:每一位的值依次向左(或右)移位。 最后1位被丢弃,空位补入0值。 例如:X=1011 左移一位:0110 右移一位:0101 ◆ 循环移位:将在线性移位中被丢弃的位循环回来 替代补入的0值。

  18. 例如: X=1011 循环左移:0111 循环右移:1101 ◆ 算术移位:用于带符号数的移位。 运算规则:符号位在移位操作中保持不变,工作原理 与线性移位相似。 例如: X=1011 算术左移:1110 算术右移:1101

  19. 十进制移位:专门用于BCD表示。十进制移位与线性 移位很相似,但它移动1个数字或4位, 而不是移动1位。 例如:X=1001 0111 十进制左移:0111 0000 十进制右移:0000 1001

  20. 操 作 示 例 线性左移 shl(X) 线性右移 shr(X) 循环左移 cil(X) 循环右移 cir(X) 算术左移 ashl(X) 算术右移 ashr(X) 十进制左移 dshl(X) 十进制右移 dshr(X) ◆ 移位操作和它们的表示法

  21. 例如:X←shl(X)和shl(X)是等价的。 Y←shl(X)两个寄存器均需指定 七、寄存器与存储器之间的数据传送 例如: M[55]←AC和AC←M[55] 寄存器AC与存储器中55号单元之间的数据传送 更好的方法:把地址存入寄存器中,然后由寄存器提供 存储器的访问地址。 (地址寄存器,标示为AR) AR←55 M[AR]←AC或者AC←M[AR]( M←AC和AC←M)

  22. 5.2 用RTL表示数字系统 5.2.1 数字元件表示 一、第一个例子( D触发器) 1.用RTL描述: LD:Q←D D触发器:(a)无清0输入端 (b)有清0输入端

  23. 2.有一同步清0输入端的D触发器 LD: Q←D CLR: Q←0 ◆ 当D、LD和CLR都等于1时,系统会失败。 解决方法:改变条件使得两者互斥。 CLR’LD: Q←D LD: Q←D CLR: Q←0 LD’CLR: Q←0

  24. 二、第二个例子(一个没有CLR输入端的JK触发器)二、第二个例子(一个没有CLR输入端的JK触发器) 用RTL描述: J’K: Q←0 JK’: Q←1 JK : Q←Q’ 三、最后一个例子(一个n位的移位寄存器) ◆Qn-1是最高位,Q0是最低位。 ◆ 当SHL信号为高时,它将其中的数据左移一位。 ◆ 输入Sin移进最低位。 移位寄存器: SHL: Q←Q(n-2:0),Sin

  25. 5.2.2 简单系统的表示与实现 例如: 一个有4个1位触发器的系统 ◆ 用RTL代码表示传送 (假设条件j,o,h和n是互斥的) j: M←A o: A←Y h: R←M n: Y←R , M←R ◆ 几种不同的方法实现

  26. 1.用直接连接实现系统的数据通路 ◆ 用直接连接实现的该RTL代码的系统的数据通路

  27. 用直接连接实现该RTL代码的系统的完整设计 在合适的时间激励触发器的LD信号来装载数 据,从而完成传送。 ▲ 当j=1(M←A)或n=1(M←R)时,触发器M 装载数据。 ▲ 在满足单个条件o、h和n时,触发器A、R和Y 装载数据。

  28. 2.用总线和三态门实现 j: M←A o: A←Y h: R←M n: Y←R ,M←R

  29. 3. 用总线和多路选择器实现 j: M←A o: A←Y h: R←M n: Y←R ,M←R

  30. 5.3 更复杂数字系统和RTL 5.3.1 模6计数器 目的:设计一个模6计数器 步骤: 模6计数器 : 000→001→010→011→100→101→000→… (0→1→2→3→4→5→0…) • 用RTL表示计数器的功能 • 用数字逻辑实现RTL的代码

  31. 假设: 输入端U:控制计数 当U=1时,计数器在时钟的上升沿增加它的值。 当U=0时,不管时钟的值如何,它都保持当前值不变。 输出V2V1V0:计数器的值 进位输出:C 状态:S0→S1→S2→S3→S4→S5→S0→… (两个另外状态S6和S7) 模6计数器的状态表和状态图

  32. 当前状态 U 下一状态 C V2V1V0 S0 0 S0 1 000 S0 1 S1 0 001 S1 0 S1 0 001 S1 1 S2 0 010 S2 0 S2 0 010 S2 1 S3 0 011 S3 0 S3 0 011 S3 1 S4 0 100 S4 0 S4 0 100 S4 1 S5 0 101 S5 0 S5 0 101 S5 1 S0 1 000 S6 X S0 1 111 S7 X S0 1 111

  33. 一、用RTL表示系统 (S0+S1+S2+S3+S4)U: V←V+1 , C←0 S5U : V←0 ,C←1 S6 + S7: V←0 , C←1 在条件(S0+S1+S2+S3+S4+S5)U’下,计数器保持当 前值与C值不变。 可以用两条RTL语句表示:(S5U和S6 + S7触发相同 的微操作) (S0+S1+S2+S3+S4)U: V←V+1,C←0 S5U+S6+S7: V←0,C←1

  34. 二、模6计数器RTL代码的两种实现 ◆ 用一个寄存器 S5U+S6+S7 (S0+S1+S2+S3+S4)U

  35. ◆ 用一个计数器(简单) U(V 2 ’+V1 ’V0 ’) V 2 V1 + V 2 V0 U

  36. 5.3.2 收费站控制器 ◆ 两个外部传感器 ▲ C显示车辆是否在收费站中 当车在时,C=1,否则C=0。 ▲ 显示硬币是否已经投到收费站的收集篮中以及 硬币的面值。 • 没有硬币投入 I1I0=00 • 投入五分硬币 I1I0=01 • 投入一角硬币 I1I0=10 • 投入25分硬币 I1I0=11

  37. ◆ 两个输出指示灯和一个警报灯 ▲ 当一辆汽车驶入收费站时,红灯(R)亮, 直到司机投入35分硬币,此时红灯熄灭,绿灯(G)亮, 绿灯保持亮着直到汽车离开收费站; ▲ 当绿灯灭时,红灯又亮了。 ▲ 如果没有付足够的通行费,汽车离开,红灯一直保 持亮着且警报(A)响。 ▲ 警报维持到另一辆汽车驶入收费站;然后停止。 一、控制器的状态表和状态图

  38. 状态 条 件 R G A SNOCAR 车站中无车 1 0 0 S0 站中有车,未付费 1 0 0 S5 站中有车,已付费5分 1 0 0 S10 站中有车,已付费10分 1 0 0 S15 站中有车,已付费15分 1 0 0 S20 站中有车,已付费20分 1 0 0 S25 站中有车,已付费25分 1 0 0 S30 站中有车,已付费30分 1 0 0 SPAID 站中有车,已付足过路费 0 1 0 SCHEAT 未付足过路费就离开车站 1 0 1

  39. 当前 状 态 C I1I0 下一状态 R G A 当前状态 C I1I0 下一状态 R G A SNOCAR 1 XX S0 1 0 0 S15 0 XX SCHEAT 1 0 1 SPAID 0 XX SNOCAR 1 0 0 S15 1 01 S20 1 0 0 SCHEAT 1 XX S0 1 0 0 S15 1 10 S25 1 0 0 S0 0 XX SCHEAT 1 0 1 S15 1 11 SPAID 0 1 0 S0 1 01 S5 1 0 0 S20 0 XX SCHEAT 1 0 1 S0 1 10 S10 1 0 0 S20 1 01 S25 1 0 0 S0 1 11 S25 1 0 0 S20 1 10 S30 1 0 0 S5 0 XX SCHEAT 1 0 1 S20 1 11 SPAID 0 1 0 S5 1 01 S10 1 0 0 S25 0 XX SCHEAT 1 0 1

  40. S5 1 10 S15 1 0 0 S25 1 01 S30 1 0 0 S5 1 11 S30 1 0 0 S25 1 10 SPAID 0 1 0 S10 0 XX SCHEAT 1 0 1 S25 1 11 SPAID 0 1 0 S10 1 01 S15 1 0 0 S30 0 XX SCHEAT 1 0 1 S10 1 10 S20 1 0 0 S30 1 01 SPAID 0 1 0 S10 1 11 SPAID 0 1 0 S30 1 10 SPAID 0 1 0 S30 1 11 SPAID 0 1 0

  41. 状 态 T R G A SNOCAR 0000 1 0 0 S0 0001 1 0 0 S5 0010 1 0 0 S10 0011 1 0 0 S15 0100 1 0 0 S20 0101 1 0 0 S25 0110 1 0 0 S30 0111 1 0 0 SPAID 1000 0 1 0 SCHEAT 1001 1 0 1 Unused 1010-1111 1 0 0 收费站控制器状态赋值

  42. 二、将状态表转换成RTL语句 1.当控制器状态为SNOCAR且C=1,它转换到状态S0, 此状态值为0001。 (假设状态值存于4位寄存器T中) SNOCAR C: T←0001 如果我们想在每次传送后设置输出值,此状 态不得不包含微操作R←1,G←0和A←0。 2.状态SPAID和SCHEAT各仅有一个转移情况。 SPAIDC’: T←0000 SCHEATC : T←0001

  43. 3.状态S0在状态表中有四种可能的转移情况。 S0C’ : T←1001 S0CI1’I0 : T←0010 S0CI1I0’ : T←0011 S0CI1I0 : T←0110 4.对于其他状态,可以用同样的方法得到其RTL代码。 5.最终的入口是所有的无用状态均无条件转移到状态 0000。 6.整个控制器除输出之外的代码

  44. SNOCARC:T←0001 S15CI1’I0:T←0101 SPAIDC’:T←0000 S15CI1I0’:T←0110 SCHEATC:T←0001 S15CI1I0:T←1000 S0C’:T←1001 S20C’:T←1001 S0CI1’I0:T←0010 S20CI1’I0:T←0110 S0CI1I0’:T←0011 S20CI1I0’:T←0111 S10CI1I0:T←1000 S30CI1I0:T←1000 S15C’:T←1001 T3(T2+T1):←0000

  45. S0CI1I0:T←0110 S20CI1I0:T←1000 S5C’:T←1001 S25C’:T←1001 S5CI1’I0:T←0011 S25CI1’I0:T←0111 S5CI1I0’:T←0100 S25CI1I0’:T←1000 S5CI1I0:←0111 S25CI1I0:T←1000 S10C’:T←1001 S30C’:T←1001 S10CI1’I0:T←0100 S30CI1’I0:T←1000 S10CI1I0’:T←0101 S30CI1I0’:T←1000

  46. 三、扩展RTL代码产生输出 SPAIDC’:R←1,G←0 SCHEATC’:R←1,G←0,A←0 SNOCARC:R←1,G←0,A←0 S0C’:A←1 S5C’:A←1 S10C’:A←1 S10CI1I0:R←0,G←1 S15C’:A←1 S15CI1I0:R←0,G←1 当进入SPAID状态, 输出R : 1→0; 当离开SPAID状态时,输出R:0 → 1。 输出G正好相反,当进入SPAID状态时变成1,离开时变成0。 最后,无论何时进入SCHEAT状态,输出A变成1,离开SCHEAT状态时变成0。

  47. S20C’:A←1 S20CI1I0:R←0,G←1 S25C’:A←1 S25CI1I0’:R←0,G←1 S25CI1I0:R←0,G←1 S30C’:A←1 S30CI1’I0:R←0,G←1 S30CI1I0’:R←0,G←1 S30CI1I0:R←0,G←1 T3(T2+T1):R←1,G←0,A←0

More Related