急求用Verilog语言编程设计一个简单计算器,要求如下:
设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、*、/四种运算,其中除法的结果显示分为商...
设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。
请高人指点!不胜感激! 展开
请高人指点!不胜感激! 展开
1个回答
展开全部
module(clk,rst,a,b,out,z);
input clk,rst;
input [7:0]a,b;
output [15:0]out;
output [7:0]z;
reg [15:0]out;
reg [15:0]shifta;
reg [7:0]z;//商
reg [1:0]k;//根据取值不同进行不同的运算
reg [7:0]n;//存放除法中间变量
always@(posedge clk)
if(!rst)
begin
out<=16'h0000;
z<=8'b00000000;
end
else
case(k)
2'b00:out<=a+b;
2'b01:out<=a-b;
2'b10:
begin
shifta [7:0]<=a;
for(width=0;width<8;width=width+1)
begin
if(shifta[width])
begin
shifta<=shifta+b;
b<=b<<1;
out<=shifta;
end
end
end
2'b11:
begin
out<= a/b;
z<=a%b;
end
endcase
endmodule
input clk,rst;
input [7:0]a,b;
output [15:0]out;
output [7:0]z;
reg [15:0]out;
reg [15:0]shifta;
reg [7:0]z;//商
reg [1:0]k;//根据取值不同进行不同的运算
reg [7:0]n;//存放除法中间变量
always@(posedge clk)
if(!rst)
begin
out<=16'h0000;
z<=8'b00000000;
end
else
case(k)
2'b00:out<=a+b;
2'b01:out<=a-b;
2'b10:
begin
shifta [7:0]<=a;
for(width=0;width<8;width=width+1)
begin
if(shifta[width])
begin
shifta<=shifta+b;
b<=b<<1;
out<=shifta;
end
end
end
2'b11:
begin
out<= a/b;
z<=a%b;
end
endcase
endmodule
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询