名稱:斐波那契數(shù)列Fibonacci設(shè)計verilog(代碼在文末付費(fèi)下載)
軟件:Quartus
語言:Verilog
代碼功能:
設(shè)計一個產(chǎn)生斐波那契數(shù)列(也叫黃金分割數(shù)列)的硬件電路:
斐波那契數(shù)列中每個數(shù)為其相鄰前兩個數(shù)的和:即FN=FN1+FN2,(數(shù)列的前兩個數(shù)F和F均為1)
(1)基本要求
根據(jù)不同輸入N(>=3),產(chǎn)生FN最大為32位,在新的F產(chǎn)生出來前,N將維持不變;F應(yīng)保持不變直到N又發(fā)生變化
2畫出設(shè)計結(jié)構(gòu)圖:數(shù)據(jù)通路和控制通路、控制策略
3寫出該設(shè)計的 Verilog描述
(2)擴(kuò)展功能
隨機(jī)生成指定范圍內(nèi)的N整數(shù),并計算斐波那契數(shù)列F產(chǎn)生次數(shù)。
本代碼支持使用modelsim仿真和quartus仿真
modelsim仿真演示視頻:
quartus仿真演示視頻:
FPGA代碼Verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com
部分代碼展示
//斐波那契數(shù)列 //斐波那契數(shù)列指的是這樣一個數(shù)列:1、1、2、3、5、8、13、21、34 //?這個數(shù)列從第3項開始,每一項都等于前兩項之和 module?Fibonacci( input?clk,//時鐘 input?rst_p,//復(fù)位 input?N_en,//輸入N有效指示信號 input?[31:0]?N,//輸入N output?[31:0]?FN//輸出Fn ); wire?[2:0]?current_state;//輸出狀態(tài)值 //狀態(tài)機(jī)控制模塊 state_ctrl?i_state_ctrl( .?clk(clk),//時鐘 .?rst_p(rst_p),//復(fù)位 .?N_en(N_en),//輸入N有效指示信號 .?N(N),//輸入N .?current_state(current_state)//輸出狀態(tài)值 ); //序列產(chǎn)生模塊 sequence_gen?i_sequence_gen( .?clk(clk),//時鐘 .?rst_p(rst_p),//復(fù)位 .?current_state(current_state),//輸出狀態(tài)值 .?FN(FN)//輸出Fn ); endmodule //序列產(chǎn)生模塊 module?sequence_gen( input?clk,//時鐘 input?rst_p,//復(fù)位 input?[2:0]?current_state,//輸出狀態(tài)值 output?reg?[31:0]?FN//輸出Fn ); parameter?s_idle=3'd0; parameter?s_start=3'd1; parameter?s_sum=3'd2; parameter?s_end=3'd3; //數(shù)列計算 reg?[31:0]?Fib_sequence=32'd1; reg?[31:0]?Fib_sequence_delay=32'd1; always@(posedge?clk) if(rst_p) Fib_sequence<=32'd1; else if(current_state==s_sum)//累加狀態(tài)下 begin Fib_sequence_delay<=Fib_sequence;//緩存前一個數(shù)到Fib_sequence_delay Fib_sequence<=Fib_sequence+Fib_sequence_delay;//前兩項之和 end else?if(current_state==s_end)begin//結(jié)束 Fib_sequence<=32'd1; Fib_sequence_delay<=32'd1; end
設(shè)計文檔:
1. 數(shù)列
2. 工程文件
3. 程序文件
4. 程序編譯
5. RTL圖
狀態(tài)機(jī)視圖
6. Testbench
7. 仿真圖
整體仿真圖
數(shù)列第0個為1,第1個為1,第2個為2.。。。。第10個為89,第20個為10946。。。
可以看到仿真圖第10個為89,第20個為10946正確。
狀態(tài)機(jī)控制模塊
數(shù)列產(chǎn)生模塊
quarttusII自帶仿真
整體仿真
數(shù)列第0個為1,第1個為1,第2個為2.。。。。第5個為8,第20個為10946。。。
可以看到仿真圖第5個為8,第20個為10946正確。
狀態(tài)控制模塊
數(shù)列產(chǎn)生模塊