1.8位加法器
cin:输入 cout:输出 S0-S7:八位结果 X:加数 Y:被加数 OF:溢出标志 (0不溢出,1溢出)
设计思路:采用8个一位加法器串行连接,利用分线器将各位数据分成一位,和一位加法器适用,溢出标志则是FA6进位,FA7进位两者异或的结果(因为进位为10或者01的时候就代表有进位,而二进制的加法中,不管是哪一位有进位,都会向前进一位,所以这里OF如此表示。)
封装如下:
2.32位可控加减器
设计思路:这里ADD是1中的八位加法器的封装图,OF,CF直接跟ADD给出的相应口相连。根据给出的可知ZF表示结果为0,所以让常量0(或者1)跟结果做一个比较,相等的时候接出给ZF即可;SF就是结果的标志位也就是三十二位的最高位,利用分线器得到最高位与SF直接相连。
ps:32位加减可控器也就是需要4个八位加法器串行连接,加减可控由sub信号与一个加数异或,进入加法器控制。
32位加减可控的封装图如下:
测试数据:
设计思路:具体如下,alu设计比较简单,不做过多赘述
4.补码一位乘法器
设计思路:
此间利用了八位加减可控器,32位ALU运算器封装之后的内容,结合计数器和寄存器来组成实现八位补码乘法器。
所有的测试数据都在文件”打印件”中上传
链接如下: