前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >形态学滤波(四)

形态学滤波(四)

作者头像
瓜大三哥
发布2018-02-26 11:37:05
4340
发布2018-02-26 11:37:05
举报
文章被收录于专栏:瓜大三哥瓜大三哥瓜大三哥

形态学滤波(四)

之比较子模块设计

考虑到代码维护性和移植性,将基本比较单元设计为单独的子模块。这个子模块需实现以下功能:

(1)输出两个数据的较大值。

(2)输出两个数据的较小值。

考虑到系统鲁棒性,将比较结果打一拍之后输出。根据设计要求,本模块需要一个比较器、两个mux和两个reg。如下图所示:

很明显,本模块开销为1个始终。

设在某时刻连续10个输入数据流为:

Din_a = 3,8,5,9,7,1,2,6,0,4,x;
Din_a = x,3,8,5,9,7,1,2,6,0,4;

则din_a,din_b,min_tmp,max_tmp,dout_max,dout_min连续10个始终的数据如表9-1所示:

module minmax(
clk,
valid,
din_a,
din_b,
dout_min,
dout_max
 );
parameter DW =14;
parameter use_reg =1; //是否将数据缓存打一拍
input clk;
input valid;
input [DW-1:0] din_a;
input [DW-1:0] din_b;
output [DW-1:0] dout_min;
output [DW-1:0] dout_max;
reg [DW-1:0] dout_min;
reg [DW-1:0] dout_max;
reg [DW-1:0] min_reg;
reg [DW-1:0] max_reg;
assign min_tmp = (din_a > din_b) ? din_b : din_a;
assign max_tmp = (din_a > din_b) ? din_a : din_b;
generate
if(use_reg)
begin : map0
always @(posedge clk)
begin
if(valid)
begin
max_reg <= max_tmp;
min_reg <= min_tmp;
end 
end
assign dout_min = min_reg;
assign dout_max = max_reg;
end
endgenerate
generate
if(~use_reg)
begin : map1
assign dout_min = min_tmp;
assign dout_max = max_tmp;
end
endgenerate
endmodule
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 形态学滤波(四)
  • 之比较子模块设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档