专栏首页瓜大三哥基于FPGA的均值滤波(四)

基于FPGA的均值滤波(四)

基于FPGA的均值滤波(四)

之除法电路模块

假定求和结果为sum,计算后的均值为Average,则有

可以通过上式的计算误差为:

以5x5的窗口为例,将除法电路加上后得到的求均值电路如下图所示:

reg [2*DW-1:0] mean_temp;
reg [2*DW-1:0] mean_temp1;
reg [2*DW-1:0] mean_temp2;
reg [2*DW-1:0] mean_temp3;
reg [2*DW-1:0] mean_temp4;
reg [2*DW-1:0] mean_temp5;
reg [2*DW-1:0] mean_temp6;
reg [2*DW-1:0] mean_temp7;
reg [2*DW-1:0] mean_temp8;
wire [DW-1:0] mean_temp9;
wire [DW+3-1:0] mean_temp10;
wire [2*DW+6-1:0] mean_temp11;
wire [2*DW-1:0] mean_out_temp;
generate
if(KSZ==5)
begin : divide_25
always @(posedge clk or negedge rst_n)
if(!rst_n)
begin
mean_temp <= {2*DW-1+1{1'b0}};
mean_temp1 <= {2*DW-1+1{1'b0}};
mean_temp2 <= {2*DW+1{1'b0}};
mean_temp3 <= {2*DW+5-1+1{1'b0}};
mean_temp4 <= {2*DW+6-1+1{1'b0}};
mean_temp5 <= {2*DW+1-1+1{1'b0}};
mean_temp6 <= {2*DW+6-1+1{1'b0}};
end
else
begin
//将二维求和结果缓存到mean_temp
if(sum_dout_valid[3])
mean_temp <= sum_dout_r[2];
//下一拍计算
if(sum_dout_valid[4])
begin
//计算mean_temp (2^-6+2^-7)
mean_temp1 <= ({6'b000000,mean_temp[2*DW-1:6]})+({7'b0000000,mean_temp[2*DW-1:7]});
//计算mean_temp (2^-3+2^-4)
mean_temp2 <= ({4'b0000,mean_temp[2*DW-1:4]})+({5'b00000,mean_temp[2*DW-1:5]});
//计算mean_temp (2^-1+2^-2)
mean_temp3 <= ({1'b0,mean_temp[2*DW-1:1]})+({2'b00,mean_temp[2*DW-1:2]});
//计算mean_temp (2^3+2^5)
mean_temp4 <= ({mean_temp[2*DW-4:0]},3'b000)+({mean_temp[2*DW-6:0]},5'b00000);
end
//下一排计算上一排的中间结果
if(sum_dout_valid[5])
begin
mean_temp5 <= mean_temp1 + mean_temp2;
mean_temp6 <= mean_temp3 + mean_temp4;
end
//下一排计算上一排的中间结果
if(sum_dout_valid[6])
mean_temp7<= mean_temp6 + mean_temp7;
end
end
endgenerate
//求和结果除以1024的结果
assign mean_temp8 = (sum_is_broarder_r[6]==1'b0)?(mean_temp7>>10):(2*DW{1'b0});
//四舍五入操作
assign mean_temp9 = (mean_temp[7] == 1'b1) ? (mean_temp8[DW-1:0]+1'b1):mean_temp8[DW-1:0];
//对输出结果保存三位小数‘
assign mean_temp11 = (sum_is_broarder_r[6]==1'b0) ? (mean_temp7>>7) : {2*DW-1-1{1'b0}};
assign mean_temp10 = (mean_temp11[DW+3-1:0] + 1'b1)

本文分享自微信公众号 - 瓜大三哥(xiguazai_tortoise),作者:xiguazaitortoise

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • BP神经网络

    BP(Back Propagation)神经网络是1986年由以Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前...

    瓜大三哥
  • AXI Central DMA

    Programming工作模式: 1.首先验证CDMASR.IDLE=1(开始写) 2.如果传输完成,则产生CDMACR.IOC_IrqEn中断请求,否则产生错...

    瓜大三哥
  • 蜂鸟E203系列——Linux调试(GDB+Openocd)

    GDB(GNU Project Debugger),是 GNU 工具链中的调试软件。GDB 是一款应用非常广泛的调试工具,能够用于调试 C、 C++、 Ada ...

    瓜大三哥
  • 绘制带误差bar的统计图

    df<-ToothGrowth #这里用的是R自带数据Toothgrowth

    爱学习的小明明
  • 本体节点现已登陆Libra协会创始成员Bison Trails的基础设施平台

    近日,本体北斗节点基础设施已集成至专注于 IaaS (Infrastructure as a Service)服务的 Bison Trails 平台。这一战略性...

    本体Ontology
  • Tasking要拆到什么粒度?

    首先,如果是面向问题域的Tasking,即对业务需求的拆解,标准答案当然是:将所有的需求场景都考虑到。你没看错,是要将所有的需求场景都分析到。你可能会有新的问题...

    袁慎建@ThoughtWorks
  • SQL Server 验证身份证合法性函数(使用VBScript.RegExp)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1148526
  • 西电OJ题解-21(C语言):数位输出

    本专栏为西安电子科技大学C语言课程题库的题解,题目及其部分解题思路由好兄弟梁忠鑫提供,学长在此只是修改完善。请各位支持原创,目前仅在CSDN发布。

    不温卜火
  • This License XXX has been cancelled(Mac环境)

    1.打开Finder,按快捷键组合 Shift+Command+G 查找文件,输入/etc/hosts,确认前往

    wuweixiang
  • 海盗分赃难题

    船上有十个海盗,有一天,他们抢到了一箱100斤的黄金,打算分赃(以斤为最小单位)。十个海盗从高到低分为10个等级,分配权在最高等级的海盗手里。他可以任意分配每个...

    java达人

扫码关注云+社区

领取腾讯云代金券