⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_ctr_mdf.v

📁 3x3中值滤波 verilog
💻 V
📖 第 1 页 / 共 2 页
字号:
	    	  	    mdf_y_a22<=rd_data_y1_d2;
	    	  	    mdf_y_a23<=rd_data_y1_d1;
	    	  	  end
	    	  	else if(hde_out&&(!hde_d6))//second column
	    	  	  begin
	    	  	  	mdf_y_a11<=rd_data_y1_d3;
	    	  	    mdf_y_a12<=rd_data_y1_d2;
	    	  	    mdf_y_a13<=rd_data_y1_d1;
	    	  	    mdf_y_a21<=rd_data_y1_d3;
	    	  	    mdf_y_a22<=rd_data_y1_d2;
	    	  	    mdf_y_a23<=rd_data_y1_d1;
	    	  	  end
	    	  	else if((!hde_d2)&&hde_d3)//last 2 column
	    	  	  begin
	    	  	  	mdf_y_a11<=rd_data_y1_d3;
	    	  	    mdf_y_a12<=rd_data_y1_d2;
	    	  	    mdf_y_a13<=rd_data_y1_d1;
	    	  	    mdf_y_a21<=rd_data_y1_d3;
	    	  	    mdf_y_a22<=rd_data_y1_d2;
	    	  	    mdf_y_a23<=rd_data_y1_d1;
	    	  	  end
	    	  	else if((!hde_d3)&&hde_d4)//last column
	    	  	  begin
	    	  	  	mdf_y_a11<=rd_data_y1_d3;
	    	  	    mdf_y_a12<=rd_data_y1_d2;
	    	  	    mdf_y_a13<=rd_data_y1_d1;
	    	  	    mdf_y_a21<=rd_data_y1_d3;
	    	  	    mdf_y_a22<=rd_data_y1_d2;
	    	  	    mdf_y_a23<=rd_data_y1_d1;
	    	  	  end
	    	  	else if(hde_d6)
	    	  	  begin
	    	  	    mdf_y_a11<=rd_data_y1_d3;
	    	  	    mdf_y_a12<=rd_data_y1_d2;
	    	  	    mdf_y_a13<=rd_data_y1_d1;
	    	  	    mdf_y_a21<=rd_data_y1_d3;
	    	  	    mdf_y_a22<=rd_data_y1_d2;
	    	  	    mdf_y_a23<=rd_data_y1_d1;
	    	  	  end
	    	  end//if !rd_start
	    	else
	    	  begin
	    	  	if(line_switch)
	    	  	  begin
	    	  	  	if(hde_d4&&(!hde_out))//first column
	    	  	      begin
	    	  	  	    mdf_y_a11<=rd_data_y1_d2;
	    	  	        mdf_y_a12<=rd_data_y1_d2;
	    	  	        mdf_y_a13<=rd_data_y1_d1;
	    	  	        mdf_y_a21<=rd_data_y2_d2;
	    	  	        mdf_y_a22<=rd_data_y2_d2;
	    	  	        mdf_y_a23<=rd_data_y2_d1;
	    	  	      end
	    	  	    else if(hde_out&&(!hde_d6))//second column
	    	  	      begin
	    	  	  	    mdf_y_a11<=rd_data_y1_d3;
	    	  	        mdf_y_a12<=rd_data_y1_d2;
	    	  	        mdf_y_a13<=rd_data_y1_d1;
	    	  	        mdf_y_a21<=rd_data_y2_d3;
	    	  	        mdf_y_a22<=rd_data_y2_d2;
	    	  	        mdf_y_a23<=rd_data_y2_d1;
	    	  	      end
	    	  	    else if((!hde_d2)&&hde_d4)//last 2 column
	    	  	      begin
	    	  	  	    mdf_y_a11<=rd_data_y1_d3;
	    	  	        mdf_y_a12<=rd_data_y1_d2;
	    	  	        mdf_y_a13<=rd_data_y1_d1;
	    	  	        mdf_y_a21<=rd_data_y2_d3;
	    	  	        mdf_y_a22<=rd_data_y2_d2;
	    	  	        mdf_y_a23<=rd_data_y2_d1;
	    	  	      end
	    	  	    else if((!hde_d2)&&hde_d4)//last column
	    	  	      begin
	    	  	        mdf_y_a11<=rd_data_y1_d3;
	    	  	        mdf_y_a12<=rd_data_y1_d2;
	    	  	        mdf_y_a13<=rd_data_y1_d1;
	    	  	        mdf_y_a21<=rd_data_y2_d3;
	    	  	        mdf_y_a22<=rd_data_y2_d2;
	    	  	        mdf_y_a23<=rd_data_y2_d1;
	    	  	      end
	    	  	    else if(hde_d6)
	    	  	      begin
	    	            mdf_y_a11<=rd_data_y1_d3;
	    	            mdf_y_a12<=rd_data_y1_d2;
	    	            mdf_y_a13<=rd_data_y1_d1;
	    	            mdf_y_a21<=rd_data_y2_d3;
	    	            mdf_y_a22<=rd_data_y2_d2;
	    	            mdf_y_a23<=rd_data_y2_d1;
	    	          end
	    	      end//if line_switch
	    	    else
	    	      begin
	    	  	  	if(hde_d4&&(!hde_out))//first column
	    	  	      begin
	    	  	  	    mdf_y_a11<=rd_data_y2_d2;
	    	  	        mdf_y_a12<=rd_data_y2_d2;
	    	  	        mdf_y_a13<=rd_data_y2_d1;
	    	  	        mdf_y_a21<=rd_data_y1_d2;
	    	  	        mdf_y_a22<=rd_data_y1_d2;
	    	  	        mdf_y_a23<=rd_data_y1_d1;
	    	  	      end
	    	  	    else if(hde_out&&(!hde_d6))//second column
	    	  	      begin
	    	  	  	    mdf_y_a11<=rd_data_y2_d3;
	    	  	        mdf_y_a12<=rd_data_y2_d2;
	    	  	        mdf_y_a13<=rd_data_y2_d1;
	    	  	        mdf_y_a21<=rd_data_y1_d3;
	    	  	        mdf_y_a22<=rd_data_y1_d2;
	    	  	        mdf_y_a23<=rd_data_y1_d1;
	    	  	      end
	    	  	    else if((!hde_d2)&&hde_d4)//last 2 column
	    	  	      begin
	    	  	  	    mdf_y_a11<=rd_data_y2_d3;
	    	  	        mdf_y_a12<=rd_data_y2_d2;
	    	  	        mdf_y_a13<=rd_data_y2_d1;
	    	  	        mdf_y_a21<=rd_data_y1_d3;
	    	  	        mdf_y_a22<=rd_data_y1_d2;
	    	  	        mdf_y_a23<=rd_data_y1_d1;
	    	  	      end
	    	  	    else if((!hde_d2)&&hde_d4)//last column
	    	  	      begin
	    	  	        mdf_y_a11<=rd_data_y2_d3;
	    	  	        mdf_y_a12<=rd_data_y2_d2;
	    	  	        mdf_y_a13<=rd_data_y2_d1;
	    	  	        mdf_y_a21<=rd_data_y1_d3;
	    	  	        mdf_y_a22<=rd_data_y1_d2;
	    	  	        mdf_y_a23<=rd_data_y1_d1;
	    	  	      end
	    	  	    else if(hde_d6)
	    	  	      begin
	    	            mdf_y_a11<=rd_data_y2_d3;
	    	            mdf_y_a12<=rd_data_y2_d2;
	    	            mdf_y_a13<=rd_data_y2_d1;
	    	            mdf_y_a21<=rd_data_y1_d3;
	    	            mdf_y_a22<=rd_data_y1_d2;
	    	            mdf_y_a23<=rd_data_y1_d1;
	    	          end
	    	      end//else if line_switch
	    	  end//else if !rd_start
	    end//else if !rst_n
  end//always
  
