整数平方根 输入4位二进制整数。
实测正常 但是仿真不正确。
module project_51(
input clk, //时钟信号
input [3:0]num,//输入4位二进制数
output [3:0]led, //输出4位二进制数
output [1:0]gen //输出整数平方根
);
reg [3:0]lastnum;
reg [1:0]sqrt=00;
assign led = num; //输出4位二进制数
assign gen = sqrt;
always @(posedge clk) //计算平方根
begin
if (num != lastnum) sqrt=00;
if ((sqrt+1)**2 <= num) sqrt = sqrt + 2'b01;
lastnum = num;
end
endmodule
仿真文件
module sim_project_51;
reg clk;
reg [3:0]num;
wire [3:0]led;
wire [1:0]gen;
project_51 uut(clk,num,led,gen);
initial begin
clk=0;
num=0000;
end
always #10 clk=~clk;
always #20 num=num+1;
endmodule
感觉仿真中always那块没有循环....(刚开始学,不太会)