Âm thanh nổi 8-bit R-2R DAC, đây có phải là cách làm đúng đắn?


8

Tôi chưa quen với kỹ thuật điện và dự án đầu tiên tôi muốn làm là chế tạo một bộ chuyển đổi âm thanh kỹ thuật số sang tương tự. Tôi đã phát hiện ra rằng một cách tốt để làm điều này là sử dụng cấu trúc R-2R cho việc chuyển đổi.

Tôi muốn thử thách bản thân và bắt đầu lại từ đầu với phần kỹ thuật số của mạch, bên cạnh thực tế là tôi thực sự không thể tìm thấy bất kỳ giải pháp nào trên web để giúp xây dựng nó. Tôi đã có một chương trình mô phỏng mạch và bắt đầu thiết kế, trong khi tìm kiếm trên web cho tất cả các loại thiết bị điện tử khác nhau mà bạn có thể sử dụng cho nó.

Bây giờ tôi nghĩ rằng tôi có thể ở đâu đó trong khu phố để hiểu nguyên tắc của một bộ xử lý tín hiệu, nhưng sẽ hữu ích nếu ai đó có kinh nghiệm có thể giúp tôi kiểm tra xem thực tế tôi có hiểu không. Đây có phải là một nơi thích hợp để yêu cầu điều đó?

Nếu vậy, đây là mạch tôi đã thiết kế: Âm thanh nổi 8-bit R-2R DAC

Tôi đã sử dụng một thanh ghi thay đổi với chốt đầu ra cho mỗi kênh và Q7S được liên kết từ kênh này sang kênh khác để cung cấp dữ liệu. Có phải các tệp âm thanh thay thế kênh trái và phải, hoặc ngược lại, trong các khối? ví dụ: trong tệp 8 bit: 0010 0111 cho bên trái sau 0010 0110 cho bên phải?

Các thanh ghi thay đổi mà tôi đã sử dụng ở đây là 74HC595. Khi các bit dịch chuyển không phải của các chân sẽ (trong giây lát) được kích hoạt. Khi chốt [chân STCP] được kích hoạt, các bit được chuyển từ thanh ghi thay đổi vào thanh ghi lưu trữ, tại đó chúng sẽ trực tiếp xuất giá trị của chúng sang các chân tương ứng và duy trì hoạt động cho đến khi 16 bit tiếp theo được cho phép.

Sau đó, có tinh thể, trong đó tôi đã sử dụng tín hiệu sóng vuông để bắt chước một tín hiệu có tần số dao động đúng: 24,576 MHz. Nó cung cấp cho bộ đếm trong đó tần số được chia để xuất ra tần số mà bộ DAC của tôi cần. Trong trường hợp này, tần số mẫu phải là 192.000kHz và do đó tần số mà dữ liệu được dịch chuyển phải là 3.02 MHz (192.000 x 16 bit). Tốc độ xung nhịp 192.000kHz được sử dụng để kích hoạt STCP.

Điều tiếp theo tôi muốn làm là tìm ra cách tải dữ liệu từ một nguồn (ví dụ Raspberry) thông qua có thể I2C vào một bộ đệm trong DAC và từ đó theo dõi các bit vào mạch bạn thấy ở đây.

Nếu bạn nghĩ tôi hoặc tôi không đi đúng hướng, sẽ rất hữu ích khi cho tôi biết.

Cảm ơn! Rogier

Nhân tiện, tôi đã quên đề cập rằng bộ DAC mà tôi muốn xây dựng ít nhất là 24 bit cho mỗi kênh ở 96kHZ. Nó chỉ chiếm rất nhiều không gian cho mối đe dọa này và không khó để thêm chúng sau đó. Đó là cùng một nguyên tắc.


2
Dự án tốt, khó. Tôi đã không trải qua tất cả các môn toán của bạn nhưng âm thanh 8 bit sẽ không nghe quá hay. Bạn sẽ phải thiên vị một nửa nguồn cung cấp cho bạn 7 bit mỗi bên. Bạn có thể thoát khỏi điều này trên lời nói bị nén trong đó phạm vi động bị hạn chế nghiêm trọng nhưng những đoạn nói hoặc âm nhạc lặng lẽ sẽ bị biến dạng khủng khiếp do kích thước bước thô và phản ứng logarit của tai. Từ bộ nhớ, chất lượng CD là 14 bit.
Transitor

