作业帮 > 综合 > 作业

简单说明ALU的设计过程和原理性电路组成

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 07:37:19
简单说明ALU的设计过程和原理性电路组成
简要说 说的明吗... 我试试啊
一般ALU都有2个数据入口,以及操作类型输入口.一个数据出口,以及进位,大于,等于,小于,溢出等逻辑输出.
比如32位的ALU,2个数据入口和1个数据出口都是32位.至于操作类型用几位,取决于你的ALU都干什么操作以及内部译码的方式,位宽对于操作类型的编码来说,都有冗余的,可以方便扩展.
`define DATA_WIDTH 32
module ALU(
input CLK,
input [0:`DATA_WIDTH-1] BusR, //操作数1
input [0:`DATA_WIDTH-1] BusS, //操作数2
output [0:`DATA_WIDTH-1] BusY, //结果
input [6:0] Op_type, // 操作类型,加减乘除,自增/减,ABS之类的.
output [0:3] CGEL, // Carry Great Equal Less
output overflow, // 溢出位,一般连到内部中断锁存器
output RDYN
);
上面这个是verilog写的异步的ALU模块接口.至于内部实现嘛,你要是只仿真,行为级的建模就行啦(直接用+,-,×,/),查查verilog的书很多写ALU的.否则的话,就要查组成原理的书啦.4位加法器总懂的吧,扩展扩展就差不多了.不要并行进位,不要桶形移位的话,基本上该有的操作,都可以用最基本的加法器完成,只是CLK数需要的多一些.内部是需要一些暂存器储存中间结果的.
所谓异步ALU,你可以理解成是不同OpType执行的CLK数不同,RDYN有效后,表明BusY线和CGEL有效.外部模块就可以像读异步内存一样,读ALU结果了.
至于电路,这里怎么画呀?只是原理性的话,你把ALU画成像央视裤衩楼那样的形状,再写上ALU三个字母,别人就认识了 哈哈
另外如果你的ALU还有处理浮点的话,或许位宽就要double一下了,-_-|||