Random verilog线性反馈移位寄存器随机 模块do2(rst、clk、cout); 输入rst、clk; 输出[7:0]cout; reg[2:0]D; reg[19:0]计数; 分配cout=out(D); 始终@(posedge clk)开始 计数=计数+20'd1; 如果(rst)开始 D

Random verilog线性反馈移位寄存器随机 模块do2(rst、clk、cout); 输入rst、clk; 输出[7:0]cout; reg[2:0]D; reg[19:0]计数; 分配cout=out(D); 始终@(posedge clk)开始 计数=计数+20'd1; 如果(rst)开始 D,random,verilog,fpga,intel-fpga,Random,Verilog,Fpga,Intel Fpga,设计中的几个错误: 您尚未在此处初始化计数变量。除了初始化D,还必须初始化计数。在计数达到20'd100000后,必须重置或重新初始化。进行下一轮随机分组 在始终块中,条件if(rst)和else if(count..)可能导致非故意硬件。添加else条件可以在不需要的闩锁创建中删除 另外,最初,D设计中有几个错误: 您尚未在此处初始化计数变量。除了初始化D,还必须初始化计数。在计数达到20'd100000后,必须重置或重新初始化。进行下一轮随机分组 在始终块中,条件if(rst)和else i

设计中的几个错误:

您尚未在此处初始化
计数
变量。除了初始化
D
,还必须初始化
计数。在
计数
达到
20'd100000
后,必须重置或重新初始化。进行下一轮随机分组

始终
块中,条件
if(rst)
else if(count..)
可能导致非故意硬件。添加
else
条件可以在不需要的闩锁创建中删除


另外,最初,
D设计中有几个错误:

您尚未在此处初始化
计数
变量。除了初始化
D
,还必须初始化
计数。在
计数
达到
20'd100000
后,必须重置或重新初始化。进行下一轮随机分组

始终
块中,条件
if(rst)
else if(count..)
可能导致非故意硬件。添加
else
条件可以在不需要的闩锁创建中删除


另外,最初,
d可能重复和可能重复以及@e19293001哦,我忘了提到要点。感谢输入,这是由于只有三个触发器(最多8个状态)和8位
cout
。这个问题是由于触发器状态的数量较少造成的。我已经编辑了上面的答案。再次感谢。@e19293001哦,我忘了提要点了。感谢输入,这是由于只有三个触发器(最多8个状态)和8位
cout
。这个问题是由于触发器状态的数量较少造成的。我已经编辑了上面的答案。再次感谢。
module do2(rst,clk,cout);
input rst,clk;
output [7:0]cout;
reg [2:0]D;
reg [19:0]count;


assign cout=out(D);
always@(posedge clk) begin
count = count+20'd1;
if(rst) begin
D<=3'b0;

end
else if(count==20'd100000)begin

D[0] <=D[1];
D[1] <=D[2];
D[2] <= D[0] ^D[2];
end
end

function [7:0]out;
input [2:0]in;


begin
case(in)
3'b000 : out =8'b11111100 ;
3'b001 : out =8'b01100000 ;
3'b010: out =8'b11011010 ;
3'b011 : out =8'b11110010 ;
3'b100 : out =8'b01100110 ;
3'b101 : out =8'b10110110 ;
3'b110 : out =8'b00111110 ;
3'b111 : out =8'b11100100 ;

endcase 
end

endfunction 
endmodule 
parameter seed = 3'b000 // Arbitrary seed value
if(rst) begin
D<= seed;
count<=20'd0;
end

// While instantiation
do2 #(5) dd(rst,clk,cout);