Trên thị trường hiện nay có rất nhiều chip digital filer của rất nhiều hãng chẳng hạn DF1704 của TI, YM3434 của yamaha, CDX1244 của Sony... Tuy nhiên mỗi digital filer chip của mỗi hãng có đặc tính khác nhau, sẽ cho ra chất âm khác nhau. Nó sẽ ảnh hưởng đến sở thích nghe nhạc từng ngừoi, vì vậy em nghĩ DIY digital filter là cũng cần thiết để tìm ra đặc tính của filter thích hợp nhất cho mình bằng cách thay đổi đặc tính của filter trong lúc sử dụng. Em nghĩ DIY digital filer không có gì là mới mẻ trên thế giới, tuy nhiện em vẫn mạo muội giới thiệu sơ đồ khối cơ bản của hệ âm thanh có sử dụng DIY digital filter dứoi đây. Thiết kế đầu tiên này em dự định làm 8x interpolation digital filter để chạy với AD1865. Đặc tính của filter được em thiết kế và mô phỏng dưới dạng ghép tầng 3 filter với nhau bằng phần mềm Matlab với passband freq 0 -20 KHz, stopband atten < -120 dB. Đáp ứng tần số của filter tổng hợp như sau Đặc tính passband ripple 0-20 Khz < +/-0.00002 dB Kiểm tra mô hình fixed point trứoc khi làm trên FPGA Mô phỏng 2x polyphase interpolation filter (154 taps) Mô phỏng 2x halfband interpolation filter (35 taps) Mô phỏng ghép tầng 3 filters fout = 8fs Mach filter hoàn chỉnh với tấn số lấy mãu ngõ ra có thể chọn 2fs, 4fs, và 8fs Trên đây là vài dòng giới thiệu về dự án đang thực hiện lúc nhàn rỗi của em. Em sẽ cập nhật thêm thộng tin về dự án DIY này. Bác nào có cùng sở thích làm cùng thì em rất sẵn sàng tiếp thu ý kiến đóng góp và chia sẻ kinh nghiệm để hoàn thành dự án này. Thân chào
Re: DIY digital filter, tại sao không? Rất hay bác ơi, tuy nhiên bác có thể support để có thể switch qua lại giữa hai chế độ NOS và OS được không ạ. Em nghĩ như vậy sẽ thú vị lắm
Re: DIY digital filter, tại sao không? Nếu dự án này khả thi thì xem ra đuối lắm và tốn kém lắm àh nghen, về hiệu quả thì => hạ hồi phân giải IC loại này có sẵn tren sieuthiav, giá chừng 120k/con thui, dự án này xin phép quan sát thui
Re: DIY digital filter, tại sao không? Để support chế độ NOS va OS thi chỉ cấn thêm 1 mạch 4:1 multiplexer ngõ vào và các ngõ ra trung gian của các tầng filters, như vậy sẽ support đầy đủ từ NOS, 2x,4x, 8x OS luôn bác ạ. Việc này thực hiện rất đơn giản trong FPGA. Hiện giờ em đang hoàn thành phần viết chương trình cho FPGA để ước lượng tổng số logic gates, RAMs, và multipliers. Nhờ đó sẽ chọn được loại FPGA phù hợp để giảm giá thành tối đa.
Re: DIY digital filter, tại sao không? Em vẫn rất thích dự án của bác vì em là dân CNTT mà, hồi đó cũng có mày mò PIC một xíu .
Re: DIY digital filter, tại sao không? Hic vụ này chắc không có nhiều người giúp được bác rồi. Để lập trình FPGA không phải là đơn giản như PIC hay AVR. Mặt khác áp dụng FPGA để lọc số lại là 1 bước tiến xa hơn rất nhiều. Tuy vậy em vẫn rất ủng hộ bác. Chúc bác sẽ thành công
Re: DIY digital filter, tại sao không? Dự án hay quá bác ạ , à theo em nghĩ thì bác chỉ cần switch ở 4X , 8X và chế độ ko nâng tần số lấy mẫu thôi vì các DAC về sau thường được chế tạo ở 2 mode này( họ multibit) hoặc 1 bit ạ , và như vậy bác có thể làm kit rời sử dụng nhiều loại DA ạ !
Sao forum chỉ cho một post tối đa là 10 link image vậy nhỉ? Em đành phải post vào đây vậy Test thử filter trên Altera FPGA chip chạy ở tần số f = 50 MHz 8x interpolation mode 4x interpolation mode 2x interpolation mode 8x mode, 1000 Hz input tone (output scaled by 2) 2x mode, 1000 Hz input tone (output scaled by 2)
Bác risc có thể giải thích rõ hơn là tại sao mỗi digital filter của mỗi hãng lại cho ra một chất âm khác nhau được không. Em nghĩ điều này rất quan trọng đối với dự án của bác.
Mỗi loại digital filter của mỗi hãng có những đặc tính khác nhau. Digital filter càng đắt tiền thì attenuation stopband và passband ripple rất thấp, transition band nhỏ (sharp roll-off), vì vậy sẽ lọc bỏ triệt để các hài bậc cao dẫn đến tín hiệu ngõ ra ít bị méo nhất. Hơn nữa, giá thành của filter cũng phụ thuộc vào kĩ thuật chế tạo filter, các tín hiệu bên trong filter nếu giữ nguyên độ chínnh xác trong quá trình xử lí tín hiệu sẽ làm cho giá thành tăng cao, vì vậy việc cân bằng giữa giá thành/ hiệu năng là một trong nhửng yếu tố quan tam hàng đầu cho các sản phẩm thương mại của các hãng. Trong project này, em giữ nguyên độ chính xác trong quá trình xử lý tín hiệu, tại ngõ ra sẽ đựoc cắt giảm xuống còn 24-bit cho phù hợp với các loại DAC hiện nay. Tuy nhiên, chất âmm khác nhau cũng là do cảm nhận khách quan của mỗi người khi thưởng thức âm nhạc của từng người. Đó là những nhận xét cá nhân của em, có thể có những chỗ chưa hợp lí, mong các bác góp ý thêm.
Re: DIY digital filter, tại sao không? Hi bác, Bác có thể làm ngược lại được không? chọn loại FPGA tốt nhất để cho chất lượng tối đa? Em thấy dân audio thích theo kiểu này hơn. Đã chấp nhận chơi DIY thì chất lượng phải hơn hãng mới là audio chứ hihi
Re: DIY digital filter, tại sao không? Theo bác thì như thế nào là FPGA tốt nhất? Ko lẽ là mua loại FPGA đắt tiền nhất như là Stratix II hay Virtex 5 series chẳng hạn để giải một bài toán lọc tín hiệu âm thanh số trong khi các loại FPGA loại nhỏ đã dư sức giải qyuết đươc bài toán này rồi. Hơn nữa những loại FPGA hi-end này đóng gói dạng FBGA, số chân cẳng lên đến vài trăm chân, bác có thể DIY được PCB cho nó ko? Vài dòng với bác Masterlazy.
chào bác risc, việc dùng con chip nào là ngành của bác, em không biết gì hết. , nhưng thấy giải pháp filter của bác bao gồm luôn việc upsampling 8x nên em mới mong nó dùng loại tốt nhất, để nó đè chết được con upsampling nhà em. Khi đó mọi người đều mừng, em sẵn sàng mang con upsamling của em ra để bác đối chiếu. tks bác
Cám ơn ý kiến của bác. Bác có thể cho em biết spec của con upsampling mà bác đang dùng ko? Em muốn tham khảo các loại chip mới để mở mang thêm kiến thức.
Chắc bác masterlazy nói về cái cục upsampling như kiểu của dcs: http://www.dcsltd.co.uk/product/scarlatti-upsampler Thực ra thì chức năng của cục upsampling này cũng không khác vì con chip digital filter ở trong đầu CD bình thường. 99,9% các đầu CD hiên nay đang SX đều có upsampling 8X (thường thì người ta gọi là oversampling). Vấn đề chỉ là ở chỗ triển khai thế nào cho tốt thôi. Đây có lẽ là vấn dề mà bác RISC quan tâm. Cũng cần nói thêm là upsampling không làm tăng độ phân giải thật của tín hiệu như nhiều hãng quảng cáo. Chức năng chủ yếu là để lọc quantization noise thôi.
Mạch hoàn chỉnh với ngõ vào I2S, ngõ ra tương thích các loại 16, 18, 20 và 24-bit DAC. 8x mode, 24-bit output
Chào bác RISC, Em thấy ý tưởng của bác rất hay, nhưng có lẽ chưa có nhiều người nghiên cứu về mạch lọc số. Đặc biệt, nó lại thực thi trên FPGA, nên lĩnh vực này càng hẹp và không có nhiều người tham gia. Em nghĩ, bác có thể trình bày cơ sở toán học của mạch lọc số để mọi người có thể hiểu được và biết đâu nó có thể thực thi được trên các chip micro-processor hoặc là các chip DSP nào đó mà có thể dễ thực tế hóa nó hơn không? Vài ý tưởng nhỏ, không biết ý bác thế nào? Có gì mong bác chỉ giáo ạ.
Cơ sở toán học của mạch lọc số thực ra không có gì là mới mẻ, nó hoàn toàn dựa trên lý thuyết của mạch lọc FIR cơ bản. Ở đây em sử dụng mạch polyphase FIR, polyphase halfband, đó là những biến thể của FIR filter, cho phép chia ngắn mạch lọc FIR truyền thống thành nhiều mạch sub-filter bank, nhờ đó mà mình có thể thực hiện filtering và upsampling đồng thời. Nếu mà nói hết ở đây thì rất dài dòng, bác có thể đọc lý thuyết này trong bất kì sách xử lý tín hiệu số nào, dứoi đây là 2 cuốn bác nên tìm đọc -Multirate signal processing for communication system, Fredric, J. Harris, Prentice Hall (em rất thích cuốn này)_ -Digital Signal Processing: A Computer-Based Approach, Mitra, Sanjit K., McGrawHill (cuốn này là abc) Vấn đề đặt ra ở đây là triển khai như thế nào cho hiệu quả tốt nhất, còn việc sử dụng FPGA, DSP hay microprocessor thì tùy thuộc vào người thiết kế lựa chọn, miễn làm sao đáp ứng được yêu cầu xử lý tín hiệu (tốc độ xử lý, tài nguyên, giá thành). Bàn thân em thì quen sử dụng FPGA vì nó có tốc độ xử lý rất nhanh, việc mô phỏng các tín hiệu rất trực quan, các IOs của FPGA có khả năng tùy biến rất dễ dàng cho việc layout PCB, quan trọng hơn nũa là mức độ tái sử dụng code rất cao cho các dự án khác. Bác triển khai được trên DSP hay microprocessor thì cũng rất hay, mình rất sẵn sàng chia sẽ kinh nghiệm với bác.
Cám ơn bác RISC đã chia sẽ. Đúng là sử dụng FPGA thì dễ thực thi hơn, vì nó có thể thực hiện nhiều phép toán cùng lúc hoặc có thể thực thi dạng pineline cũng dễ dàng. Một vài dòng chip nó còn cho phép sử dụng SignalTap (Altera) hoặc Chipscope (Xilinx) để debug mà bác RISC chắc là rất am hiểu phần này. Em cũng đang nghiên cứu thử có thể thực thi được trên microprocessor hay không? Với microprocessor, tốc độ là vấn đề lớn, vì nó chỉ thực hiện phép toán một cách tuần tự, không thực hiện song song được như FPGA. Có vấn đề gì em sẽ nhờ bác tư vấn. Chúc bác sớm ra mắt dự án mạch lọc số này, để anh em được "mục sở thị". Xin cám ơn bác!
E nghĩ bác có thể thực hiện trên MPC được với điều kiện phải có đủ RAM để đệm trước khi xuất ra DAC và vì thế nó sẽ bị trể, tức là CD phải đọc và chuyển cho bác 1 đoạn nhạc, bác lọc xong rồi phát ra DAC, trong quá trình pát đoạn trước thì vẫn đọc và xử lý đoạn tiếp theo. Đó là giải pháp e nghĩ, bác xem có hợp lý ko?
Cám ơn bác bocaungongac đóng góp ý kiến. Nếu dùng microprocessor, thì chắc chắn phải dùng RAM để đệm lại kết quả tính toán tạm thời và dữ liệu cuối cùng để xuất qua DA. Dung lượng RAM bao nhiêu thì còn tùy vào cách xử lý. Tuy nhiên, theo em, thì dung lượng RAM cũng không lớn lắm và nếu MPC của bác có RAM nội đủ để dùng thì càng tốt và dễ dàng hơn khi Layout PCB (vì không phải thêm con RAM nhùng nhằng trên mạch). Hiện tại, em đang tính toán tốc độ của MPC 32bit với xung nhịp xử lý 100MHz và IO tốc độ 24MHz xem thử nó có thể xuất ra 2 kênh, 4 kênh 1865 không? Bác bocaungongac có ý tưởng gì hay về MPC bác cho ý kiến nhé! Cám ơn bác!
Re: DIY digital filter, tại sao không? PIC theo e biết là MCU chứ đâu pải FPGA đâu bác. Mà cái vụ này phải dùng FPGA, xử lý song song mới được. Nếu dùng PIC sẽ bị dì lây đóa.
Dự án của bác đúng là hay quá. Chưa có ai làm được. Chúc bác thành công. Bác có thể chia sẽ với AE về việc bác làm được ko? Trong Matlab hàm bác dùng để mô phỏng là hàm gì? Thông số của nó là bao nhiêu? Code FPGA là bác tự viết code hay dùng thư viện nào? Bác dùng VHDL, AHDL hay là Verilog? Vài dòng thăm hỏi, mong bác chỉ giáo cho. Nếu được, e cùng làm với bác cho có bạn 2 đứa nhé. Chúc bác khỏe.
Không cần bác cám ơn mà ... bác có tiền lẻ cho đồng cũng được, hihi. Nếu bác dùng MPC thì e nghĩ RAM phải lớn lắm đó, trên hàng chục MB đó. Bác thử nghĩ coi, 1 bản nhạc CD bao nhiêu MB (1 đĩa 7~800MB chỉ khoảng 10 bài) => khó có con MPU nào có đủ RAM cho bác xài nếu ko dùng RAM ngoài. Bác nghiên cứu thử con RICS PowerPC của IBM xem sao? Con 32bit này có thể chạy tới trên 400Mhz đó bác.
Nếu bác dùng MPC thì tui nghĩ RAM phải lớn lắm đó, trên hàng chục MB đó. Bác thử nghĩ coi, 1 bản nhạc CD bao nhiêu MB (1 đĩa 7~800MB chỉ khoảng 10 bài) => khó có con MPU nào có đủ RAM cho bác xài nếu ko dùng RAM ngoài. Bác nghiên cứu thử con RISC PowerPC của IBM xem sao? Con 32bit này có thể chạy tới trên 400Mhz đó bác.[/quote] Theo em nghĩ thì không tốn RAM nhiều đến thế đâu ạ (vì tín hiệu sẽ tuần tự khi đã đẩy hết dữ liệu đầu thì RAM được giải phóng và dành cho dữ liệu tiếp , nếu mà MPU cần nhiều RAM để xử lý như vậy thì nó làm việc như nhận hết DATA mới xử lý thì delay mất 5' 1 bài hát thông thường mất , theo em thì bác ấy định làm như RAM trên card VGA ấy ạ ) vấn đề là RAM tốc độ cao , còn nếu làm trên FGA có nhiều lợi điểm như xử lý song song thì nếu thực hiện và chương trình ổn thì là việc khá hay , các bác nhiều kinh nghiệm xin chia sẻ với nhau để mọi người DIY có sản phẩm tốt ngoài hãng chuyên ạ