//this always block initializes mdf_uv_a* and generates
//correct mdf_uv_a* for median filter
always @(posedge clk or negedge rst_n)
  begin
    if(!rst_n)
      begin
      	mdf_uv_a11<=8'b0;
      	mdf_uv_a12<=8'b0;
      	mdf_uv_a13<=8'b0;
      	mdf_uv_a21<=8'b0;
      	mdf_uv_a22<=8'b0;
      	mdf_uv_a23<=8'b0;
      end
	  else
	    begin
	    	if(!rd_start)//for first line
	    	  begin
	    	  	if(hde_d4&&(!hde_d6))//first column and second column
	    	  	  begin
	    	  	  	mdf_uv_a11<=rd_data_uv1_d2;
	    	  	    mdf_uv_a12<=rd_data_uv1_d2;
	    	  	    mdf_uv_a13<=rd_data_uv1;
	    	  	    mdf_uv_a21<=rd_data_uv1_d2;
	    	  	    mdf_uv_a22<=rd_data_uv1_d2;
	    	  	    mdf_uv_a23<=rd_data_uv1;
	    	  	  end
	    	  	else if((!hde_d2)&&hde_d4)//last 2 column and last column
	    	  	  begin
	    	  	  	mdf_uv_a11<=rd_data_uv1_d4;
	    	  	    mdf_uv_a12<=rd_data_uv1_d2;
	    	  	    mdf_uv_a13<=rd_data_uv1_d2;
	    	  	    mdf_uv_a21<=rd_data_uv1_d4;
	    	  	    mdf_uv_a22<=rd_data_uv1_d2;
	    	  	    mdf_uv_a23<=rd_data_uv1_d2;
	    	  	  end
	    	  	else if(hde_d6)
	    	  	  begin
	    	  	    mdf_uv_a11<=rd_data_uv1_d4;
	    	  	    mdf_uv_a12<=rd_data_uv1_d2;
	    	  	    mdf_uv_a13<=rd_data_uv1;
	    	  	    mdf_uv_a21<=rd_data_uv1_d4;
	    	  	    mdf_uv_a22<=rd_data_uv1_d2;
	    	  	    mdf_uv_a23<=rd_data_uv1;
	    	  	  end
	    	  end//if !rd_start
	    	else//if !rd_start
	    	  begin
	    	  	if(line_switch)
	    	  	  begin
	    	  	    if(hde_d4&&(!hde_d6))//first column and second column
	    	  	      begin
	    	  	  	    mdf_uv_a11<=rd_data_uv1_d2;
	    	  	        mdf_uv_a12<=rd_data_uv1_d2;
	    	  	        mdf_uv_a13<=rd_data_uv1;
	    	  	        mdf_uv_a21<=rd_data_uv2_d2;
	    	  	        mdf_uv_a22<=rd_data_uv2_d2;
	    	  	        mdf_uv_a23<=rd_data_uv2;
	    	  	      end
	    	  	    else if((!hde_d2)&&hde_d4)//last 2 column and last column
	    	  	      begin
	    	  	  	    mdf_uv_a11<=rd_data_uv1_d4;
	    	  	        mdf_uv_a12<=rd_data_uv1_d2;
	    	  	        mdf_uv_a13<=rd_data_uv1_d2;
	    	  	        mdf_uv_a21<=rd_data_uv2_d4;
	    	  	        mdf_uv_a22<=rd_data_uv2_d2;
	    	  	        mdf_uv_a23<=rd_data_uv2_d2;
	    	  	      end
	    	  	    else if(hde_d6)
	    	  	      begin
	    	  	        mdf_uv_a11<=rd_data_uv1_d4;
	    	  	        mdf_uv_a12<=rd_data_uv1_d2;
	    	  	        mdf_uv_a13<=rd_data_uv1;
	    	  	        mdf_uv_a21<=rd_data_uv2_d4;
	    	  	        mdf_uv_a22<=rd_data_uv2_d2;
	    	  	        mdf_uv_a23<=rd_data_uv2;
	    	  	      end
	    	      end//if line_switch
	    	    else//if line_switch
	    	      begin
	    	  	    if(hde_d4&&(!hde_d6))//first column and second column
	    	  	      begin
	    	  	  	    mdf_uv_a11<=rd_data_uv2_d2;
	    	  	        mdf_uv_a12<=rd_data_uv2_d2;
	    	  	        mdf_uv_a13<=rd_data_uv2;
	    	  	        mdf_uv_a21<=rd_data_uv1_d2;
	    	  	        mdf_uv_a22<=rd_data_uv1_d2;
	    	  	        mdf_uv_a23<=rd_data_uv1;
	    	  	      end
	    	  	    else if((!hde_d2)&&hde_d4)//last 2 column and last column
	    	  	      begin
	    	  	  	    mdf_uv_a11<=rd_data_uv2_d4;
	    	  	        mdf_uv_a12<=rd_data_uv2_d2;
	    	  	        mdf_uv_a13<=rd_data_uv2_d2;
	    	  	        mdf_uv_a21<=rd_data_uv1_d4;
	    	  	        mdf_uv_a22<=rd_data_uv1_d2;
	    	  	        mdf_uv_a23<=rd_data_uv1_d2;
	    	  	      end
	    	  	    else if(hde_d6)
	    	  	      begin
	    	  	        mdf_uv_a11<=rd_data_uv2_d4;
	    	  	        mdf_uv_a12<=rd_data_uv2_d2;
	    	  	        mdf_uv_a13<=rd_data_uv2;
	    	  	        mdf_uv_a21<=rd_data_uv1_d4;
	    	  	        mdf_uv_a22<=rd_data_uv1_d2;
	    	  	        mdf_uv_a23<=rd_data_uv1;
	    	  	      end
	    	      end//else if line_switch
	    	  end//else if !rd_start
	    end//else if !rst_n
  end//always
  
