Có thể kết hợp hai bộ xử lý 8 bit 8 bit với nhau để tạo ra một bộ xử lý 16 bit không, một byte của từ 16 bit sẽ được gửi đến từng bộ xử lý


16

Đối với hai DAC, một được gửi D0-D7 và một được gửi D8-D15, với nguồn cung cấp là 5V, nếu 5V được thêm vào đầu ra của DAC thứ 2 và sau đó hai đầu ra của DAC được tổng hợp, sẽ tạo ra một DAC 16 bit được tạo thành từ hai bộ xử lý 8 bit.

Vấn đề duy nhất là nếu bộ xử lý thứ hai có đầu vào 0x00 thì việc bổ sung 5V cần phải được hủy bỏ mà tôi không biết phải làm thế nào. Việc tổng hợp có thể được thực hiện bằng cách tổng hợp bộ khuếch đại. Mạch chỉ cần hoạt động tối đa vài 10 kHz.

Có điều gì đó về cơ bản sai với ý tưởng này?


11
Không có gì sai về cơ bản với ý tưởng của bạn, nhưng bạn sẽ cần xử lý một thiết kế có độ phức tạp tương đối. Đầu tiên, đó không phải là vấn đề chỉ tóm tắt kết quả trong tín hiệu tương tự. Trước khi tính tổng, bạn sẽ cần khuếch đại MSB DAC theo hệ số x256 vì mỗi bit của MSB DAC tương đương với 256 bit của LSB DAC. Hơn bạn sẽ cần phải bù giá trị này trong vôn toàn bộ LSB DAC hơn mức bạn có thể thêm cả hai.
PDuarte

7
Chưa kể tiếng ồn, méo mó, khả năng cung cấp ...
PDuarte

4
Nếu nó dễ dàng như vậy, mọi người sẽ làm điều đó ... Về mặt lý thuyết, vâng, bạn có thể kết hợp hai bộ xử lý tín hiệu (bạn cần nhân hơn là bổ sung). Trên thực tế, bạn sẽ không nhận được bất cứ nơi nào gần 16 bit, hiệu suất khôn ngoan. Chỉ cần mua một bộ xử lý 16 bit.
uint128_t

2
Việc bù đắp là cần thiết nếu giá trị nhân 256x trở nên quá lớn. Giả sử các bộ xử lý 8 bit cung cấp cho 1 Volt toàn thang đo. Nhân số đó với 256 cho 256 V. Không thực tế lắm ;-). Sẽ dễ dàng hơn với một bộ DAC cung cấp dòng điện, sau đó bạn chỉ cần kết nối song song các đầu ra hiện tại (với điều kiện là có một tải sẽ giữ điện áp ở đúng giá trị, mặt đất ảo hoặc tương tự).
Bimpelrekkie

1
Điều gì sẽ xảy ra nếu thay vì chia tín hiệu thành 8 bit trên cùng và dưới cùng, bạn thực hiện nó dưới dạng xấp xỉ lũy tiến hai lần (như cách kết xuất JPG hoặc PNG lũy tiến), với DAC1 cung cấp (khoảng) các bit được đánh số chẵn và DAC2 chạy ở một nửa công suất với (một lần nữa, đại khái) các bit được đánh số lẻ. Toán học sẽ rất lộn xộn, nhưng tôi nghĩ bạn có thể nhận được 15 bit tín hiệu chính xác từ nó.
Foo Bar

Câu trả lời:


28

Điều đó là có thể, nhưng nó sẽ không hoạt động tốt.

Thứ nhất, có vấn đề về việc kết hợp hai đầu ra, với một tỷ lệ chính xác bằng 1/256 của đầu ra. (Cho dù bạn giảm một trong 1/256, khuếch đại cái kia bằng 256 hoặc một số sắp xếp khác, chẳng hạn * 16 và / 16, không thành vấn đề).

