中值滤波器

中值滤波器
2010年04月22日
  
  
  本人最近写的中值滤波
  /******************************************************************************
  *
  * File Name: MidFilter.v
  * Version: 1.1
  * Date: 2010 4-24
  * Model: MidFilter Chip
  * DeName:寇飞强
  *
  ******************************************************************************/
  module MidFilter(input sys_clk,
  input sys_rst,
  input[7:0] midvar1,
  input[7:0] midvar2,
  input[7:0] midvar3,
  output [7:0]midvar_OUT,
  output reg clk_2);
  reg [7:0] c_img[3:1];
  reg [7:0] midvar_cp1[3:1];
  reg[7:0] MID_BUF[2:1];
  reg [1:0] count;
  reg [7:0] cmg_buf;
  reg[2:0] cnt;
  reg [7:0] midvar;
  reg f,f1;
  //对列进行排序
  always @(posedge sys_clk or negedge sys_rst)
  if(!sys_rst)
  count=c_img[1])&&(c_img[3]=cmg_buf)
  begin
  midvar_cp1[1]=midvar_cp1[2])
  begin
  midvar_cp1[3]=MID_BUF[1])&&(cmg_buf=MID_BUF[2])&&(cmg_buf=cmg_buf)&&(MID_BUF[1]=MID_BUF[2])&&(MID_BUF[1]<=cmg_buf)))
  begin
  midvar<=MID_BUF[1];
  end
  else
  begin
  midvar<=MID_BUF[2];
  end
  end
  end
  default:cnt<=2'd0;
  endcase
  //输出最终结果
  assign midvar_OUT=f1?midvar:8'dz;
  //数据输入同步时钟
  reg[1:0] div_fen;
  always @(posedge sys_clk or negedge sys_rst)
  if(!sys_rst)
  begin
  div_fen<=2'd0;
  clk_2<=1'b0;
  end
  else
  if(div_fen==2'd1)
  begin
  clk_2<=~clk_2;
  div_fen<=2'd0;
  end
  else
  div_fen<=div_fen+1'b1;
  endmodule
  测试如下
  module t;
  reg sys_clk;
  reg sys_rst;
  reg[7:0] midvar1;
  reg[7:0] midvar2;
  reg[7:0] midvar3;
  wire[7:0]midvar;
  wire clk_2;
  //reg[1:0] div_fen;
  //reg clk_3;
  /*always @(posedge sys_clk or negedge sys_rst)
  if(!sys_rst)
  begin
  div_fen<=2'd0;
  clk_3<=1'b0;
  end
  else
  if(div_fen==2'd1)
  begin
  clk_3<=~clk_3;
  div_fen<=2'd0;
  end
  else
  div_fen<=div_fen+1'b1; */
  initial
  begin
  sys_clk=1'b0;
  sys_rst=1'b0;
  midvar1=8'd0;
  midvar2=8'd0;
  midvar3=8'd0;
  #5 sys_rst=1'b1;
  end
  always #2 sys_clk=~sys_clk;
  always @(posedge clk_2)
  begin
  midvar1<=$random();
  midvar2<=$random();
  midvar3<=$random();
  end
  MidFilter m(.sys_clk(sys_clk),
  .sys_rst(sys_rst),
  .midvar1(midvar1),
  .midvar2(midvar2),
  .midvar3(midvar3),
  .midvar_OUT(midvar),
  .clk_2(clk_2));
  endmodule
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值