首页 > 编程知识 正文

fpga入门,fpga设计技巧与案例开发详解

时间:2023-05-05 00:34:28 阅读:120176 作者:4225

流水线是指加工一个器件需要三个步骤,一个人完成后,所需时间为t1 t2 t3; 如果是流水线,则使任务成为三个小模块,三个人负责一个模块,完成一个设备的时间等于max(t1、t2、t3 ),效率更高。

以目标速度改变面积,提高运行速度。

实现方法1、组合逻辑插入触发器,模块变小后完成

out=a0b0 a1b1 a2b2 a3b3;

1 )直接编写程序:

模块头(input clk,input rst_n,input [7:0] a0,a1,a2,a3,input [7:0] b0,b1,b2,b3,output reg ad ) rst_n ) out=0; elseout=a0*b0 a1*b1 a2*b2 a3*b3; 最终模块RTL图见我的文章

FGA速度(流量、时滞、定时) ) ) ) ) ) )。

流量: 16/1。 一个周期处理16位

时滞:一个周期

时序:一个乘法器和三个加法器的延迟

2 )并行化

out=(A0B0A1B1) ) a2b2 a3b3 );

模块头(input clk,input rst_n,input [7:0] a0,a1,a2,a3,input [7:0] b0,b1,b2,b3,output reg ad ) rst_n ) out=0; elseout=(A0*B0A1*B1 ) ) a2*b2 a3*b3 ); 结束模块

流量: 16/1。 一个周期处理16位

时滞:一个周期

时序:一个乘法器和两个加法器的延迟

并行优势加速。

3 )流水线

模块头(input clk,input rst_n,input [7:0] a0,a1,a2,a3,input [7:0] b0,b1,b2,b3,output regrer ) reg [15:0] d1,d2; always @ (posedgeclkornegedgerst _ n ) beginif (! rst_n ) beginc1=0; c2=0; c3=0; c4=0; d1=0; d2=0; out=0; endelsebeginc1=a0*b0; c2=a1*b1; c3=a2*b2; c4=a3*b3; d1=c1 c2; d2=c3 c4; out=d1 d2; 端对端模块

流量: 16/1。 一个周期处理16位

时滞:三个周期

定时:一个乘法器或一个加法器的延迟,取两个中较大的值。

2、分解环路后,有反馈的电路会被分解。

例如,y=xxx;

1 )一般写法

模块头(输入时钟、输入开始、//标志位、输入信号input [7:0] x、//x的三次方为8位以下的输出reg [ 7:0 ] y ); reg [1:0] cnt; wire finsh; assignfinish=(CNT==2'b10 ); Always@(Posedgeclk ) beginif (! 开始) beginy=x; cnt=0; endelseif (! Finish(BeginCNT=CNT1; y=x*y; 端对端模块

流量:8/3。 3个周期是因为从输入到输出正确输出需要3个周期。

时滞:三个周期

时机: 1个乘法器。

2 )管线

模块头(input clk,input [7:0] x,//x的三次方为8位以下的output reg [7:0] y ); reg [7:0] x1,x2; reg [7:0] y1,y2; Always@(Posedgeclk ) beginy1=x; x1=x; y2=x1*y1; x2=x1; y=x2*y2; 结束模块

流量:8/1。 每周期更新一次,延迟3个周期,但每周期计算出正确的数据。

时滞:三个周期

时机: 1个乘法器。

这两个时序都是乘法器,但第二个流量变大,第一个三周期处理一个数据,第二个周期处理一个数据。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。