FPGA的斐波那契数列Fibonacci设计verilog,代码和视频

名称:斐波那契数列Fibonacci设计verilog

软件:Quartus

语言:Verilog

代码功能:

设计一个产生斐波那契数列(也叫黄金分割数列)的硬件电路:

斐波那契数列中每个数为其相邻前两个数的和:即FN=FN1+FN2,(数列的前两个数F和F均为1) 

(1)基本要求 

根据不同输入N(>=3),产生FN最大为32位,在新的F产生出来前,N将维持不变;F应保持不变直到N又发生变化 

2画出设计结构图:数据通路和控制通路、控制策略

3写出该设计的 Verilog描述 

(2)扩展功能 

随机生成指定范围内的N整数,并计算斐波那契数列F产生次数。

本代码支持使用modelsim仿真和quartus仿真

modelsim仿真演示视频:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=211

quartus仿真演示视频:



http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=211

FPGA代码Verilog/VHDL代码资源下载网:www.hdlcode.com

代码下载:

斐波那契数列Fibonacci设计verilog(代码在文末付费下载)软件:Quartus语言:Verilog代码功能:设计一个产生斐波那契数列(也叫黄金分割数列)的硬件电路:斐波那契数列中每个数为其相邻前两个数的和:即FN=FN1+FN2,(数列的前两个数F和F均为1) (1)基本要求 根据不同输入N(>=3),产生FN最大为32位,在新的F产生出来前,N将维持不变;F应保持不变直到名称:斐波那契数列Fibonacci设计verilog(代码在文末付费下载)软件:Quartus语言:Verilog代码功能:设计一个产生斐波那契数列(也叫黄金分割数列)的硬件电路:斐波那契数列中每个数为其相邻前两个数的和:即FN=FN1+FN2,(数列的前两个数F和F均为1) (1)基本要求 根据不同输入N(>=3),产生FN最大为32位,在新的F产生出来前,N将维持不变;F应保持不变直到icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=211

部分代码展示

//斐波那契数列
//斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34
// 这个数列从第3项开始,每一项都等于前两项之和
module Fibonacci(
input clk,//时钟
input rst_p,//复位
input N_en,//输入N有效指示信号
input [31:0] N,//输入N
output [31:0] FN//输出Fn
);
wire [2:0] current_state;//输出状态值
//状态机控制模块
state_ctrl i_state_ctrl(
. clk(clk),//时钟
. rst_p(rst_p),//复位
. N_en(N_en),//输入N有效指示信号
. N(N),//输入N
. current_state(current_state)//输出状态值
);
//序列产生模块
sequence_gen i_sequence_gen(
. clk(clk),//时钟
. rst_p(rst_p),//复位
. current_state(current_state),//输出状态值
. FN(FN)//输出Fn
);
endmodule
//序列产生模块
module sequence_gen(
input clk,//时钟
input rst_p,//复位
input [2:0] current_state,//输出状态值
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;
//数列计算
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)//累加状态下
begin
Fib_sequence_delay<=Fib_sequence;//缓存前一个数到Fib_sequence_delay
Fib_sequence<=Fib_sequence+Fib_sequence_delay;//前两项之和
end
else if(current_state==s_end)begin//结束
Fib_sequence<=32'd1;
Fib_sequence_delay<=32'd1;
end

设计文档:

设计文档.doc

1. 数列

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第1张图片

2. 工程文件

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第2张图片

3. 程序文件

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第3张图片

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第4张图片

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第5张图片

4. 程序编译

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第6张图片

5. RTL图

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第7张图片

状态机视图

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第8张图片

6. Testbench

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第9张图片

7. 仿真图

整体仿真图

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第10张图片

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第11张图片

数列第0个为1,第1个为1,第2个为2.。。。。第10个为89,第20个为10946。。。

可以看到仿真图第10个为89,第20个为10946正确。

状态机控制模块

数列产生模块

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第12张图片

quarttusII自带仿真

整体仿真

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第13张图片

数列第0个为1,第1个为1,第2个为2.。。。。第5个为8,第20个为10946。。。

可以看到仿真图第5个为8,第20个为10946正确。

状态控制模块

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第14张图片

数列产生模块

FPGA的斐波那契数列Fibonacci设计verilog,代码和视频_第15张图片

你可能感兴趣的:(fpga开发,斐波那契数列,verilog,Fibonacci,数列)