线性移位寄存器LFSR电路 | ||||
Random Counter (LFSR) 1 //----------------------------------------------------- 2 // Design Name : lfsr 3 // File Name : lfsr.v 4 // Function : Linear feedback shift register 5 // Coder : Deepak Kumar Tala 6 //----------------------------------------------------- 7 module lfsr ( 8 out , // Output of the counter 9 enable , // Enable for counter 10 clk , // clock input 11 reset // reset input 12 ); 13 14 //----------Output Ports-------------- 15 output [7:0] out; 16 //------------Input Ports-------------- 17 input [7:0] data; 18 input enable, clk, reset; 19 //------------Internal Variables-------- 20 reg [7:0] out; 21 wire linear_feedback; 22 23 //-------------Code Starts Here------- 24 assign linear_feedback = ! (out[7] ^ out[3]); 25 26 always @(posedge clk) 27 if (reset) begin // active high reset 28 out <= 8'b0 ; 29 end else if (enable) begin 30 out <= {out[6],out[5], 31 out[4],out[3], 32 out[2],out[1], 33 out[0], linear_feedback}; 34 end 35 36 endmodule // End Of Module counterYou could download file lfsr.v here | ||||
LFSR Up/Down | ||||
1 `define WIDTH 8 2 module lfsr_updown ( 3 clk , // Clock input 4 reset , // Reset input 5 enable , // Enable input 6 up_down , // Up Down input 7 count , // Count output 8 overflow // Overflow output 9 ); 10 11 input clk; 12 input reset; 13 input enable; 14 input up_down; 15 16 output [`WIDTH-1 : 0] count; 17 output overflow; 18 19 reg [`WIDTH-1 : 0] count; 20 21 assign overflow = (up_down) ? (count == {{`WIDTH-1{1'b0}}, 1'b1}) : 22 (count == {1'b1, {`WIDTH-1{1'b0}}}) ; 23 24 always @(posedge clk) 25 if (reset) 26 count <= {`WIDTH{1'b0}}; 27 else if (enable) begin 28 if (up_down) begin 29 count <= {~(^(count & `WIDTH'b01100011)),count[`WIDTH-1:1]}; 30 end else begin 31 count <= {count[`WIDTH-2:0],~(^(count & `WIDTH'b10110001))}; 32 end 33 end 34 35 endmoduleYou could download file lfsr_updown.v here | ||||
1 module tb(); 2 reg clk; 3 reg reset; 4 reg enable; 5 reg up_down; 6 7 wire [`WIDTH-1 : 0] count; 8 wire overflow; 9 10 initial begin 11 $monitor("rst %b en %b updown %b cnt %b overflow %b", 12 reset,enable,up_down,count, overflow); 13 clk = 0; 14 reset = 1; 15 enable = 0; 16 up_down = 0; 17 #10 reset = 0; 18 #1 enable = 1; 19 #20 up_down = 1; 20 #30 $finish; 21 end 22 23 always #1 clk = ~clk; 24 25 lfsr_updown U( 26 .clk ( clk ), 27 .reset ( reset ), 28 .enable ( enable ), 29 .up_down ( up_down ), 30 .count ( count ), 31 .overflow ( overflow ) 32 ); 33 34 endmoduleYou could download file lfsr_updown_tb.v here |
2012年11月3日 星期六
线性移位寄存器LFSR电路
訂閱:
張貼留言 (Atom)
2024_09 作業3 以Node-Red 為主
2024_09 作業3 (以Node-Red 為主 Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker 2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...
-
python pip 不是内部或外部命令 -- 解決方法 要安裝 Pyqt5 1. 首先,開啟命令提示字元。 2. 輸入 pip3 install pyqt5 好像不能執行 ! ! 錯誤顯示 : ‘ pip3 ’ 不是內部或外部命令、可執行的程式或批...
-
課程講義 下載 11/20 1) PPT 下載 + 程式下載 http://www.mediafire.com/file/cru4py7e8pptfda/106%E5%8B%A4%E7%9B%8A2-1.rar 11/27 2) PPT 下載...
-
• 認 識 PreFix、InFix、PostFix PreFix(前序式):* + 1 2 + 3 4 InFix(中序式): (1+2)*(3+4) PostFix(後序式):1 2 + 3 4 + * 後 序式的運算 例如: 運算時由 後序式的...
沒有留言:
張貼留言