bất cứ ai có thể giúp tôi hiểu được mã này cho bộ lọc halfband?

F

faye_hongdou

Guest
Mã số:module halfband (CLK, din, dout);

CLK đầu vào;

input [11:00] din;

đầu ra [12:00] dout;reg [12:00] dout;

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

reg nửa;dây [12:00] R5, R3, r1;

dây [11:00] r0;

dây [22:00] rr5, rr3, rr1, rr0;

dây [22:00] kết quả;luôn luôn @ (posedge CLK)

một nửa <=!
một nửa;luôn luôn @ (posedge CLK)

nếu (một nửa)

dout <= kết quả [22: 10];luôn luôn @ (posedge CLK)

bắt đầu

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;

cuốigán R5 = (d_5 [11], d_5) (din [11], din);

gán R3 = (d_3 [11], d_3) (d_m3 [11], d_m3);

gán r1 = (d_1 [11], d_1) (d_m1 [11], d_m1);

gán r0 = (d_0);/ / Mở rộng các dữ liệu tới 24 bit dữ liệu.

gán rr5 = R5 [12]?
(11'b1, R5): (11'b0, R5);

gán rr3 = R3 [12]?
(11'b1, R3): (11'b0, R3);

gán rr1 = r1 [12]?
(11'b1, r1): (11'b0, r1);

gán rr0 = r0 [11]?
(12'b1, r0): (12'b0, r0);dây [22:00] result1 = R5 - (R3 <<4);

dây [22:00] result2 = result1 (r1 <<1);

dây [22:00] result3 = result2 (result2 <<2);dây [22:00] result4 = r1 (rr1 <<6);

dây [22:00] result5 = (r1 <<9) (r0 <<10);

dây [22:00] result6 = result4 result5;ấn định kết quả = result3 result6;endmodule

 
r0 được sản xuất trực tiếp từ d0 đó là 12 bit trong khi các khác (r1.. R5) được sản xuất bằng cách thêm các tín hiệu, do đó, chúng được kéo dài thêm một chút để tránh tràn bộ nhớ.
Tính toán của kết quả là:
result1 = R5 - 16 * R3
result2 = result1 2 * r1
result3 = result2 4 * result2
result4 = r1 64 * rr1
result5 = 512 * r1 1024 * r0

Về cơ bản khi có thay đổi về bên phải (<<) nó có nghĩa là phép nhân.Nếu <<1 nó có nghĩa là phép nhân bằng 2, <<2 của 4, <<3by 8 và vv.Nói chung <<n là phép nhân của 2 đến sức mạnh của n.
Khi chuyển sang trái là phân chia.
Tôi hy vọng bây giờ đoạn code là rõ ràng hơn cho bạn

 
Cảm ơn.
Tôi hiểu rằng <<n có nghĩa là để nhân lên bởi 2 ^ n.

Mã này là để nhận ra một bộ lọc decimation halfband.Tôi chỉ biết rằng các hệ số của bộ lọc là cách khác không, và đối xứng.Và không có bất kỳ Discription kiến khác.
Câu đố của tôi là làm thế nào tôi có thể nhận được các hệ số?Trong một từ, làm thế nào tôi có thể biết những gì tôi nên viết là "result1 = R5 - 16 * R3", nhưng không phải "result1 = R5 4 * R3", hoặc phương trình anyother?Hướng dẫn behide này là gì.

 

Welcome to EDABoard.com

Sponsor

Back
Top