实验二

2.1

  • 设计一个由反相逻辑门电路构成的 3-8 译码器,并对电路进行仿真测试,以验证电路的功能。

整体方案设计

输入输出引脚
  • \(G1、G2A_L、G2B_L\):三个控制位
  • \(ABC\):三位二进制输出
  • \(Yi_L\)(\(i=0,1,2,...,7\)):8位译码后的二进制输出

原理图

image

电路图

image

仿真测试

  • 初始状态
    image
  • 第一步
    image
  • 第二步
    image
  • 第三步
    image
  • 第四步
    image
  • 第五步
    image

可以看到结果符合预期

f7fe856f33472e1f3ed0dcf01359a04e

错误现象及分析

没有遇到错误

2.2

  • 设计一个由逻辑门电路构成的 8-3 优先级编码器,并将编码器输出连接到一个十六进制数码管,通过数码管的输出显示来验证和测试电路。

整体方案设计

输入输出引脚
  • \(Ii\)(\(i=0,1,2,...,7\)):8位输入
  • \(O_0,O_1,O_2\):3为编码结果输出

原理图

image

电路图

image

仿真测试

  • 初始状态
    image
  • 第一步
    image
  • 第二步
    image
  • 第三步
    image
  • 第四步
    image
  • 第五步
    image

可以看到上述电路没有问题

2cbdea761db7a39ac0394bbf34318347

错误现象及分析

没有遇到错误

2.3

  • 设计一个支持4位数加减法的器件

整体方案设计

输入输出引脚
  • \(X\):被加(减)数
  • \(Y\):加(减)数
  • Cin:模式选择
  • Cout:进位

原理图

12831b259a9f7050a53a7a22209ceffc_SVNrbk5LMDBZRitOYysyc1BBL0xhUT09

电路图

image

仿真测试

  • 初始状态
    image
  • 第一步
    image
  • 第二步
    image
  • 第三步
    image
  • 第四步
    image
  • 第五步
    image
  • 第六步
    image
  • 第七步
    image
  • 第八步
    image
  • 第九步
    image
  • 第十步
    image
  • 第十一步
    image
  • 第十二步
    image
  • 第十三步
    image
  • 第十四步
    image
  • 第十五步
    image

可以看到电路符合状态

错误现象及分析

没有遇到错误

2.4

  • 设计一个支持7位汉明码校验及自动纠错的元器件

整体方案设计

输入输出引脚
  • Input:输入的7位
  • Output:校验结果
  • NoError:是否出错的判定

原理图

a2e2714dc9a9fa1500c255202279df05_WVNvaVlFTW1mV1FaaEtJK3BEUWxrUT09

电路图

主电路

image

3-8 译码器

image

4位奇偶校验器

image

仿真测试

  • 初始状态
    image
  • 第一步
    image
  • 第二步
    image
  • 第三步
    image
  • 第四步
    image
  • 第五步
    image
  • 第六步
    image
  • 第七步
    image
  • 第八步
    image
  • 第九步
    image
  • 第十步
    image
  • 第十一步
    image
  • 第十二步
    image
  • 第十三步
    image

可以看到没有问题

错误现象及分析

没有遇到错误

2.5

  • 设计一个支持8位数左右移的元器件

整体方案设计

输入输出引脚
  • DataIn:Din输入的8位数字
  • Dout:移位后的结果
  • L/R:移动方向设置
  • A/L:移动方式选择
  • shamt:移动位数

原理图

028e8c920a67627146afa5486a5856e3_S0dQayt2UHEzLzk0bnNJRjQ5dzJQQT09

电路图

左移一位

image

左移两位

image

左移四位

image

右移一位

image

右移两位

image

右移四位

image

主电路

image

