用Verilog hdl设计一个实现8位ALU功能的函数
其输入为两个4位操作变量a和b,以及一个3位选择信号select,输出为5位变量out,具体关系见下表。不考虑计算结果的上溢和下溢,并设计测试激励模块。select信号函...
其输入为两个4位操作变量a和b,以及一个3位选择信号select,输出为5位变量out,具体关系见下表。不考虑计算结果的上溢和下溢,并设计测试激励模块。
select信号 函数的输出
3‘b000 a
3‘b001 a+b
3‘b010 a-b
3‘b011 a/b
3‘b100 a%b(余数)
3‘b101 a<<1
3‘b110 a>>1
3‘b111 (a>b)(大小幅值比较)
求各位大神帮助,回答好可追加悬赏 展开
select信号 函数的输出
3‘b000 a
3‘b001 a+b
3‘b010 a-b
3‘b011 a/b
3‘b100 a%b(余数)
3‘b101 a<<1
3‘b110 a>>1
3‘b111 (a>b)(大小幅值比较)
求各位大神帮助,回答好可追加悬赏 展开
1个回答
展开全部
给你个参考,没有的功能自己想吧,这些很简单。
module alu (
input [2:0] a,
input [2:0] b,
input [2:0] sel,
output reg [7:0] y
);
always@(a or b or sel) begin
case(sel)
3'b000: y = a + b;
3'b001: y = a - b;
3'b010: y = a * b;
3'b011: begin
y[7:4] = a / b;
y[3:0] = a % b;
end
3'b100: y = a & b;
3'b101: y = a | b;
3'b110: y = ~a;
3'b111: y = a ^ b;
endcase
end
endmodule
module alu (
input [2:0] a,
input [2:0] b,
input [2:0] sel,
output reg [7:0] y
);
always@(a or b or sel) begin
case(sel)
3'b000: y = a + b;
3'b001: y = a - b;
3'b010: y = a * b;
3'b011: begin
y[7:4] = a / b;
y[3:0] = a % b;
end
3'b100: y = a & b;
3'b101: y = a | b;
3'b110: y = ~a;
3'b111: y = a ^ b;
endcase
end
endmodule
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询