1
@transistor trong khi nó không đủ điều kiện có độ trung thực cao, âm thanh 8 bit có thể nghe một cách đáng ngạc nhiên nếu được thực hiện đúng, đặc biệt là nếu tốc độ mẫu nằm ngoài phạm vi âm thanh, có vẻ như trong trường hợp này (với một mẫu đủ cao tốc độ, bạn thậm chí có thể thoát khỏi đầu ra 1 bit ...). Một mối quan tâm nghiêm trọng hơn là nếu các thanh ghi thay đổi được đề xuất là "bộ đệm kép" hoặc nếu các bit sẽ xuất hiện ngay lập tức trên các đầu ra sai trong khi được chuyển qua, một cái gì đó có thể gây ra biến dạng đáng kể.
Chris Stratton

4
Theo nhận xét của bạn về 24 bit trên mỗi kênh - hãy quên nó đi, quên nó ngay bây giờ và đừng lãng phí thêm thời gian để nghĩ về nó. Tôi sẽ không đi vào toán học cho điều đó trong bình luận này, nhưng tôi chắc chắn rằng nó sẽ xuất hiện ở đây một thời gian trước đây. Nếu không, đây là những gì wikipedia nói: en.wikipedia.org/wiki/ Kẻ
ống

2
Sử dụng điện trở 1%, bạn có thể nhận được độ phân giải 6 bit chính xác (LSB = MSB / 64, do đó, lỗi 1% <giá trị LSB / MSB), nhưng ở trên bạn cần giảm một nửa lỗi có thể có trên mỗi điện trở bit (0,25% cho 8 bit) cũng giữ cho lỗi điện trở không thể áp đảo (các) bit đáng kể nhất của bạn.
Robherc KV5ROB

2
223

Câu trả lời:


7
  • Vâng, đây chính xác là nơi thích hợp để đặt câu hỏi của bạn.
  • Có, địa hình R-2R là cách đơn giản nhất để thiết kế (và tôi nghĩ là tốt nhất) để tạo ra một bộ xử lý âm thanh homebrew (wkthout sử dụng PWM).
  • Đối với thử thách bản thân, có vẻ như tôi có thể giống như bạn khổ dâm như tôi (kudos vì có can đảm!). Đây là một dự án thực sự liên quan cho người mới bắt đầu.
  • Các chuỗi điện trở R-2R của bạn (và có thể nói là các ampe kế đính kèm) thực sự là các bộ xử lý 8 bit của bạn

Đây là những gì tôi nghĩ:
Sửa chữa thang

Thật không may, trang wikipedia trên các thang bậc thang R-2R không chính xác khi nói rằng thang R-2R hoạt động như một bộ chia hiện tại trong ứng dụng này. Mặc dù thang R-2R có thể được sử dụng như một bộ chia dòng điện, nhưng nó thực sự hoạt động như một bộ chia điện áp ở đây. Đây là một phân tích chi tiết.

Chỉ xem xét LSB của thang:

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab

Bất kể vị trí của công tắc, điện trở Thevenin của bộ chia điện áp đơn giản này chỉ là R. Giá trị của nguồn điện áp Thevenin là 0V hoặc 1/2 × Vref.

Bây giờ, hãy xem xét những gì xảy ra khi bạn thêm giai đoạn tiếp theo của thang R-2R:

sơ đồ

mô phỏng mạch này

Bạn có thể thấy rằng đây là cùng một loại bộ chia điện áp mà chúng ta đã có trong trường hợp đầu tiên, ngoại trừ số lượng kết hợp điện áp đã tăng lên. Tuy nhiên, điện trở Thevenin của mạch này vẫn chỉ là R, và nguồn điện áp Thevenin hiện là 0/4, 1/4, 2/4 hoặc 3/4 × Vref.

Bằng cách cảm ứng, bạn có thể thấy rằng bạn có thể thêm bất kỳ số lượng giai đoạn nào vào thang và hiệu quả duy nhất là số lượng lựa chọn cho giá trị nguồn điện áp Thevenin được nhân với 2 cho mỗi giai đoạn. Điện trở nguồn vẫn giống hệt nhau cho bất kỳ số giai đoạn nào.

Nếu trở kháng tải là vô hạn, điện áp đầu ra của thang sẽ khớp chính xác với điện áp Thevenin. Nhưng nếu tải có một số giá trị hữu hạn của điện trở, tác dụng duy nhất sẽ là tạo ra một bộ chia điện áp với điện trở nguồn Thevenin, điều chỉnh điện áp đầu ra theo một tỷ lệ cố định, nhưng không có ảnh hưởng nào khác đến độ chính xác hoặc tuyến tính cơ bản của DAC.