Tuy nhiên, vấn đề lớn là bộ xử lý 8 bit có khả năng chính xác với thứ gì đó tốt hơn 8 bit: nó có thể có thông số kỹ thuật "DNL" là 1/4 LSB và thông số "INL" là 1 / 2LSB. Đây là các thông số kỹ thuật phi tuyến "vi phân" và "tích phân" và là thước đo mức độ mỗi bước giữa các mã liền kề thực sự lớn đến mức nào. (DNL cung cấp bảo đảm giữa bất kỳ hai mã liền kề, INL giữa hai mã bất kỳ trên toàn bộ phạm vi của DAC).

Lý tưởng nhất, mỗi bước sẽ chính xác bằng 1/256 giá trị toàn thang đo; nhưng thông số kỹ thuật DNL 1 / 4LSB chỉ ra rằng các bước liền kề có thể khác với lý tưởng đó 25% - đây là hành vi thường được chấp nhận trong một bộ xử lý.

Vấn đề là lỗi 0,25 LSB trong MSB DAC của bạn góp phần gây ra lỗi 64 LSB (1/4 toàn bộ phạm vi) trong LSB DAC của bạn!

Nói cách khác, bộ DAC 16 bit của bạn có độ tuyến tính và độ méo của bộ xử lý 10 bit, đối với hầu hết các ứng dụng của bộ xử lý 16 bit, không thể chấp nhận được.

Bây giờ nếu bạn có thể tìm thấy một bộ xử lý 8 bit đảm bảo độ chính xác 16 bit (INL và DNL tốt hơn 1/256 LSB) thì hãy tiếp tục: tuy nhiên chúng không kinh tế để thực hiện, vì vậy cách duy nhất để có được một là bắt đầu với bộ giải mã 16 bit!

Một câu trả lời khác gợi ý "bù phần mềm" ... vạch ra các lỗi chính xác trong MSB DAC của bạn và bù cho chúng bằng cách thêm lỗi nghịch đảo vào LSB DAC: một điều mà các kỹ sư âm thanh đã suy nghĩ rất lâu trong những ngày mà các bộ xử lý 16 bit đắt tiền. ..

Nói tóm lại, nó có thể được chế tạo để hoạt động ở một mức độ nào đó, nhưng nếu DAC 8 bit bị trôi theo nhiệt độ hoặc tuổi tác (có lẽ nó không được thiết kế để cực kỳ ổn định), thì mức bù không còn đủ chính xác để có giá trị phức tạp và chi phí.


1
Quan điểm của bạn về sự trôi dạt là một điều tốt và sẽ làm cho phương pháp này trở nên không thực tế khi cố gắng lấy độ chính xác 20 bit bằng cách kết hợp hai bộ xử lý 8 bit. Tuy nhiên, tôi nghĩ rằng việc cố gắng để có được 13-14 bit có thể sử dụng từ 2x8 là khả thi.
supercat

19

Một bộ xử lý 8 bit có thể tạo ra giá trị khác nhau.28=256

Một bộ xử lý 16 bit có thể tạo ra giá trị khác nhau.216=65536

Lưu ý cách nhân số đó, nó không phải là một phép cộng (như sẽ xảy ra khi bạn tính tổng các đầu ra của hai bộ xử lý 8 bit).

Nếu tôi lấy hai bộ xử lý 8 bit và tính tổng các đầu ra của chúng, các giá trị có thể là gì?

Trả lời: 0, 1, 2, ..., 256, 257, 258, .... 511, 512 và chỉ có thế!

Một bộ xử lý 16 bit có thể làm được 0,1,2 ..., 65535, 65536 còn hơn thế nữa!

Về mặt lý thuyết là có thể nhưng sau đó bạn sẽ cần nhân đầu ra của một trong các bộ xử lý 8 bit với chính xác 256 và kết nối các bit LSB với các bộ 1x 1x và các bit MSB với bộ định tuyến 256x. Nhưng đừng ngạc nhiên nếu độ chính xác và tuyến tính bị ảnh hưởng!


Hmm tôi thấy. Tôi đã không nhận ra rằng ...
quantum231

1
Nếu một người sử dụng hệ số nhân nhỏ hơn 256 thì có thể bù cho tính phi tuyến tính trong phần mềm. Khác biệt phi tuyến tính sẽ có ít nhất tương đương với kích thước bước của DAC nhỏ hơn, nhưng một cách sử dụng hai DACs 8-bit một cách thực tế có thể quản lý một DAC 14-bit đơn điệu nếu người ta có thể xác định chính xác những yếu tố bồi thường áp dụng
supercat

2
Bạn cũng có thể nhân sản lượng của một DAC với 257/256 và tính tổng chúng, nếu bạn thích thử thách toán học trong việc tìm ra giá trị nào sẽ gửi tới bộ DAC nào để có tổng đầu ra nhất định. Mặt khác, các callenges là như nhau :)
hobbs

@hobbs: Tôi không nghĩ rằng nó hoạt động tốt. Nếu một DAC xuất 0 đến 65280 theo các bước 256 và các đầu ra khác từ 0 đến 65535 theo các bước của 257, thì người ta sẽ có thể đạt được tất cả các giá trị đầu ra trong khoảng từ 65280 đến 65535, nhưng sẽ không thể đạt được bất kỳ trong phạm vi nào trong khoảng từ ví dụ: 32739 và 32768. Điều đó thực sự không làm tốt hơn nhiều so với một bộ vi xử lý 8 bit đơn.
supercat

@supercat bạn nói đúng, tôi học toán. Tôi nghĩ rằng có một phiên bản hoạt động nếu bạn có thể tiêu cực, nhưng nó không hoạt động như tôi đã viết. Dù sao cũng chủ yếu là một nỗ lực hài hước.
hobbs

6

Kỹ thuật này hoàn toàn khả thi nếu điện áp toàn thang của bộ DAC "bên trong" lớn hơn kích thước bước của bộ DAC ngoài và người ta có một phương tiện chính xác (mặc dù không nhất thiết phải nhanh chóng) đo điện áp đầu ra được tạo bởi các mã đầu ra khác nhau và áp dụng điều chỉnh tuyến tính phù hợp trong phần mềm. Nếu điện áp toàn thang của bộ DAC bên trong có thể nhỏ hơn kích thước bước trong trường hợp xấu nhất giữa hai điện áp trên bộ DAC ngoài (lưu ý rằng các bước hiếm khi hoàn toàn đồng nhất) thì có thể có các điện áp không thể đạt được với bất kỳ kết hợp các giá trị bên trong và bên ngoài-DAC. Tuy nhiên, nếu người ta đảm bảo rằng có sự chồng chéo trong các phạm vi, thì việc sử dụng hiệu chỉnh tuyến tính phần mềm có thể cho kết quả tốt.

BTW, thiết kế chip Cypress PSOC cũ (tôi không biết về những cái mới hơn) mô phỏng một bộ xử lý chín bit sử dụng hai bộ xử lý sáu bit có tỷ lệ tương đối với nhau. Nó không sử dụng hiệu chỉnh tuyến tính phần mềm, nhưng nó chỉ cố gắng thêm ba bit chính xác vào một bộ xử lý 6 bit. Cố gắng thêm chính xác hơn 3-4 bit cho bất kỳ loại DAC nào mà không sử dụng phần mềm bù có thể không hoạt động tốt.


4

