1 ALU 算术逻辑部件设计
1.1 基本原理
算术逻辑部件(ALU)是数字计算机中执行加、减、乘、除等算术运算和执
行与、或、非、异或等逻辑运算以及执行比较、移位、传送等操作的一个功能部
件。算术逻辑部件的 verilog 代码如下所示,它能够实现半加器、全加器、比较、
按位与、按位或、按位异或、加一、减一的操作。在这里,我们设置了一个三位
的 s 来作为操作运算符的选择开关,通过对 s 的赋值来确定是哪一种运算操作,
运算的结果通过 count 和 out 输出。s 表示方法如表 1 所示:
表 1-1
S
运算法则
000
半加器
001
全加器
010
比较器
011
按位与
100
按位或
101
按位异或
110
加一操作
111
减一操作
实现程序:
module ALU(a,b,s,count,out,enable,cin);
input [7:0] a,b; //需要运算的两个输入数
input [2:0] s; //运算种类的定义
input enable,cin;
output count; //count 为加法计算时的进位
output [7:0] out;
reg count;
reg[7:0] out ;
always @(a or b or s or enable or cin)
begin
count<=1'b0;
if(enable)
begin
case({s[2],s[1],s[0]})
3'b000: {count,out}<=a+b; //半加器
3'b001: {count,out}<=a+b+cin; //全加器
3'b010: begin
if(a>=b) //比较器
out<=1;
else
out<=0;
end
3'b011: out<=a&b; //按位与
评论0