//p(z) = z^6 + z + 1
`timescale 1ns/1ns
module pn6
(
input rst,
input clk,
output pn_out
);
wire pn_tmp;
reg [5:0] pn_shift;
always @ (posedge clk or posedge rst)
begin
if (rst == 1'b1)
pn_shift <= 6'h3f;
else
pn_shift <= {pn_tmp,pn_shift[5:1]};
end
assign pn_tmp = pn_shift[1] ^ pn_shift[0];
assign pn_out = pn_shift[0];
endmodule
`timescale 1ns/1ns
module tb;
reg clk;
reg rst;
initial clk = 0;
always #5 clk = ~clk;
initial
begin
rst = 1'b1;
#200 rst = 1'b0;
end
pn6 u_pn6
(
.rst(rst),
.clk(clk),
.pn_out()
);
integer file_wr;
initial
begin
file_wr = $fopen("./pn_out.txt","w");
end
always @ (posedge clk)
begin
if (rst == 1'b0)
$fwrite(file_wr,"%d\n",u_pn6.pn_out);
else ;
end
endmodule
%p(z) = z^6 + z + 1
h = seqgen.pn('GenPoly', [6 1 0],...
'InitialStates',[1 1 1 1 1 1],...
'CurrentStates',[1 1 1 1 1 1],...
'NumBitsOut',180);
generate(h)