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

📄 wavelet_lifting_pld.v

📁 小波提升Verilog代码
💻 V
字号:
/***************************************************************

功能:		该子程序包含5/3小波提升实现
		修改记录:2008.2.12  王靖琰 
****************************************************************

5/3小波提升
分裂过程:
evne(n)=x(2n)
odd(n)=x(2n+1)
预测过程:
d(n)=x(2n+1)-1/2[x(2n)+x(2n+2)]
更新过程:
a(n)=x(2n)+1/4[d(n)+d(n-1)]

***************************************************************/

module wavelet_lifting_pld
	(
		clk,//原始数据
	    s,//输入数据
	approximation,//近似系数
	detail,//细节系数
	oe//近似和细节系数的输出时钟
	);

	input	s,clk;	
	output	approximation,detail;
	output  oe;

	wire [31:0] s;
	wire [31:0] approximation,detail;
	
	reg oe;//奇偶标志
		
	/*偶序列寄存器*/
	integer even_reg;
	integer pre_even_reg;
	integer pre2_even_reg;
	
	/*奇序列寄存器*/
	integer odd_reg;
	integer pre_odd_reg;
	integer pre2_odd_reg;
	
	integer sum1;	
	integer sum2;	
	integer y11;	
	integer y11_per;
	integer y02;		
	
	//分裂与 延迟
	always @(posedge clk)
	begin
	 oe=oe^'b1;
	 if(oe)
	 begin
	  pre2_even_reg=pre_even_reg;
	  pre_even_reg=even_reg; 	
	  even_reg=s;	  
	 end
	 else
	  pre2_odd_reg=pre_odd_reg;
	  pre_odd_reg=odd_reg;
	  odd_reg=s;
	end	

//预测
always @(posedge oe)
	begin	
	 sum1=pre_even_reg+even_reg;
	 sum1=sum1>>1;
	 sum1[31]=sum1[30];	
	 y11_per=y11;
	 y11=pre2_odd_reg-sum1;
	end
	
//更新
always @(posedge oe)
	begin	
	 sum2=y11+y11_per;
	 sum2=sum2>>2;
	 sum2[30]=sum2[29];sum2[31]=sum2[29];
	 y02=sum2+pre2_even_reg;
	end
	
	assign  approximation=y02;//近似系数
	assign  detail=y11;	//细节系数

endmodule

⌨️ 快捷键说明

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