Může mi někdo pomoct pochopit tento kód halfband filtr?

F

faye_hongdou

Guest
Kód:Modul halfband (CLK, DIN, dout);

vstup CLK;

vstup [11:0] DIN;

výkon [12:0] dout;reg [12:0] dout;

reg [11:0] d_m4, d_m3, d_m2, d_m1, d_0, d_1, d_2, d_3, d_4, d_5;

reg polovinu;drát [12:0] R5, R3, R1;

drát [11:0] r0;

drát [22:0] rr5, RR3, RR1, rr0;

drát [22:0] výsledek;Vždy @ (posedge CLK)

polovina <=!
polovinu;Vždy @ (posedge CLK)

if (polovina)

dout <= výsledek [22: 10];Vždy @ (posedge CLK)

začít

d_m4 <= din;

d_m3 <= d_m4;

d_m2 <= d_m3;

d_m1 <= d_m2;

d_0 <= d_m1;

d_1 <= d_0;

d_2 <= d_1;

d_3 <= d_2;

d_4 <= d_3;

d_5 <= d_4;

konecpřiřadit R5 = (d_5 [11], d_5) (din [11], din);

přiřadit R3 = (d_3 [11], d_3) (d_m3 [11], d_m3);

přiřadit r1 = (d_1 [11], d_1) (d_m1 [11], d_m1);

přiřadit r0 = (d_0);/ / Rozšířit data na 24 bit data.

přiřadit rr5 = R5 [12]?
(11'b1, R5): (11'b0, R5);

přiřadit RR3 = r3 [12]?
(11'b1, R3): (11'b0, R3);

přiřadit RR1 = r1 [12]?
(11'b1, r1): (11'b0, r1);

přiřadit rr0 = r0 [11]?
(12'b1, r0): (12'b0, r0);drát [22:0] result1 = R5 - (r3 <<4);

drát [22:0] result2 = result1 (R1 <<1);

drát [22:0] result3 = result2 (result2 <<2);drát [22:0] result4 = R1 (RR1 <<6);

drát [22:0] result5 = (R1 <<9) (r0 <<10);

drát [22:0] result6 = result4 result5;přiřadit výsledek = result3 result6;endmodule

 
R0 je vyroben přímo z d0, která je 12 bitů, zatímco ostatní (r1.. R5) jsou produkovány tím, že přidá signály, tak oni jsou prodloužena o jeden bit, aby se zabránilo přetečení.
Výpočet výsledků, jsou:
result1 = R5 - 16 * R3
result2 = result1 2 * r1
result3 = result2 4 * result2
result4 = R1 64 * RR1
result5 = 512 * R1 1024 * r0

V podstatě, když je posun doprava (<<), to znamená násobení.Je-li <<1 znamená to, násobení 2, <<2 do 4, <<3by 8 a tak dále.Obecně <n <je násobení o 2 až moc n.
Když posun doleva, je divize.
Doufám, že nyní je kód přehlednější pro vás

 
Díky.
Chápu, že <<n znamená vynásobit 2 ^ n.

Kód je realizovat halfband decimace filtr.Vím jen, že koeficienty filtru jsou střídavě nula, a symetrie.A není jiné detailní discription.
My puzzle je to, jak se dostanu koeficienty?V jiném slova, jak mohu vědět, co bych měl napsat "result1 = R5 - 16 * R3", ale ne "result1 = R5 4 * R3", nebo anyother rovnice?Co je průvodce behide to.

 

Welcome to EDABoard.com

Sponsor

Back
Top