Em viết xong rồi, đo đạc timing ngõ ra đều ổn cả. Hiện giờ em chưa nhận được AD1865 để thử, chắc là phải mở mạch AD1955 đang nghe ra, set mode cho nó sử dụng external dgital filter để thử tạm (con này cho phép disable internal digital filter để sử dụng DF ở ngoài). Khi nào test xong em post kết quả lên cho các bác tham khảo.
Chào các bác, có lẽ thực thi mạch lọc số trên thiết bị phần cứng như FPGA hoặc MCU có lẽ phức tạp. Có lẽ không quá khó với những đại sư phụ trên diễn đàn chúng ta, nhưng với những người mới bắt đầu DIY thì quả là quá khó. Em xin trình bày cơ bản về mạch lọc số như sau. Các bác cho ý kiến nhé! Ví dụ ta có tín hiệu x(t), hàm mạch lọc h(t) và y(t) là tín hiệu ngõ ra Vậy thì y(t) = h(t)*x(t) (*: tích chập) Và để tính tích chập (covolution) thì phải tính tích phân của h(t).x(t) từ trừ vô cùng đến cộng vô cùng. Tuy nhiên, khi rời rạc hóa (digitalizing) và chuyển qua miền tần số, phép tính tích chập chỉ là tính tích và tổng. Ngoài ra, số mẫu (sample) đưa vào là hữu hạn, nên việc tính cũng trở nên đơn giản, với công thức như sau: Ví dụ: ta có các mẫu đầu vào là x(n) = {x1, x2, x3, ... , x(n)} hàm mạch lọc là h(n) = {h1, h2, h3} Tín hiệu ngõ ra là y(n) Chập tại vị trí trung tâm, ta có ngõ ra y(i) = h1.x(i-1) + h2.x(i) + h3.x(i+1) Số phần tử của mạch lọc h, người ta còn gọi là số tap. Trong trường hợp upsample, ta cứ chèn giá trị '0' vào giữa vị trí của chuỗi data ngõ vào x(n) và cho qua mạch lọc h(n), những vị trí '0' đó, sẽ được nội suy thành giá trị tương ứng. Ví dụ ta có hàm mạch lọc như hình trên, dùng để nội suy tuyến tính các giá trị tại vị trí upsample Như hình trên, ta có hàm mạch lọc h(n) = {0 1 0} Trong trường hợp chèn thêm '0' vào các chuỗi ngõ vào, ta cũng lấy thêm những giá trị giữa -1 0 1. Lúc đó mạch lọc h(n)= {0 0.5 1 0.5 0}. Vì giá trị '0' ở ngoài cùng, khi tính theo công thức trên, sẽ không có ý nghĩa, nên ta loại bỏ Như vậy mạch lọc h(n) = {0.5 1 0.5} Giả sử ta có chuỗi ngõ vào là x(n) = {3 5 9 6 2} Sau khi upsample, bằng cách thêm '0' vào giữa những giá trị đó, ta được chuỗi x(n) = {3 0 5 0 9 0 6 0 2} Bây giờ ta cho qua mạch lọc h(n) ta được chuỗi ngõ ra y(n) Theo công thức trên, vị trí số '0' đầu tiên được tính như sau: y(2) = 0.5x3 + 1x0 + 0.5x5 = 4 Vị trí số '5' y(3) = 0.5x0 + 1x5 +0.5x0 = 5 (bằng chính giá trị nguyên gốc) Như vậy, nếu đi qua mạch lọc tuyến tính như trên. Thì các vị trí '0' sẽ được nội suy bằng trung bình 2 giá trị liền kề. Còn vị trí những giá trị gốc ban đầu sẽ được giữ nguyên. Phép tính này rất đơn giản, vì chỉ sử dụng 2 giá trị đầu vào. Tuy nhiên, các nội suy tuyến tính này cho giá trị ngõ ra theo đường thẳng, chưa giống thực tế lắm. Chúng ta có thể dùng hàm parapol, hay hàm cubic (hàm bậc 3) để nội suy ra những giá trị khi upsample thì tín hiệu sẽ trung thực hơn. Lúc đó, chuỗi mạch lọc h(n) sẽ dài hơn và tính toán sẽ nhiều hơn. Em sẽ tìm hiểu và đưa ra các giá trị của các mạch lọc tiếp theo, các bác cho ý kiến nhé! Xin cám ơn các bác!
Topic này sao thấy toàn các vấn đề kỹ thuật, công nghệ cao không nhỉ, có hiện thực hóa thành sản phẩm Audio cao cấp mà các Thím khoai tây bán giá cả chục ngàn không các Bác ???
Kỹ thuật thì chắc là cũng không có gì mới, mạch lọc số chắc là cũng có nhiều cao thủ rất am hiểu về vấn đề này. Tuy nhiên, vấn đề quan trọng là hiện thực hóa nó với chi phí thấp và dễ thực hiện. Điều đó cũng khó, bởi lẽ thực tế rất hiếm các món ngon-bổ-rẻ. Nếu anh em muốn thực hiện mạch lọc số này, mình cứ thực hiện từ mạch đơn giản đến phức tạp, so sánh chất âm, cải tiến từ từ. Biết đâu, âm chất cũng được như đồ khoai tây mà giá thành thấp hơn. Chúng ta cùng bắt tay làm nhé! Các ơn các bác ủng hộ!
Em thấy mấy Thím tranh luận mãi mà chưa thấy sản phẩm nào giới thiệu hết chơn, Thím risc, Thím bocaungongac, Thím dig_media ới ời ơi, Thím nào làm cái sản phẩm này rồi thì cho Anh Em chiêm ngưỡng cho thêm phần thuyết phục, đọc một mớ bòng bong các đoạn code, đồ thị . . . . nhan nhản ở trên làm newbie Em thấy chán phèo :mrgreen:
Bác Diy bình tĩnh nào, mấy cái đồ lày đâu có thể làm ngày 1 ngày 2 là xong ngay được. Các vấn đề kĩ thuật phải bắt đầu từ nền tảng lí thuyết chứ, nếu ko am hiểu lí thuyết, mô phỏng trứoc khi bắt tay làm thực nghiệm thì em nghĩ sản phẩm sẽ được làm ra bằng niềm tin thôi. Trừ khi bác mua IC làm sẵn về rồi làm đúng theo datasheet, cái này thi em nghĩ Diyer nào cũng làm được cả, chả cần phải hiểu bên trong nó như thế nào, he he :mrgreen:
Bác dig tiếp tục đi chứ, bác design tiếp cái filter có spec tốt hơn filter trong con AD1955 hoặc AD1853 chẳng hạn, rồi so sánh với cái của em, xem cái nào tốt hơn rồi anh em thống nhất chọn cái nào tối ưu nhất.
Nói thiệt là Thím digmedia giải thít cơ sở toán học thì em còn hiểu chun chút, Thím không giải thích cách xây dựng các hàm lọc thì đọc tới đọc lui cũng chẳng hiểu gì. - Các Thím mà chỉ em hiểu các hàm lọc thì em sẽ chỉ lại cho cách lọc chỗ nào để cho âm thanh hay :mrgreen: (hình như Thím bocau nhà Em đang bị đuối chỗ này ) Thím risc, dig media đồng ý hông ???
Thía còn đề nghị của Em thì sao Thím Risc, thím dig-media ơi !!! Em có đo đạc hàm truyền đạt một vài Ampli nên cũng rút ra kinh nghiệm chút chút đó
Em nghĩ bác Diy có lẽ nên kiếm mấy cuốn về phân tích tín hiệu, lọc số để đọc thêm là sẽ vỡ ra hàm lọc nó thế nào. Mấy thứ này tài liệu đầy rẫy mà bác. Em đang théc méc là lọc chỗ nào để âm thanh hay nhỉ?! Em cũng muốn mở mang kiến thức về vụ này lắm, mong bác chỉ giáo.
Ối, bác Tập lịnh giới hạn ơi, e dốt nát có biết thiết kế mạch lọc mạch liết gì đâu ạ. Bác đừng la, tội nghiệp em. Bác đã thiết kế xong rồi thì hay là bác cho ae được mục kích được ko ạ. E chỉ biết vài hàm lọc chử nhật, tam giác, Hanning, Hamming, Kaiser... đơn giản thôi à, chắc ko là gì so với hàm của bác thiết kế rồi!
À, chỉ là các hệ số mạch lọc thôi í mà, các hệ số nhân này phải thử nghiệm nhiều mới ra được, em gọi nó là thông số nghệ thuật của con DAC, Các thím thấy sao?
Ái chà! Em cũng chỉ mới tập tễnh vào lĩnh vực này thôi, mặc dù là rất hào hứng với lĩnh vực này. Nhưng để design được cái filter tốt hơn 1955, 1853 thì giống như là "người mù xâu kim" rồi. Các bác có cao kiến gì thì chỉ giáo giùm em!
Chinh vi vay em moi mo topic nay de DIY filter day, muc dich la lam cai filter co the thay doi duoc coefficients tu ben ngoai. Neu ko thi em dau co mat cong DIY cai filter nay lam gie, xai lun internal filter co san trong DAC cho no lanh. (sao tu nhien ko go duoc tieng Viet nhi)
THeo em bac nen lay datasheet cua may con DAC day, xem frequency response cua no roi bac tu thiet ke filter de co frequency response bang hoac tot hon tren Matlab, sau do moi nghi den chuyen lam tren MPU hay FPGA. Ngay trang dau tien em co dua ket qua mo phong dap ung cua filter (floating point lan ca fixed point day). Em cung chi su dung nhung kien thuc ve mach loc co ban thoi bac, chang co gi la ghe gom dau bac. Bac co the su dung giai thuat Parks-McClellan de design FIR rat toi uu (ham firgr trong matlab) hoac dung ham em da neu o post truoc. Em ko di sau vao chi tiet cach su dung ham nay, phan help cua no huong dan rat chi tiet.
Vậy là Thím đi đúng hướng roài, dự án này mà thành công thì tương lai là mấy cái Tact, Behringer sẽ mệt mỏi í nhỉ
Hì, cái này là nghệ thuật thiết kế đấy thím Díy. Thím so sánh cái lày http://img222.imageshack.us/my.php?image=fixedpointcompositeresps.jpg và cái lày http://img216.imageshack.us/my.php?image=passbandripple.jpg với filter của ad1955, 1853,... thì biết ngay tiêu chí của em mà.
E chưa hiểu tiêu chí của bác lắm. E thấy đáp ứng Passband của AD1853 rất phẳng (0.0004dB) và Stopband Attenuation cũng đạt hơn 115dB đó bác.
Bác zoom cái passband cua AD1853 thêm 100 lần nữa cho nó đúng tỉ lệ với cái hình của em (+/-2e-6) thì cũng thấy nó chẳng phẳng tí lào đâu.
Uhm, cái của bác là 2e-5, so với 4e-4 của AD1853 thì quả là rất khác biệt đó bác. Chúc mừng bác đã thiết kế được một mạch lọc rất tốt.
Các Thím hơi bị nặng về thông số mô phỏng lý thuyết đó, không biết Các Thím có tìm hiểu về thống kê tai người phân biệt được tới độ phân giải bi nhiêu dB hông ? Vấn đề cái DAC của các Thím có hay hay không nó không hề phụ thuộc vào thông số Passband 0.0004 hay +/-2e-6 đâu. Em chỉ cần 0.01 nhưng mà chắn chắn là nó hay. Các Thím chắc là hiểu chỗ này.
Hì, trình của em còi, phải làm đến cỡ đấy mới chỉ dám mong nó hay. Làm được như Thím Díy nói thì em nghĩ có lẽ Thím phải đăng kí pattern gấp kẻo thèng khác ăn trộm mất.