仿真测试

  • 初始状态
    image
  • 第一步
    image
  • 第二步
    image
  • 第三步
    image
  • 第四步
    image
  • 第五步
    image
  • 第六步
    image
  • 第七步
    image
  • 第八步
    image
  • 第九步
    image
  • 第十步
    image
  • 第十一步
    image
  • 第十二步
    image
  • 第十三步
    image
  • 第十四步
    image
  • 第十五步
    image
  • 第十六步
    image
  • 第十七步
    image

可以看到没有问题

错误现象及分析

没有遇到错误

思考题

修改实验中的加法器电路,生成进位标志 CF、溢出标志 OF、符号标志 SF 和结果为零标志位 ZF。

  • CF
    image
  • OF
    image
  • SF
    image
  • ZF
    image

通过带标志位加法器输出(X>Y)等于和(X<Y)小于的信号

参考CSAPP可以得出下面的结论

无符号整数

  • ZF=1:X和Y相等
  • ZF=0 且 CF=1:X小于Y
  • 如果 ZF=0 且 CF=0:X大于Y

有符号整数

  • ZF=1:X和Y相等
  • ZF=0 且 SF=0 且 OF=0 或 SF=1 且 OF=1:X大于Y
  • 如果 ZF=0 且 SF=0 且 OF=1 或 SF=1 且 OF=0:X小于Y

不使用加法器直接使用逻辑门电路实现 4 位无符号二进制数比较器,输出大于和小于二个结果

  1. 逐位比较的基本信号:

    • 对于每一位\(i\)(从3到0):
      • \(gt_i = A_i \overline{B_i}\) // \(A_i > B_i\) 时为1
      • \(lt_i = \overline{A_i}B_i\) // \(A_i < B_i\) 时为1
      • \(eq_i = \overline{A_i \oplus B_i}\) // \(A_i == B_i\) 时为1
  2. 比较过程:

    • \(GT (A > B)\):从最高位开始,如果某位\(A > B\)且之前所有高位相等,则\(GT=1\)
      • 表达式:\(GT = gt_3 + (eq_3 gt_2) + (eq_3 eq_2 gt_1) + (eq_3 eq_2 eq_1 gt_0)\)
    • \(LT (A < B)\):类似,但检查\(A < B\)
      • 表达式:\(LT = lt_3+(eq_3 lt_2) + (eq_3 eq_2 lt_1) +(eq_3 eq_2eq_1 lt_0)\)

如何使用 8 位桶形移位器扩展到 32 位桶形移位器

首先,将一个32位的操作数按字节拆解为四个8位二进制段,从最低有效字节到最高有效字节依次标记为 A、B、C、D

具体实现上,可将32位数据划分为4个独立的8位单元。每个单元均可借助现成的8位桶形移位器完成移位处理,再将这四个移位器按顺序级联构成一条移位链。其中,第一个移位器负责处理最低8位(A),第二个处理紧邻其上的8位(B),依此类推

当需要执行 4 位、2 位或 1 位的移位组合时,仅需串联一组(共4个)8位桶形移位器即可达成目标。此时,shamt信号的低三位作为该组移位器的控制输入。但为了支持跨字节移位,需对桶形移位器的输入结构做适当调整:

修改方案:在原有输入基础上增加“待移入位”字段。例如,在右移场景中,“待移入位”应作为高位补入。以处理B字节的移位器为例,其输入应包含B和C两个字节;同理,对于最高位字节D,在逻辑右移时直接高位补0(若为算术右移,则依据符号位扩展补值)。如此设计,即可完整支持0至7位范围内的32位数据移位

若移位量大于等于8位但小于16位,建议采用两组串联的8位桶形移位器(共计8个),即将整个移位过程分解为两个阶段。例如,若需右移12位,可先执行6位移位,再追加一次6位移位。而对于移位量大于等于16位的情形,则采用四组串联结构(共32个移位器),将大移位量分解为4次不超过8位的移位操作,从而完成整体功能

posted @ 2025-11-01 19:37  最爱丁珰  阅读(10)  评论(0)    收藏  举报