计算机组成原理实验

汉字编码实验

  • 遇到的问题
  1. ansi与gbk的关系 utf-8.为什么gb2312的文本格式要以ansi存盘
  2. -A0A0的补码dfe0
  3. gbk转十六进制代码 hexString
  • 以上问题有一个综合答案,为什么要半角转全角?因为国标转区位码电路是针对中文字符的电路,如果用半角的电路,在字库中找不到对应的字符,自然就显示不了当前字符。其他的细枝末节就不用关心了。例如,逗号句号的全角半角,这些都不重要。

海明编码实验

  • 遇到的问题
  1. 为什么p6要与所有的输入相异或
  2. g6的总偶校验实现原理是什么?
  3. p6和g6的关系是什么?(奇偶校验的原理)
  • 解决的问题:
  1. 回顾了一下解码器,通过真值表的最小项相或画电路图。
  2. 想了一下,无论任何电路,增加一位总的奇/偶校验位,就可以验证总的编码是否出错.(该实验一是将偶校验用在了海明编码电路中p6,而是将偶校验用在了海明解码电路中G6)

crc编码实验

电路

  1. 模二运算的的异或取余公式
  2. 校验公式:先不看电路,刚开始,传过来的crc编码按位取反(也就是异或),和生成多项式G(x)模2除,如果生成的余数为0(首先保证只有一位错的情况),那么对应位一定有错,因此将余数取反,此时的余数为1,在与该数据位异或,即可纠正该数据位。
  3. 通俗点讲,第一步,将crc编码按位取反与Gx模2运算,根据公式1该公式可以化简为(crc%gx)^(该数据位取1%gx),接下来,对应位会生成1位余数,如果该余数位0,说明该位有错,然后将该位取反。如果为1,说明该数据位没有错误。(x^0=x,x^1=-x)
  • 遇到的问题
  1. 模2运算是什么 √
  2. 回顾补码

快速加法器

  • 看法:
  1. 对G,P的解读,在四位先行进位电路中,其输入引脚Gi和Pi分别是一位相加后生成的先行进位信号。同理,G星和P星就是四位一组的先行进位信号.
  2. 对第一点的进一步解读,G和P的推导是由公式Ci=XiYi+(Xi^Yi)Ci-1得来的,其中G看成是XiYi,P看成是Xi^Yi,也就是说,就算要推导,也应当从进位公式得出。那么,再看C4=G4+P4G3…..,这就是四位一组的先行进位公式,将G※看作是….,P※看作是….
  3. 对8位可控加减法的无符号加法和减法的溢出的检测。加法很明显,就是最高位进位,如果为1,那就是溢出。无符号减法的溢出在最高位进位加一个非门。因为无符号减法同样是对减数y(表达式x-y)取反再加一,可以随便找两个二进制数试一下,切记,y取反再加一之后,就变成了x+y^,这里的y^是改变过后的y.

四位快速加法器->十六位快速加法器->三十二位快速加法器

四位
电路
十六位
电路
三十二位
电路

  • 其中的CLA74182是先行进位电路,多次复用
  • 关于加法器还剩下移位乘和移位除,之后有时间再看。直接进入RAM设计

    纠正之前对用加法设计乘法的错误

  • 例如,1000*1000,一开始以为计算机是作1000次加法,让1000个1000相加。学了乘法器的主要两种设计方法的其中一种——阵列乘法器之后,发现其实是用手算的思路去实现的,首先根据输入的多位数,列乘法算式,可以提前计算出每一位,再将每一位用全加器相加(行位进位慢,斜位进位快)。
  • 其实反过来想,1000个1000相加,开销很大,利用阵列乘法器降低了存储开销。

RAM实验

记录

字库电路 字扩展

  • 字扩展(容量扩展),地址线的高两位用来片选。
  • 下面七个ROM相当于是位扩展,各自提供各自的数据位,全部选通。上面的四个ROM相当于字扩展,同一时刻,只有一个ROM被选通。
  • 这里再解释一下。四个12*4B的ROM相当于是由一个16x4B的ROM分裂而来,顺过来想,总的存储容量没有发生改变,相当于把存储容量除以了4.那么字扩展为什么能扩大容量呢。这里逆过来想就行了,如果手中有四个独立的12x4B的ROM,想要组成一个容量更大的ROM,只有通过字扩展来实现,12根地址线,10根拿来做地址选通,后两根拿来做片选信号。
  • 最后片选功能的实现可以用译码器实现,也可以用多路选择器实现,原理一样。

    MIP RAM实验

  • 本质上的位扩展实验。
  • 其中字节选通功能和字库电路中的字扩展功能相同,该实验中,因为有12根地址线,四个10*1B的ROM,还剩下两根地址线,恰好做片选。
  • 字节选通功能和位扩展又不大相似,位扩展是每一个ROM都提供各自的位,最后组成总的数据位。字节选通相当于又回到了字扩展,因为单位时间内只有一个ROM提供数据,至于是哪个ROM,经过片选决定。
  • 待解决问题:为什么RAM测试电路中没有时钟信号。

单周期MIPS CPU实验

  • 疑问:为什么需要一条指令执行过程中数据通路的任何资源不能被重复使用,必须设置多个。另外,取指和指令执行均需要用到存储器,存储器不可能设置多个,所以要分别设置指令存储器和数据存储器。

    注意事项

  1. 隧道tunnel只能用在同一个电路中 不能跨电路使用
  2. 异或门的属性,缺省是错误的?