quinta-feira, 13 de março de 2014

Estudos preliminares do ScanConverter para o MSX - Parte 2

Continuando com as considerações do primeiro artigo (Estudos preliminares do ScanConverter para o MSX) vamos começar a analisar as possibilidades de digitalizar o sinal de vídeo em 15KHz que sai do MSX.
Primeiro, vamos conversar um pouco sobre timings e entender a quantidade de samples por segundo que precisaremos que nosso circuito suporte.

Usando um pouco de documentação disponível na internet, segue uma referencia para não ficar uma informação solta, encontramos no "Understanding Video Timing with Digital Video Encoders" da Intersil a seguinte informação sobre tempo de vídeo NTSC.  Para quem quiser fazer o download do documento segue o link: http://www.intersil.com/content/dam/Intersil/documents/tb36/tb368.pdf


Podemos concluir que os tempos medidos anteriormente batem com a documentação disponível na internet. Basicamente:

Parâmetro Medido Esperado Tolerância
Freqüencia Horizontal 15.87kHz 15.72kHz
Tempo Total da Linha 63uS 63.5uS
Tempo Ativo da Linha 52.4uS 52.6uS +/- 0.2uS
Tempo Branco da Linha 10.8uS 10.9uS +/- 0.2uS

Analisando a tabela acima e tendo como referência as medições e comparando com o primeiro destaque na tabela do documento acima, podemos constatar que os tempos batem, portanto podemos considerar que o vídeo RGB do MSX tem a temporização de vídeo NTSC, fato este que alguns Scan Converters reconhecem o sinal como NTSC (Ex: Sony DSC 1024 HD).

Verificando na sequencia o segundo destaque do documento da Intersil verificamos que durante o tempo ativo de vídeo, em uma linha, temos 720 samples, de acordo com o padrão NTSC. Na essência não precisamos digitalizar os 720 samples e sim digitalizar somente uma quantidade de samples suficientes para digitalizar a resolução horizontal do MSX. Voltaremos a falar disso posteriormente.

Vamos calcular agora a quantidade de Samples por frame de vídeo considerando 525 linhas.

Samples por linha = 720
Samples por frame = 720 x 525 = 378000
Frames por segundo = 60
Samples por segundo = 378000 x 60 = 22680000
Freqüência de Sampling = 22.680 MHz
Periodo de Sampling de +/- 44.0917nS

Com isso já podemos começar a olhar para nosso hardware de entrada/digitalização.

Basicamente precisamos de um ADC que suporte os 22.680 MHz ou pelo menos 22.680 msps.

Existem ADCs prontos da Texas Instruments e da Analog Devices para este tipo de tarefa, no entanto não temos fácil acesso e o preço unitário destes ADCs tornam o projeto proibitivo. Considerando também que teremos de usar mais de uma unidade já que temos 3 canais para digitalizar (R,G e B), aceitei a tarefa de montar nosso próprio ADC, nos moldes antigos de instrumentação digital.

Após olhar muitos esquemas de equipamentos como HP/Agilent, Tektronix, Lecroy, Fluke/Philips, deu pra perceber que nem sempre eles utilizaram os CIs customizados que usam hoje, e digamos que faziam a digitalização na raça!

Aí vem a seguinte questão:

- Sou um engenheiro ou um saco de batatas?

E aceitei o desafio, e comecei a estudar.

Primeiramente passei pela opção de usar um Amplificador Operacional de Alta Velocidade para poder digitalizar o sinal. Basicamente fiz alguns testes com o que tinha em mãos, mas o Slew Rate dos AmpOps mais comuns distorciam demais o sinal. Em simulação consegui até ter um resultado satisfatório com o LM318, no entanto gostaria de pensar fora da caixa. Foi quando veio a idéia de utilizar transitores no lugar de Amplificadores Operacionais.

Inicialmente pensei em utilizar algum transistor de RF, pela alta-frequência de resposta, e percebi que não seria necessário, já que transistores de uso geral chegam fácil na frequência que precisamos, que é algo perto de 30MHz a grosso modo.

