`
loyuloyulo
  • 浏览: 32837 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

中值滤波器

 
阅读更多

中值滤波器
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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics