DIY digital filter, tại sao không? (updated 16/4/09)

Discussion in 'Thiết bị số' started by risc, 15/3/09.

  1. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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.

    [​IMG]

    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


    [​IMG]


    Đặc tính passband ripple 0-20 Khz < +/-0.00002 dB

    [​IMG]

    Kiểm tra mô hình fixed point trứoc khi làm trên FPGA

    [​IMG]

    Mô phỏng 2x polyphase interpolation filter (154 taps)

    [​IMG]

    Mô phỏng 2x halfband interpolation filter (35 taps)

    [​IMG]

    Mô phỏng ghép tầng 3 filters fout = 8fs

    [​IMG]

    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

    [​IMG]




    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
     
    Tags:
  2. Pencil_Tube

    Pencil_Tube Advanced Member

    Joined:
    25/12/08
    Messages:
    1.218
    Likes Received:
    21
    Location:
    Gò Vấp - Tân Bình
    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 :D
     
  3. spiderman

    spiderman Advanced Member

    Joined:
    4/7/08
    Messages:
    317
    Likes Received:
    2
    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
     
  4. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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.

     
  5. Pencil_Tube

    Pencil_Tube Advanced Member

    Joined:
    25/12/08
    Messages:
    1.218
    Likes Received:
    21
    Location:
    Gò Vấp - Tân Bình
    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 :D .
     
  6. anhdt

    anhdt Advanced Member

    Joined:
    3/3/07
    Messages:
    599
    Likes Received:
    3
    Location:
    Ha Noi
    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
     
    linhkhanh74 likes this.
  7. dinhthuy

    dinhthuy Advanced Member

    Joined:
    20/5/08
    Messages:
    706
    Likes Received:
    6
    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 ạ !
     
  8. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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

    [​IMG]

    8x interpolation mode
    [​IMG]

    4x interpolation mode
    [​IMG]

    2x interpolation mode
    [​IMG]

    8x mode, 1000 Hz input tone (output scaled by 2)

    [​IMG]

    2x mode, 1000 Hz input tone (output scaled by 2)
    [​IMG]
     
  9. ClassA

    ClassA Moderator

    Joined:
    5/12/05
    Messages:
    2.524
    Likes Received:
    46
    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.
     
  10. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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.
     
  11. Masterlazy

    Masterlazy Advanced Member

    Joined:
    5/12/05
    Messages:
    307
    Likes Received:
    30
    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
    :)
     
  12. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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.
     
  13. Masterlazy

    Masterlazy Advanced Member

    Joined:
    5/12/05
    Messages:
    307
    Likes Received:
    30
    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
     
  14. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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.
     
  15. Planets

    Planets Advanced Member

    Joined:
    6/12/05
    Messages:
    2.228
    Likes Received:
    241
    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.
     
  16. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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
    [​IMG]
     

    Attached Files:

  17. dig_media

    dig_media Approved Member

    Joined:
    23/4/09
    Messages:
    19
    Likes Received:
    0
    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 ạ.
     
  18. risc

    risc Advanced Member

    Joined:
    27/12/06
    Messages:
    112
    Likes Received:
    0
    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.
     
  19. dig_media

    dig_media Approved Member

    Joined:
    23/4/09
    Messages:
    19
    Likes Received:
    0
    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!
     
  20. bocaungongac

    bocaungongac Advanced Member

    Joined:
    31/3/09
    Messages:
    292
    Likes Received:
    1
    Location:
    HCM
    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?
     
  21. dig_media

    dig_media Approved Member

    Joined:
    23/4/09
    Messages:
    19
    Likes Received:
    0
    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!
     
  22. bocaungongac

    bocaungongac Advanced Member

    Joined:
    31/3/09
    Messages:
    292
    Likes Received:
    1
    Location:
    HCM
    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.
     
  23. bocaungongac

    bocaungongac Advanced Member

    Joined:
    31/3/09
    Messages:
    292
    Likes Received:
    1
    Location:
    HCM
    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.
     
  24. bocaungongac

    bocaungongac Advanced Member

    Joined:
    31/3/09
    Messages:
    292
    Likes Received:
    1
    Location:
    HCM
    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.
     
  25. dinhthuy

    dinhthuy Advanced Member

    Joined:
    20/5/08
    Messages:
    706
    Likes Received:
    6
    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 ạ
     

Share This Page

Loading...