八位的伪随机数产生的verilog源程序
2013-03-11
标签:

linear-feedback-shift-register

下面是一个八位的伪随机数产生的verilog文件,我想够用了。

// DEFINES

`timescale 1ns/1ns

`define DEL1// Clock-to-output delay. Zero

// time delays can be confusing

// and sometimes cause problems.

// These are good tap values for 2 to 32 bits

`define TAP22'b11

`define TAP33'b101

`define TAP44'b1001

`define TAP55'b10010

`define TAP66'b100001

`define TAP77'b1000001

`define TAP88'b10001110

`define TAP99'b100001000

`define TAP1010'b1000000100

`define TAP1111'b10000000010

`define TAP1212'b100000101001

`define TAP1313'b1000000001101

`define TAP1414'b10000000010101

`define TAP1515'b100000000000001

`define TAP1616'b1000000000010110

`define TAP1717'b10000000000000100

`define TAP1818'b100000000001000000

`define TAP1919'b1000000000000010011

`define TAP2020'b10000000000000000100

`define TAP2121'b100000000000000000010

`define TAP2222'b1000000000000000000001

`define TAP2323'b10000000000000000010000

`define TAP2424'b100000000000000000001101

`define TAP2525'b1000000000000000000000100

`define TAP2626'b10000000000000000000100011

`define TAP2727'b100000000000000000000010011

`define TAP2828'b1000000000000000000000000100

`define TAP2929'b10000000000000000000000000010

`define TAP3030'b100000000000000000000000101001

`define TAP3131'b1000000000000000000000000000100

`define TAP3232'b10000000000000000000000001100010

`define BITS 8// Number of bits in the LFSR

`define TAPS `TAP8// This must be the taps for the

// number of bits specified above

`define INIT 1// This can be any non-zero value

// for initialization of the LFSR

// TOP MODULE

modulerandom_number(

data);

// INPUTS

//inputclk;// Clock

//inputreset;// Reset

// OUTPUTS

output [`BITS-1:0]data;// LFSR data

// INOUTS

// SIGNAL DECLARATIONS

regclk;

regreset;

reg [`BITS-1:0] data;

// PARAMETERS

initial

begin

reset=0;

#4 reset=1;

#2 reset=0;

end

// ASSIGN STATEMENTS

initial

clk=0;

always

clk= #1 ~clk;

// MAIN CODE

// Look at the rising edge of clock or reset

always @(posedge clk or posedge reset) begin

if (reset)

data <= #`DEL `INIT;

else begin

// Shift all of the bits left

data[`BITS-1:1] <= #`DEL data[`BITS-2:0];

`ifdef ADD_ZERO// Use this code if data == 0 is required

// Create the new bit 0

data[0] <= #`DEL ^(data & `TAPS) ^ ~|data[`BITS-2:0];

`else// Use this code for a standard LFSR

// Create the new bit 0

data[0] <= #`DEL ^(data & `TAPS);

`endif

end

end

initial

#1000 $finish;

endmodule// LFSR

可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号