斐波那契数列 时序电路
时间: 2023-10-18 19:27:06 浏览: 132
斐波那契数列时序电路是指使用Verilog代码实现的一个电路,可以在每个时钟上升沿输出一个斐波那契数。该电路的核心是使用两个寄存器num1和num2来存储当前的两个斐波那契数,然后通过一个计数器cnt来控制在每个时钟上升沿更新这两个数的值。具体的Verilog代码实现如下:
```
timescale 1ns / 1ps
module fib_generator(
input clk,
input rst_n,
output reg [7 : 0 fib
);
reg [7 : 0 num1, num2;
wire [7 : 0 fib_in;
reg cnt;
always @ (posedge clk or negedge rst_n) begin
if(!rst_n) begin
num1 <= 8'h1;
num2 <= 8'h1;
end
else if(!cnt)
num1 <= num1 + num2;
else
num2 <= num1 + num2;
end
always @ (posedge clk or negedge rst_n) begin
if(!rst_n)
cnt <= 0;
else
cnt <= ~cnt;
end
assign fib_in = cnt ? num2 : num1;
always @ (posedge clk or negedge rst_n) begin
if(!rst_n)
fib <= 'h0;
else
fib <= fib_in;
end
endmodule
```
这个电路使用了两个寄存器num1和num2来存储当前的两个斐波那契数,并使用一个计数器cnt来控制在每个时钟上升沿更新这两个数的值。在每个时钟上升沿,根据计数器的值,选择将num1或num2的值作为输出fib_in。最后,在每个时钟上升沿,将fib_in的值赋给输出端口fib。这样,该电路可以按照斐波那契数列的规律,每个时钟周期输出一个斐波那契数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [《BI那点儿事》Microsoft 时序算法——验证神奇的斐波那契数列](https://blog.csdn.net/weixin_30639719/article/details/96014645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Verilog 实现斐波那契数列](https://blog.csdn.net/qq_38666053/article/details/108420225)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文