Lưu ý rằng trong mạch ban đầu của Rogier (câu hỏi trong câu hỏi), các opamp có cấu hình đảo ngược, điều đó có nghĩa là đầu ra của thang R-2R được gắn trực tiếp vào mặt đất ảo. Điều này có nghĩa là giá trị đầu ra thực sự là dòng điện chạy qua Rth (chỉ là R) và dòng điện này cũng chảy qua điện trở phản hồi của opamp. Điện áp đầu ra từ opamp là bất kỳ điện áp nào được yêu cầu để làm cho hai dòng điện đó bằng nhau, và hoạt động thành -Rfb / R × Vth. Vì anh ta sử dụng điện trở phản hồi là 2R, đầu ra cuối cùng là -2 × Vth.


Dường như có một sự nhầm lẫn về việc thang R-2R đang được sử dụng làm bộ chia điện áp hay bộ chia dòng điện, vì vậy đây là một minh họa về cách thức hoạt động của cái sau, để hiển thị sự khác biệt chính giữa mạch này và mạch OP.

sơ đồ

mô phỏng mạch này

Lưu ý rằng dòng điện chạy qua điện trở 2R có trọng số nhị phân. Điều này hoạt động bởi vì điện trở hiệu quả nhìn về phía bên phải từ bất kỳ mối nối ba cũng chính xác là 2R. Do đó, dòng điện chạy từ bên trái luôn phân chia đồng đều giữa nhánh xuống và nhánh phải.

Lưu ý rằng một giả định quan trọng ở đây là tất cả các chân được gắn với cùng một điện áp (không, trong trường hợp này). Cũng rất thú vị khi lưu ý rằng các điện áp tại các nút giao nhau cũng có trọng số nhị phân.

Điều này có thể được sử dụng để xây dựng một bộ xử lý đầu ra hiện tại như sau:

sơ đồ

mô phỏng mạch này

Iout¯Iout


Thành thật mà nói, tôi vẫn không thực sự biết opamp làm gì và tại sao tôi lại cần nó ở đây. Những gì nó làm (theo phần mềm mô phỏng) đang làm cho tín hiệu tích cực phát ra từ thang R-2R âm với bội số của hai: ~ 5V in, -9,96V. Tại sao điều đó là cần thiết?
Rogier Reerink

1
Op Amps phóng đại sự khác biệt giữa 2 điện áp đầu vào. Vì vậy, phần mềm nói rằng bạn có MSB được gắn vào đầu vào đảo ngược (trừ dấu hiệu pin) của op amp, khiến đầu ra thay đổi ngược lại với đầu vào. Tỷ lệ điện áp tín hiệu đầu ra so với điện áp đầu vào được điều khiển bởi điện trở phản hồi (bạn đã sử dụng 10K) từ đầu ra op amp đến đầu vào đảo ngược op amp; điện trở càng cao, bạn càng nhận được nhiều hơn (rút ngắn điện trở đó, sau đó di chuyển MSB kết nối với op amp + đầu vào & LSB kết nối với mặt đất nên khắc phục điều này.
Robherc KV5ROB

Không hẳn vậy. Trong sơ đồ của OP, các đầu vào không đảo của opamp được nối đất. Tất cả những gì bạn đang làm là chuyển sang cấu hình theo dõi điện áp. Đừng quên bao gồm một điện trở 5k trong đường dẫn phản hồi của từng cái để cân bằng các độ lệch hiện tại. Ngoài ra, điện trở đáy trong mỗi thang R-2R của bạn cần phải là 10K, không phải 5K. OP cũng có quyền này.
Dave Tweed

Robherc, 1. tôi sẽ bỏ các tụ điện ghép. 2. nếu bạn giữ với mạch theo dõi điện áp không đảo ngược mà bạn có, thì bạn cần thêm một điện trở 10K từ đầu cực + của op-amps xuống đất. và điện trở 5K ở phía dưới phải là 10 K. hãy tưởng tượng sự chồng chất và tất cả các bit TẮT (hoặc mặt đất). khi bạn ngồi ở bất kỳ nút nào trong số đó, nó phải là 10K lực cản xuống đất theo cả 3 hướng.
robert bristow-johnson

Sơ đồ cập nhật với nối đất chính xác. @ robertbristow-johnson tại sao bạn lại loại bỏ các tụ điện chặn dc và tập trung đầu ra của bạn để bảo vệ các tranducers trong một mạch âm thanh?
Robherc KV5ROB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.