我编写代码来计算完美的数字平方,但我得不到合适的输出。我接受输入b
并注册a
,d
。首先,我将1
放入d
,然后将其平方并存储在a
中。然后与输入进行比较 - 如果不满意则增加d
。但在输出时我得到的是square = XXXX
。
我的代码:
module square_root(b,clk,square);
input [3:0] b;
input clk;
output [3:0]square;
reg[3:0]a,square;
reg[2:0] d;
initial
begin
d<=3'b001;
end
always@(clk)
begin
a<=d*d;
if(a==b)
square<=a;
else
d<=d+1;
end
endmodule
答案 0 :(得分:1)
更改此
initial
begin
d<=3'b001;
end
要
initial
begin
d=3'b001;
end
试验台:
module TB_SQT;
reg [3:0]b;
reg clk;
wire [3:0]square;
square_root SQT(b,clk,square);
initial
begin
clk=0;
b=9;
end
always
#1 clk=!clk;
endmodule
答案 1 :(得分:0)
module Sqrt(
input clk,
input [3:0]in,
output reg [3:0]out);
reg [3:0]temp=1;
always@(posedge clk)
begin
if((temp*temp)==in)
out<=temp;
else
temp<=temp+1;
end
endmodule
试验台:
module TB_Sqrt;
reg clk;
reg [3:0]in;
wire [3:0]out;
Sqrt SQRT(clk,in,out);
initial
begin
clk=0;
in=9;
end
always
#2 clk=!clk;
endmodule
不太可能是最好的代码...但是嘿