孙冬Candy 2015-01-18 07:51 采纳率: 0%
浏览 2016

这段代码是计算两个数相除,不能输出正确结果,求问错在哪里

module divide_16bits(op1,op2,result
);
input [15:0] op1;
input [15:0] op2;
output reg [15:0] result;

reg error;
integer p,q,r;

reg [15:0] temp;
reg [15:0] add_result;

always @(op1 or op2)
begin
assign error = ~{|{op2}};
if(error == 1)
result[15:0] = 16'h0eb0;
else
begin
for(p = 15;p >= 0;p = p - 1)
result[p] = 1'b0;
p = 16;
q = 16;
while((p >= 0) & (op1[p] == 0))
p = p - 1;
while((q != 0) & (op2[q] == 0))
q = q - 1;
if(p >= q)
begin
add_result[15:0] = 16'h0;
for(r = p - q;r >= 0;r = r - 1)
begin
temp = add_result + (op2 << r);
if( op1 >= temp)
begin
result[r] = 1'b1;
add_result = add_result + (op2 << r);
end
end

end
end

end
endmodule

  • 写回答

5条回答 默认 最新

  • 孙冬Candy 2015-01-18 08:45
    关注

    我发现是这段代码出问题了,代码从c语言角度能达到目标,但是verilog语言无法实现
    while((p >= 0) && (op1[p] == 0))
    p = p - 1;
    while((q != 0) && (op2[q] == 0))
    q = q - 1;

    评论

报告相同问题?

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services