LFSR에서 64 비트 출력을 얻으려고합니다. 나는 그물에 코드를 발견하고 그것을 64 비트 편집했습니다. 그러나 나는 결과를 얻지 못하고있다.Verilog에서 64 비트 LFSR 출력
module LFSR8_8E(reset_, clock, q, lfsr_to);
input clock, reset_;
output [63:0] q, lfsr_to;
reg [63:0] LFSR;
wire lfsr_to;
assign lfsr_to = (LFSR == 64'h9C69832196724182);
always @(posedge clock or negedge reset_)
begin
if (!reset_) LFSR[63:0] <= 64'h0000000000000000;
else
begin
if (lfsr_to) LFSR[63:0] <= 64'h0000000000000000;
else
begin
LFSR[63:63] <= LFSR[62:62]^LFSR[61:61];
LFSR[62:62] <= LFSR[61:61]^LFSR[60:60];
LFSR[61:61] <= LFSR[60:60]^LFSR[59:59];
LFSR[60:60] <= LFSR[59:59]^LFSR[58:58];
LFSR[59:59] <= LFSR[58:58];
LFSR[58:58] <= LFSR[57:57];
LFSR[57:57] <= LFSR[56:56];
LFSR[56:56] <= LFSR[55:55];
LFSR[54:54] <= LFSR[53:53];
LFSR[53:53] <= LFSR[52:52];
LFSR[52:52] <= LFSR[51:51];
LFSR[51:51] <= LFSR[50:50];
LFSR[49:49] <= LFSR[48:48];
LFSR[48:48] <= LFSR[47:47];
LFSR[47:47] <= LFSR[46:46];
LFSR[46:46] <= LFSR[45:45];
LFSR[45:45] <= LFSR[44:44];
LFSR[44:44] <= LFSR[43:43];
LFSR[43:43] <= LFSR[42:42];
LFSR[42:42] <= LFSR[41:41];
LFSR[41:41] <= LFSR[40:40];
LFSR[39:39] <= LFSR[38:38];
LFSR[38:38] <= LFSR[37:37];
LFSR[37:37] <= LFSR[36:36];
LFSR[36:36] <= LFSR[35:35];
LFSR[35:35] <= LFSR[34:34];
LFSR[34:34] <= LFSR[33:33];
LFSR[33:33] <= LFSR[32:32];
LFSR[32:32] <= LFSR[31:31];
LFSR[31:31] <= LFSR[30:30];
LFSR[29:29] <= LFSR[28:28];
LFSR[28:28] <= LFSR[27:27];
LFSR[27:27] <= LFSR[26:26];
LFSR[26:26] <= LFSR[25:25];
LFSR[25:25] <= LFSR[24:24];
LFSR[24:24] <= LFSR[23:23];
LFSR[23:23] <= LFSR[22:22];
LFSR[22:22] <= LFSR[21:21];
LFSR[21:21] <= LFSR[20:20];
LFSR[29:29] <= LFSR[28:28];
LFSR[28:28] <= LFSR[27:27];
LFSR[27:27] <= LFSR[26:26];
LFSR[26:26] <= LFSR[25:25];
LFSR[25:25] <= LFSR[24:24];
LFSR[24:24] <= LFSR[23:23];
LFSR[23:23] <= LFSR[22:22];
LFSR[22:22] <= LFSR[21:21];
LFSR[21:21] <= LFSR[20:20];
LFSR[20:20]<= LFSR[19:19];
LFSR[19:19] <= LFSR[18:18];
LFSR[18:18] <= LFSR[17:17];
LFSR[17:17] <= LFSR[16:16];
LFSR[16:16] <= LFSR[15:15];
LFSR[15:15] <= LFSR[14:14];
LFSR[14:14] <= LFSR[13:13];
LFSR[13:13] <= LFSR[12:12];
LFSR[12:12] <= LFSR[11:11];
LFSR[11:11] <= LFSR[10:10];
LFSR[10:10]<= LFSR[9:9];
LFSR[9:9] <= LFSR[8:8];
LFSR[8:8] <= LFSR[7:7];
LFSR[7:7] <= LFSR[6:6];
LFSR[6:6] <= LFSR[5:5];
LFSR[5:5] <= LFSR[4:4];
LFSR[4:4] <= LFSR[3:3];
LFSR[3:3] <= LFSR[2:2];
LFSR[2:2] <= LFSR[1:1];
LFSR[1:1] <= LFSR[0:0];
LFSR[0:0] <= LFSR[63:63];
end
end
end
assign q = LFSR;
endmodule
FPGA에서 64 입력 회로를 구동하기 위해 64 비트 출력을 얻으려고합니다. 코드를 합성하여 LFSR을 생략했습니다.
[신디 8-3332] 순차 소자 (LFSR_reg [63])과 미사용 모듈 LFSR8_8E에서 제거 될 것이다. (63 이상과 같이)
알기나 어떻게 작동 도착. 제대로 기능하는 미리
에 있습니다. 웹에서 나는 64 비트 LFSR을 위해 64,63,62,61 비트를 사용할 필요가 있음을 발견했다. 또한, 나는 Verilog과이 물건을 처음 사용하고 지식이 거의 없다. 나는이 lfsr을 사용하여 벤치 마크 코드를 만들고 싶다. 그래서 기본적으로 64 비트 출력을 제공하는 lfsr을 설계하고 싶습니다. 코드를 수정했습니다. –
@ EmilyBlake 제공 한 코드를 거의 또는 전혀 수정하지 않고 사용할 수 있습니다. 위 응답에서 EDA 놀이터 링크를 따라 가면 설계를 테스트하는 데 사용한 테스트 벤치가 표시됩니다. – Prashant
@prasant 리셋 신호가 높은 동안 LFSR을 비활성화하는 방법이 있습니까? 함께 작동하는 두 개의 LFSR이 필요하고 언젠가 후에 하나는 비활성화되어야합니다. –