FPGA流水线技术原理与实例
来源:互联网 发布:邮轮上有网络吗 编辑:程序博客网 时间:2024/05/21 16:58
在FPGA学习中,流水线技术是FPGA工程师必须要了解的一个重要知识点,我在面试的时候面试官详细问过流水线的知识,因此,这里总结一下流水线知识。
第一, 有哪些模块可以用流水线的方式。
一般的定义是如果某个设计的处理流程可分为若干步骤,而且整个数据处理是“单流向”的,即没有反馈或者迭代运算,且前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计方法来提高系统频率。从这里我们可以看出,流水线就是将我们的以前的大逻辑块分解为小逻辑块,以此来降低寄存器间的传播时延,从而保证系统维持在一个高的系统时钟速度。
第二,那这优势又是啥那?
因为在FPGA,关键路径延迟的倒数就是系统可以到达的最大运行频率,而关键路径就是定义为由非时钟逻辑元件引起的最大延迟。因此就可以看出,降低寄存器使用就可以有效减小关键路径的时延,从而提高运行频率。可以看出,流水线技术可以有效的提高运行速度。
下面是一个我采用的4级流水线加法器的代码模块
//////4级流水线结构
module top(clk,rst_n,din1,din2,cin,cout,sum );input clk,rst_n;input cin;input [7:0] din1,din2;output reg cout;output reg [7:0] sum;reg [1:0] sum_temp;reg cout_temp;reg [3:0] sum_temp1;reg cout_temp1;reg [5:0] sum_temp2;reg cout_temp2;reg [5:0] a,b;reg [3:0] a1,b1;reg [1:0] a2,b2;always@(posedge clk)begin if(!rst_n) begin cout_temp<=1'b0; sum_temp<=2'd0; a<=6'd0; b<=6'd0; end else begin {cout_temp,sum_temp}<=din1[1:0]+din2[1:0]+cin; a<=din1[7:2]; b<=din2[7:2]; endendalways@(posedge clk)begin if(!rst_n) begin cout_temp1<=1'b0; sum_temp1<=4'd0; a1<=4'd0; b1<=4'd0; end else begin {cout_temp1,sum_temp1}<={{1'b0,a[1:0]}+{1'b0,b[1:0]}+cout_temp,sum_temp}; a1<=a[5:2]; b1<=b[5:2]; endendalways@(posedge clk)begin if(!rst_n) begin cout_temp2<=1'b0; sum_temp2<=6'd0; a2<=2'd0; b2<=2'd0; end else begin {cout_temp2,sum_temp2}<={{1'b0,a1[1:0]}+{1'b0,b1[1:0]}+cout_temp1,sum_temp1}; a2<=a1[3:2]; b2<=b1[3:2]; endendalways@(posedge clk)begin if(!rst_n) begin cout<=1'b0; sum<=8'd0; end else begin {cout,sum}<={{1'b0,a2[1:0]}+{1'b0,b2[1:0]}+cout_temp2,sum_temp2}; endendendmodule
阅读全文
0 0
- FPGA流水线技术原理与实例
- 流水线技术与并行技术
- 流水线技术原理和Verilog HDL实现
- 流水线技术原理和Verilog HDL实现
- 流水线技术原理和Verilog HDL实现
- fpga流水线理解
- 计算机组成原理与体系结构---流水线
- 流水线原理
- 流水线技术
- 流水线技术
- 流水线技术
- 流水线技术
- 流水线技术
- 流水线技术
- Ajax实例讲解与技术原理
- Ajax实例讲解与技术原理
- Ajax实例讲解与技术原理
- Ajax实例讲解与技术原理
- HTML移动端 实现刻度尺效果
- [RK3288][Android6.0] 调试笔记 --- RT5640 I2S对应的ADC/DAC通路
- bzoj 2004: [Hnoi2010]Bus 公交线路 状压dp+矩阵乘法
- 声明与定义的区别
- neo4j 大量数据的批量导入
- FPGA流水线技术原理与实例
- 侧边框
- linux网桥处理函数学习-----br_handle_frame
- js 改变运行上下文
- 前端_购物车选择多选少选
- 86标准SQL与92标准SQL用法区别
- 5.Struts2_Action 概述
- C语言基础知识学习(变量的储存类型)
- 【bzoj 2431】逆序对数列(DP)