Foi então que elegi o BC817. Ele tem nível de sinal satisfatório para a aplicação, lida bem com sinais de baixa amplitude, e se conseguir polarizar o mesmo, já que não vamos precisar de um grande fator de ganho, seria possível obter a resposta em alta-frequência. Recentemente eu utilizei o mesmo para um oscilador de RF perto de 44MHz sem nenhum problema e com uma estabilidade incrível, considerando que é um transistor de uso geral! E o melhor, resolve nosso problema de preço de produção, tornando financeiramente viável a confecção do nosso tão sonhado Scan Converter.

Inicialmente deveria fazer um teste para verificar se o transistor conseguiria acompanhar um sinal de entrada sem problemas. Ou seja, nada de distorções consideráveis ... visto que histerese é um fator complicante quando tratamos sinais analógicos em alta-frequência. Como é o caso do sinal de vídeo.

Para os leigos em eletrônica, histerese é a tendência de um material ou sistema de conservar suas propriedades na ausência de um estímulo que as gerou (O que é Histerese?). Vejam isso:


Uma família de curvas de histerese medida com uma densidade de fluxo modulada sinusoidalmente com frequência de 50 Hz e campo magnético variável de 0,3 T a 1,7 T.

B = Densidade de fluxo magnético
H = Campo magnético
BR = Remanescência
HC = Coercividade

Notem que no exemplo a histerese é descrita como um fenômeno magnético, mas este por sua vez é intrínseco aos materiais que utilizamos e que estão dentro de transistores, CIs, e etc. Onde não somente trabalhamos com silício e outros materiais.
Em outras palavras podemos dizer que o material do qual é feito o transistor, leva um certo tempo para responder aos estímulos que são submetidos. Falam que a eletricidade funciona na velocidade da luz, e a verdade é outra. Quanto maior a frequência, mais próximo do limite de histerese (tempo de resposta) do material chegamos, ele tem de ser capaz de responder de forma o mais linear possível dentro do limite imposto pela aplicação, ou entre um pulso e outro do estímulo aplicado, no qual esperamos uma resposta. Esta resposta leva um tempo para acontecer, e este tempo chamamos de histerese, numa comparação retroativa.

Agora que entendemos o que é histerese também podemos entender o porquê de existirem pastilhas de semicondutores de várias velocidades, como por exemplo os famosos TTLs de série LS, HC, HCT, dentre outros. O que muda entre um e outro é a composição do material que é fabricado os transistores que compõem a pastilha, onde existem materiais que respondem mais rápido e portanto proporcionam a possibilidade de usa-los em circuitos cada vez mais rápidos.

Outro detalhe é que materiais quando submetidos a uma frequência próxima de seu limite de operação de histerese tem a tendencia a aumentar sua resistência pois passa a não ter mais oscilação entre um pulso e outro do estímulo, causando aquecimento e por conseguinte uma avalanche na qual a temperatura irá aumentar e por sua vez o material quando aquecido muda sua característica de histerese para maior, entrando nesse ciclo até que o mesmo passe a não responder mais, reconhecendo o sinal AC na entrada como praticamente DC, visto que suas características de histerese foram mudadas por conta da temperatura, o que na maioria dos casos causa a queima do transistor, geralmente abrindo seus contatos. E como internamente nos CIs, Microprocessadores e Microcontroladores temos transistores, conseguimos entender a queima dos mesmos quando submetidos a frequências acima das que não foram projetadas e entendemos aqui também o porquê do problema de resfriamento por exemplo nos overclocks de microprocessadores. O resfriamento é uma tentativa de manter as junções do material que compõem os transistores internos do CI / CPU / MCU entrem em uma avalanche térmica.

Mas o que tudo isso tem a ver com digitalizar o sinal de vídeo do MSX?

A resposta é: TUDO!

Precisamos de um transistor cujo material suporte a frequência de entrada do sinal de vídeo que é de aproximadamente 23MHz para NTSC, sem sobreaquecer e mantenha uma linha de resposta o mais rápida possível, ou seja baixa histerese para manter a característica do sinal original em sua digitalização.

Como vamos trabalhar com o BC817, precisamos fazer com que a polarização do mesmo permita que ele exerça sua função de resposta do sinal dentro dos parâmetros de histerese X frequência de forma a conservarmos a qualidade do sinal e manter a temperatura do circuito integrado dentro dos limites de operação do mesmo.

Para isso vamos polarizar o seguinte circuito:


Primeiro passo é calcular o ponto de operação do sistema, encontrando a tensão média que está marcada como 1 no circuito. O valor buscado por nós é o ponto de operação médio para excitar a base do transistor. Esse ponto para garantirmos linearidade ao longo da amplificação deve ser de 1/2 VBE, por sorte aamplitude do sinal é de 1Vpp, portanto não precisaremos atenuar o mesmo, somente centralizar o sinal em 1/2 VBE , que no nosso caso do BC817 pode ser definido conforme o Datasheet da NXP  onde o valor de VBE é de 1.2V. Em outras palavras, precisamos centralizar o sinal de 1 Vpp em 0.6V = 600mV. Usaremos um simples divisor de tensão, conforme cálculo a seguir.


Então temos para um ponto inicial de operação considerando R9 = 82K, R10 = 11K e Vin = 5V:

Vout = ( 11K / ( 82K + 11K ) ) * 5V

Vout = 0.591V = 591mV 

Com isso deixamos o ponto de operação do sistema o mais próximo possível de 600mV considerando valores comerciais para os resistores usados. Podemos agora afirmar que o ponto de operação em 1 é de 591mV nos cálculos.

Vamos chamar o ponto 1 no esquema do circuito de TP1, o 2 de TP2 e assim por diante.

O VBE do BC817 é de 1.2V, valor positivo pois é transistor NPN, então temos:

VBE = +1.2V

V= TP1 = Vout = 591mV

Por definição VE = VB = 1/2 VBE  temos então TP3 = VE. Portanto:

VE = TP3 = 591mV = V= TP1

Considerando uma corrente de coletor de 10mA, temos:

R11 = VE / 10x10-3
R11 = 0.591 / 10x10-3
R11 = 59.1 Ohms = 62 Ohms*
*considerando valor comercial mais próximo.

Como definimos a corrente de coletor em 10mA e conhecemos o Vcc = 5V que é a tensão de alimentação do sistema, desejamos que o sinal amplificado chegue próximo a este valor. Com isso podemos calcular o valor de R8:

R8 = Vcc / 10x10-3
R8 = 5 / 10x10-3
R8 = 500 = 470 Ohms*
*considerando valor comercial mais próximo.

Com isso temos o ganho final do sistema e a sua amplitude máxima, onde:

Ganho = R8 / R11 = 470 / 68 = 6.91
Amplitude Máxima = TP* Ganho = 0.591 * 6.91 = 4.08V

Fazendo um pequeno ajuste para melhorarmos a Amplitude Máxima de forma a chegar o mais próximo possível de Vcc com resistores de valor comercial, calculamos a tensão final usando o próximo valor comercial disponível para R8, que é de 560 Ohms. Com isso temos:

Ganho = R8 / R11 = 560 / 68 = 8.23
Amplitude Máxima = TP* Ganho = 0.591 * 8.23 = 4.86V

Somente para ilustrar, se usássemos um valor ainda maior, iríamos saturar a saída em TP2 visto que a amplitude máxima do sinal nunca ultrapassará Vcc. Com isso se usássemos 620 Ohms para R8, nossa tensão em TP2 seria de 5.38V. Todo o sinal exedente de 5V seria achatado no topo do sinal em 5V, perdendo a característica do sinal por excesso de amplificação. Chamamos isso de saturação do sinal.

Somente para acompanharmos a resposta de sinal, vejam as capturas de diferentes tipos de sinal na imagem seguinte, já com os valores no circuito final. E com uma prévia do separador de níveis, mais uma vez um divisor de tensão:


Com o transistor devidamente polarizado, podemos medir os tempos de resposta.
Vamos começar com o Edge Falling, que na minha medição deu 131MHz:


E de forma análoga, a seguir a medição do Edge Rising que foi de 57.4 Mhz:


Em outras palavras, temos uma resolução de sinal média de aproximadamente 94.2MHz ou 12.495nS.
Considerando que cada pixel dos 720 por linha que precisamos digitalizar tem um tempo de estabilização (Rise ou Fall) de aproximadamente 74nS (63.5uS / 858 Samples), podemos afirmar que teremos possibilidade de digitalizar tranquilamente o sinal amplificado e a freqüencia necessária.

Bom. Por hoje é só. No próxima parte do artigo vamos entender um pouco sobre transferência de cores e curvas de correção onde será possível já separar os bits do sinal de cor e efetivamente gerar o byte digitalizado para carregar na memória do buffer.