📄 wavelet_lifting_pld.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 + -