FPGA—从加法运算理解流水线的作用

前言

最近在研究FPGA图像处理算法,在学习均值滤波的过程中,需要将8个数相加,但是我看到了两种相加的方法,一种是直接相加,一种是使用PARALLEL_ADD IP核,让我想不通的是这两种方法的区别是什么?什么情况下使用对应的方法呢?

这里首先简单的模拟一下像素值的变化

其中i_a0,i_a1,i_a2,i_a3,i_a4,i_a5,i_a6,i_a7表示8个变化的像素值,clk表示像素时钟

reg [7:0]i_a0;
reg [7:0]i_a1;
reg [7:0]i_a2;
reg [7:0]i_a3;
reg [7:0]i_a4;
reg [7:0]i_a5;
reg [7:0]i_a6;
reg [7:0]i_a7;

always@(posedge clk or negedge rst_n)
	if(!rst_n)begin
		i_a0 <= 0;
		i_a1 <= 0;
		i_a2 <= 0;
		i_a3 <= 0;
		i_a4 <= 0;
		i_a5 <= 0;
		i_a6 <= 0;
		i_a7 <= 0;
	end
	else if(i_a0>=8'd255)begin
		i_a0 <= 0;
		i_a1 <= 0;
		i_a2 <= 0;
		i_a3 <= 0;
		i_a4 <= 0;
		i_a5 <= 0;
		i_a6 <= 0;
		i_a7 <= 0;
	end
	else begin
		i_a0 <= i_a0 + 1'b1;
		i_a1 <= i_a1 + 1'b1;
		i_a2 <= i_a2 + 1'b1;
		i_a3 <= i_a3 + 1'b1;
		i_a4 <= i_a4 + 1'b1;
		i_a5 <= i_a5 + 1'b1;
		i_a6 <= i_a6 + 1'b1;
		i_a7 <= i_a7 + 1'b1;
	end

实验

方法一 :简单粗暴,直接相加

assign sum = i_a0 + i_a1 + i_a2 + i_a3 + i_a4 + i_a5 + i_a6 + i_a7;

综合后的电路是这样的
在这里插入图片描述
综合报告
在这里插入图片描述
最大频率
在这里插入图片描述

方法二 :a.调用PARALLEL_ADD IP(不延迟)

	paralleladd  paralleladd (
//		.clock(clk),	//  这里被屏蔽了哦
		.data0x(i_a0),
		.data1x(i_a1),
		.data2x(i_a2),
		.data3x(i_a3),
		.data4x(i_a4),
		.data5x(i_a5),
		.data6x(i_a6),
		.data7x(i_a7),
		.result(sum)
	);

IP 设置,== 注意箭头位置 ==
在这里插入图片描述
综合报告
在这里插入图片描述最大频率
在这里插入图片描述
这里大家看出什么来了?从综合报告来看,调用PARALLEL_ADD(不延迟)IP和直接相加使用的逻辑资源都是相同的,并且最大频率(性能)也相同,所以这两种方法在这里并无区别,那么为什么还要搞个IP呢,这部是多此一举嘛?当然不是,请看后面

方法二 :b.调用PARALLEL_ADD IP(延迟)

	paralleladd  paralleladd (
		.clock(clk),
		.data0x(i_a0),
		.data1x(i_a1),
		.data2x(i_a2),
		.data3x(i_a3),
		.data4x(i_a4),
		.data5x(i_a5),
		.data6x(i_a6),
		.data7x(i_a7),
		.result(sum)
	);

IP 设置,注意箭头位置
在这里插入图片描述
综合报告
在这里插入图片描述
最大频率
在这里插入图片描述
这里可以看到,这里带有延迟一个时钟周期的PARALLEL_ADD IP的最大频率变高了,说明性能更高了,但是同时使用的资源也更多(这里多了8个8位寄存器)

总结

可以发现,在不追求性能的条件下,我们可以直接对8个数相加,如果要追求性能,我们可以考虑调用PARALLEL_ADD IP核,该IP核通过流水线的思想,添加寄存器,以面积换速度,提高算法性能。当然我们也可以自己设计流水线,但是调用IP的方法更加方便,在IP设置里面通过改变延迟时钟周期的个数来改变流水线的级数。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值