//this always block initializes hs_out, vs_out and generates
//hs_out, vs_out
always @(posedge clk or negedge rst_n)
  begin
    if(!rst_n)
      begin
        hs_out<=1'b0;
		    vs_out<=1'b0;
		    hs_d1<=1'b0;
		    vs_d1<=1'b0;
		    hs_d2<=1'b0;
		    vs_d2<=1'b0;
		    hs_d3<=1'b0;
		    vs_d3<=1'b0;
		    hs_d4<=1'b0;
		    vs_d4<=1'b0;
	    end
	  else
	    begin
        hs_d1<=hs;
        hs_d2<=hs_d1;
        hs_d3<=hs_d2;
        hs_d4<=hs_d3;
        hs_out<=hs_d4;
        vs_d1<=vs;
        vs_d2<=vs_d1;
        vs_d3<=vs_d2;
        vs_d4<=vs_d3;
        vs_out<=vs_d4;
      end//else if !rst_n
  end//always
  
//this always block initializes hde_out, vde_out and generates
//correct hde_out, vde_out
always @(posedge clk or negedge rst_n)
  begin
    if(!rst_n)
      begin
      	hde_d1<=1'b0;
      	hde_d2<=1'b0;
      	hde_d3<=1'b0;
      	hde_d4<=1'b0;
      	hde_out<=1'b0;//hde_out=hde_d5
      	hde_d6<=1'b0;
      	vde_1_d1<=1'b0;
      	vde_1_d2<=1'b0;
      	vde_1_d3<=1'b0;
      	vde_1_d4<=1'b0;
        vde_1_out<=1'b0;
        vde_2_out<=1'b0;
      end
    else
      begin
      	hde_d1<=hde;
      	hde_d2<=hde_d1;
      	hde_d3<=hde_d2;
      	hde_d4<=hde_d3;
      	hde_out<=hde_d4;
      	hde_d6<=hde_out;
      	vde_1_d1<=vde;
      	vde_1_d2<=vde_1_d1;
      	vde_1_d3<=vde_1_d2;
      	vde_1_d4<=vde_1_d3;
        vde_1_out<=vde_1_d4;
        if(extra_vde&&hde_rd_start)
          vde_2_out<=extra_vde;
        else
          vde_2_out<=1'b0;
      end//else if !rst_n
  end//always

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -