Áudio estéreo de 8 bits R-2R DAC, esta é a maneira correta de fazer isso?


8

Eu sou novo em engenharia elétrica e o primeiro projeto que gostaria de fazer é criar um audioconversor digital para analógico. Eu descobri que uma boa maneira de fazer isso é usar uma estrutura R-2R para a conversão.

Eu gostaria de me desafiar e começar do zero com a parte digital do circuito, além do fato de não encontrar realmente nenhuma solução na Web para ajudar na construção. Eu tenho um programa de simulação de circuitos e comecei a projetar, enquanto pesquisava na web todos os tipos diferentes de eletrônicos que você poderia usar para isso.

Agora, acho que posso estar em algum lugar próximo ao entendimento do princípio de um CAD, mas seria útil se alguém experiente pudesse me ajudar a verificar se eu realmente o entendi. Este é o lugar certo para pedir isso?

Nesse caso, aqui está o circuito que eu projetei: Áudio estéreo de 8 bits R-2R DAC

Eu usei um registrador de deslocamento com trava de saída para cada canal e vinculei o Q7S de um para o outro para alimentar os dados. É certo que os arquivos de áudio alternem os canais esquerdo e direito, ou vice-versa, em blocos? por exemplo, em um arquivo de 8 bits: 0010 0111 para a esquerda após 0010 0110 para a direita?

Os registros de turno que usei aqui são 74HC595s. Quando a troca de bits, os pinos não estarão (momentaneamente) ativos. Quando a trava [STCP pin] é acionada, os bits são transferidos do registro de deslocamento para o registro de armazenamento, onde eles emitem diretamente seu valor para os pinos correspondentes e permanecem ativos até que os próximos 16 bits sejam permitidos.

Depois, há o cristal, para o qual eu usei um sinal de onda quadrada para imitar um com a freqüência de oscilação correta: 24,576MHz. Alimenta o contador no qual a frequência é dividida para gerar as frequências que meu DAC precisa. Nesse caso, a frequência da amostra deve ser 192.000kHz e, portanto, a frequência na qual os dados são alterados deve ser de 3.02MHz (192.000 x 16 bits). A velocidade do clock de 192.000kHz é usada para acionar o STCP.

A próxima coisa que quero fazer é descobrir como carregar dados de uma fonte (Raspberry, por exemplo) por meio do I2C, talvez, em um buffer no DAC e, a partir daí, registrar os bits no circuito que você vê aqui.

Se você pensa que eu sou ou não estou no caminho certo, seria muito útil que eu me informasse.

Obrigado! Rogier

A propósito, esqueci de mencionar que o DAC que eu gostaria de construir é de pelo menos 24 bits por canal em 96kHZ. Isso ocupa muito espaço nessa ameaça e não deve ser difícil adicioná-las posteriormente. É o mesmo princípio.


2
Projeto bom e difícil. Eu não passei por todas as suas contas, mas um áudio de 8 bits não vai parecer muito bom. Você precisará enviesar para fornecer metade, o que deixa você com 7 bits de cada lado. Você pode se safar disso em fala compactada, onde a faixa dinâmica é severamente limitada, mas passagens silenciosas de fala ou música terão uma distorção terrível devido ao tamanho aproximado da etapa e à resposta logarítmica do ouvido. Na memória, a qualidade do CD é de 14 bits.
Transistor

1
O transistor @ enquanto ele não se qualificar possui alta fidelidade, o áudio de 8 bits pode ser surpreendentemente ouvido se for feito da maneira correta, especialmente se a taxa de amostragem estiver fora da faixa audível, o que parece estar neste caso (com uma amostra suficientemente alta) taxa, você pode até se safar com a saída de 1 bit ...). Uma preocupação mais séria é se os registros de turno propostos são "com buffer duplo" ou se os bits aparecem momentaneamente nas saídas erradas durante a troca, algo que pode causar distorção substancial.
Chris Stratton

4
Quanto ao seu comentário sobre 24 bits por canal - esqueça, esqueça agora e não perca mais tempo pensando nisso. Não vou entrar na matemática para isso neste comentário, mas tenho certeza de que chegou aqui algum tempo antes. Se não, aqui está o que a wikipedia tem a dizer: en.wikipedia.org/wiki/…
pipe

2
Usando resistores de 1%, é possível obter uma resolução precisa de 6 bits (LSB = MSB / 64, portanto 1% de erro <valor LSB / MSB), mas acima disso, você deve reduzir pela metade o possível erro por resistor para cada adicional O bit (0,25% para 8 bits) também impede que o erro do resistor possa sobrecarregar os bits menos significativos.
Robherc KV5ROB 31/01

2
2-23é um número pequeno e terrível. como 1 mais de 8 milhões. você não poderá criar um DAC, com uma velocidade de conversão decente, que tenha uma saída tão precisa quanto essa especificação. o número honesto de bits é o Dynamic Range em dB (que é a razão S / N em dB adicionada ao número de dB de headroom) dividido por 6,02 dB / bit. isso lhe dará o número de bits honestos. o melhor que já vi na indústria ainda é de cerca de 20 bits (ou faixa dinâmica de cerca de 120 dB).
22675 Robert Robinson-Johnson

Respostas:


7
  • Sim, este é exatamente o lugar certo para fazer sua pergunta.
  • Sim, a topografia R-2R é a maneira mais simples de projetar (e acho melhor) para fazer um DAC de homebrew (sem usar PWM).
  • Quanto a desafiar a si mesmo, parece-me que você pode ser tão masoquista quanto eu (parabéns por ter coragem!). Este é um projeto realmente envolvido para um iniciante.
  • Suas cordas de resistores R-2R (e, sem dúvida, os amplificadores operacionais conectados) são realmente os seus DACs de 8 bits

Aqui está o que estou pensando:
Escada corrigida

Infelizmente, a página da wikipedia nos DACs da escada R-2R está incorreta quando diz que a escada R-2R funciona como um divisor atual neste aplicativo. Embora uma escada R-2R possa ser usada como um divisor de corrente, ela realmente funciona como um divisor de tensão aqui. Aqui está uma análise detalhada.

Considere apenas o LSB da escada por si só:

esquemático

simular este circuito - esquemático criado usando o CircuitLab

Independentemente da posição do comutador, a resistência Thevenin deste divisor de tensão simples é apenas R. O valor da fonte de tensão Thevenin é 0V ou 1/2 × Vref.

Agora, considere o que acontece quando você adiciona o próximo estágio da escada R-2R:

esquemático

simule este circuito

Você pode ver que esse é o mesmo tipo de divisor de tensão que tivemos no primeiro caso, exceto que o número de combinações de tensão aumentou. No entanto, a resistência Thevenin deste circuito ainda é apenas R, e a fonte de tensão Thevenin agora é 0/4, 1/4, 2/4 ou 3/4 × Vref.

Por indução, você pode ver que é possível adicionar qualquer número de estágios à escada, e o único efeito é que o número de opções para o valor da fonte de tensão de Thevenin é multiplicado por 2 para cada estágio. A resistência da fonte permanece exatamente a mesma para qualquer número de estágios.

Se a impedância de carga for infinita, a tensão de saída da escada corresponderá exatamente à tensão de Thevenin. Mas se a carga tiver algum valor finito de resistência, o único efeito será criar um divisor de tensão com a resistência da fonte de Thevenin, escalando a tensão de saída em uma proporção fixa, mas sem afetar a precisão ou linearidade básica do DAC.


Observe que no circuito original de Rogier (o da questão), os opamps estão em uma configuração inversa, o que significa que a saída da escada R-2R está ligada diretamente a um terreno virtual. Isso significa que o valor de saída é realmente a corrente que flui através de Rth (que é apenas R), e essa corrente também flui através do resistor de feedback do opamp. A tensão de saída do opamp é qualquer voltagem necessária para tornar essas duas correntes iguais e funciona em -Rfb / R × Vth. Como ele usa um resistor de realimentação de 2R, a saída acaba sendo -2 × Vth.


Parece haver alguma confusão sobre se a escada R-2R está sendo usada como um divisor de tensão ou um divisor de corrente, então aqui está uma ilustração de como o último pode funcionar, a fim de mostrar as principais diferenças entre este e o circuito do OP.

esquemático

simule este circuito

Observe que as correntes que fluem pelos resistores 2R são binárias. Isso funciona porque a resistência efetiva olhando para a direita a partir de qualquer uma das junções triplas também é exatamente 2R. Portanto, a corrente que flui da esquerda sempre se divide igualmente entre o ramo inferior e o ramo direito.

Observe que uma das principais premissas aqui é que todas as pernas estão ligadas à mesma tensão (zero, neste caso). Também é interessante notar que as tensões nos nós de junção também são ponderadas em binário.

Isso pode ser usado para criar um DAC de saída atual da seguinte maneira:

esquemático

simule este circuito

As correntes nos resistores deste circuito são exatamente as mesmas do diagrama anterior, porque, independentemente da posição em que cada uma das chaves está, o resistor correspondente é conectado a um terra real no Iout¯ barramento ou em um campo virtual no Ioutônibus. As correntes nos dois ônibus sempre somam Iref. Um opamp pode converter a corrente de saída em uma voltagem, e a faixa de voltagem é simplesmente -Iref × R7.


Para ser sincero, ainda não sei o que faz um opamp e por que precisaria dele aqui. O que ele faz (de acordo com o software de simulação) é tornar negativo o sinal positivo que sai da escada R-2R com um múltiplo de dois: ~ 5V de entrada, -9,96V de saída. Por que isso seria necessário?
Rogier Reerink

1
Os amplificadores de operação ampliam a diferença entre 2 voltagens de entrada. Então o software está dizendo que o MSB está conectado à entrada inversora (pino de sinal de menos) do amplificador operacional, fazendo com que a saída varie como o oposto da entrada. A proporção entre a tensão do sinal de saída e a tensão de entrada é controlada pelo resistor de feedback (você usou 10K) da saída do amplificador operacional para a entrada inversora do amplificador operacional; quanto maior a resistência, maior ganho que se obtém (curto-circuito através desse resistor, em seguida, movendo o MSB conectar a op amp + entrada e LSB conectar a terra deve corrigir isso.
Robherc KV5ROB

Na verdade não. No diagrama do OP, as entradas não inversoras dos opamps estão aterradas. Tudo o que você está fazendo é mudar para uma configuração de seguidor de tensão. Não se esqueça de incluir um resistor de 5k no caminho de feedback de cada um para equilibrar as compensações da corrente de polarização. Além disso, o resistor mais baixo em cada uma das suas escadas R-2R precisa ser 10K, não 5K. O OP também tinha esse direito.
Dave Tweed

Robherc, 1. Eu abandonaria os capacitores de acoplamento. 2. Se você mantiver o circuito seguidor de tensão não inversor que possui, precisará adicionar um resistor de 10K do terminal + dos amplificadores operacionais ao terra. e o resistor de 5K na parte inferior deve ser 10 K. imagine superposição e todos os bits DESLIGADOS (ou terra). quando você estiver sentado em um desses nós, deve haver 10K de resistência ao terra nas três direções.
22416 Robert Bristow-Johnson

Diagrama atualizado com o aterramento corrigido. @ robertbristow-johnson Por que você se livra dos capacitores que bloqueiam a CC e centraliza sua saída para proteger os trandutores em um circuito de áudio?
Robherc KV5ROB 31/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.