Cách đây 21 năm khi tôi còn là một sinh viên nghèo (và chỉ có thể mua được bộ xử lý 8 bit), tôi đã sử dụng kỹ thuật này để kết hợp hai bộ xử lý 8 bit thành một bộ xử lý có bit cao hơn, vì tôi biết rằng tôi sẽ không có được độ chính xác 16 bit, bởi vì của phi tuyến tích phân (INL)phi tuyến vi phân (DNL). DNL trên bộ xử lý byte có ý nghĩa nhất là kẻ giết người trong trường hợp này; nếu bạn có INL thì đầu ra bị méo nhưng vẫn trơn tru. DNL chỉ định kích thước từ bước này sang bước tiếp theo và nếu nó thay đổi đủ, thì bạn sẽ thấy sự không liên tục hoặc đảo ngược khi vượt qua ranh giới 8 bit: ví dụ 0x07ff <-> 0x0800, vì MSB DAC thay đổi từ 0x07 <-> 0x08, nó có thể thay đổi không phải bằng 256 số đếm lý tưởng của LSB DAC, mà bằng 384 số đếm hoặc 128 số đếm (± 1/2 của bit có ý nghĩa nhỏ nhất của chính nó). Một DAC tốt sẽ chỉ có 1/2 LSB DNL, ​​một DAC tầm thường sẽ có DNL kém hơn, mặc dù độ phân giải càng cao thì càng dễ tìm thấy 1/2 LSB DNL trong một DAC 8 bit nhưng không dễ dàng trong một bộ xử lý 16 bit.

Tôi không nhớ độ phân giải hiệu quả là gì trong trường hợp của tôi, có thể là 12 hoặc 13 bit, và tôi phải điều chỉnh mức tăng của giai đoạn 2 bằng tay với một chiết áp.


2

Tôi đã thấy điều này trong thực tế trên Máy dò UV HPLC để tăng phạm vi động. Một trong những bộ xử lý tín hiệu được bù đắp bởi số lượng cần thiết. Giả sử bộ xử lý đầu tiên từ 0 đến 10 V và bộ xử lý thứ 2 từ 10 đến 20 Volts.


1
Điều này sẽ không chỉ thêm một bit?
Szidor

Vâng, điều này chỉ thêm một chút. Tuy nhiên, về mặt âm thanh, nó có thể là một sự thỏa hiệp rất thành công. Một bộ xử lý "thẳng" có một vấn đề rất lớn ở một nửa tỷ lệ khi tất cả 16 bit chuyển đổi cùng một lúc - MSB bật, tất cả các bộ khác đều tắt và đó là lỗi sẽ xảy ra với một lỗi DNL lớn nhất. Trên một tín hiệu âm thanh, lỗi lớn nhất này cũng là ở nơi tồi tệ nhất có thể - đường giao nhau bằng 0 - làm hỏng ngay cả những âm thanh yên tĩnh nhất. Bây giờ nếu một bộ xử lý tín hiệu tích cực và bộ xử lý khác xử lý tín hiệu tiêu cực, bạn có thể tránh hoàn toàn vấn đề này. Chiếc PC-Burr PCM-63 huyền thoại đã khai thác điều này một cách độc đáo.
Brian Drumond


0

Tôi có một cách khác về nó ... Chỉ cần sử dụng một bộ vi xử lý 8 bit. Bạn đã đề cập rằng nó chỉ cần hoạt động lên đến vài 10 Hz, vì vậy bạn có thể sử dụng chỉ một bộ xử lý (có thể có thể hoạt động lên đến 100kHz) và sử dụng nó như một bộ điều biến. Ý tưởng cơ bản là xuất 256 chu kỳ của giá trị MSB cộng với cờ tràn / mang một bit từ bộ tích lũy 8 bit mà LSB được thêm vào mỗi chu kỳ. Bạn chỉ nhận được 254 là MSB tối đa do có thêm 'bit điều chế' từ LSB nhưng điều này không làm giảm phạm vi nhiều.

Ví dụ: Nếu bạn chạy chu kỳ ở 30kHz, 256 chu kỳ lặp lại ở 117Hz, do đó bạn có thể đặt bộ lọc thông thấp 50Hz trên đầu ra để có tín hiệu khá mượt và chính xác có thể hoạt động theo tốc độ bạn yêu cầu.

Độ chính xác của phương pháp này phụ thuộc khá nhiều vào kích thước của các bước bit, nhưng không nhiều hơn bất kỳ phương pháp nào khác. Tôi đã sử dụng nó để tạo điện áp tham chiếu trong quá khứ, và nó hoạt động tốt đáng ngạc nhiên.

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.