CSTroN - um monitor caseiro em uma matriz CSTN vintage com uma entrada VGA e uma placa de controle FPGA



E se o TFT nunca foi inventado? LCD de matriz CSTN

Entrada


Quando os monitores CRT prevaleceram, o seguinte argumento foi apresentado a seu favor: apesar de todas as melhorias, os monitores LCD nunca superam os monitores de tubo na qualidade da imagem. Eles, como antes, só encontrarão aplicação onde eficiência energética e pequena espessura são necessárias [1]. Décadas se passaram e agora sabemos se os defensores desse argumento estavam certos. Hoje, porém, é interessante observar os LCDs da época: eles são realmente de má qualidade? Como é olhar para a matriz da CSTN em 2019?



TFT esquerdo, CSTN direito, ambos os monitores dos anos noventa

LCD no século passado


Antes de mudar para o TFT, uma variedade de tecnologias de tela era usada em laptops. No início, eles usavam os mesmos monitores CRT que em computadores de mesa, apenas os menores. Por exemplo, em Compaq Portable (1983), IBM 5155 (1984) ou Commodore SX-64 (também 1984).



IBM 5155, autor: Soupmeister, licenciado: CC-BY-SA-2.0, daqui

Carregar esse PC com você em todos os lugares era difícil, uma coisa completamente diferente - um laptop com um TN-LCD (twist nemático), por exemplo, IBM 5140 (1986), Toshiba T1000 (1987). Esses monitores têm baixo contraste e ângulo de visão.



Toshiba T1100 com tela TN monocromática, autor: Johann H. Addicks, licença: GFDL, portanto , o link está quebrado, também no original

Alguns fabricantes experimentaram matrizes de descarga de gás, como Toshiba T3200 (1987) e IBM PS / 2 P70 (1991) viam a luz do dia. Eles proporcionavam alto contraste e várias gradações de brilho de luz vermelho-laranja, mas eram muito caros. Por fim, foram desenvolvidos STN-LCDs (supertwist nemmatic), como, por exemplo, no Electronics MC1504 e seu protótipo Toshiba T1100. O contraste foi muito melhor - de 1: 5 a 1:50, e várias gradações de brilho foram suficientes para aplicativos de negócios (o uso de um laptop na vida cotidiana ainda era muito caro). Mas e se o usuário quiser uma imagem colorida? Nesse caso, ele recebeu duas tecnologias: TFT e CSTN (cor nemática de super-torção de cores). O primeiro laptop com TFT - NEC PC9801NC - foi lançado em 1990, a qualidade da imagem naqueles anos foi acima de tudo um elogio, mas custou "um brinquedo desse tipo" é muito mais caro do que outros laptops caros. Bem, uma tela CSTN é apenas uma tela STN, na qual um filtro é sobreposto. Por um longo tempo, os laptops usaram matrizes dos dois tipos. E no metrô de Nova York, os monitores da CSTN ainda funcionam.



Um deles, fonte: Transit + PLUS

Cstron


O autor queria ver a exibição da CSTN. Como Para começar, basta comprar um laptop antigo e usá-lo. Acabou sendo um processador AMD 5x86-P133. Ou seja, a coisa mais dinâmica que você pode executar nos jogos DOS (oh, o MPEG1 puxará o QV - translator no programa). Obviamente, reproduzi-los é ótimo, mas eu queria ver como o YouTube, por exemplo, ou um jogo moderno se parece com essa tela - mas isso é impossível.

Ou?

Em geral, você precisa adicionar uma entrada VGA ou HDMI de alguma forma - e pode enviar um sinal de algo moderno. As telas TFT dos laptops são tão refeitas em monitores com bastante frequência. Basta comprar um quadro que corresponda à matriz - e pronto. E você pode criar seu próprio prefixo no FPGA, que converte um sinal VGA ou HDMI em um fluxo de dados de pixel.

Era uma vez, também foram produzidas placas para a conversão de matrizes CSTN em monitores VGA, mas isso não é mais encontrado. Mas você pode adaptar a placa de depuração do FPGA ML505 para isso.



O resultado final. É bastante incomum observar isso em uma tela CSTN: 16 GB de RAM.

Gerenciamento de matrizes


Vamos começar com o básico. Como qualquer exibição de matriz, a exibição CSTN possui linhas e colunas. Você já controlou uma matriz de LED de um microcontrolador? É o mesmo aqui, mas as tensões são variáveis. Você precisa aplicar certos sinais às linhas e colunas selecionadas e não selecionadas - e o pixel na interseção da linha e coluna selecionada mostrará o que você precisa. A forma dos sinais é muito complexa, o valor médio quadrático da tensão, a mudança de fase entre as tensões na linha e na coluna e o deslocamento ... E assim, pixel por pixel, uma imagem é formada.

Felizmente, os FPGAs não precisam gerar todos esses sinais, e mesmo em um número tão grande de linhas. Tudo isso é feito pelo módulo embutido na tela. Lá, o conversor de pulsos aumenta a tensão constante, passa pelo divisor e pelo repetidor, para obter a tensão de polarização. Os drivers de linha e coluna transformam essa tensão em uma variável da forma necessária. Tudo o que é necessário é enviar um fluxo de dados de estado de pixel ao módulo de exibição.

Em um LCD TFT com uma interface DPI (interface paralela digital), todos os dados sobre um pixel chegam ao mesmo tempo em um ciclo. Na linha de sincronização horizontal e de quadro, os pulsos são recebidos após cada linha e quadro, respectivamente. Os pixels são simplesmente transmitidos continuamente linha por linha, quadro a quadro. Se a transmissão de quadro completo demorar 1/60 s, a taxa de atualização será de 60 Hz. A largura do barramento de dados é igual à profundidade da cor em bits, geralmente 16 (5 bits para vermelho e azul, 6 para verde), 18 (6 bits para cada cor) ou 24 (8 bits para cada cor). LVDS é a mesma coisa, apenas bits não são transmitidos em paralelo, mas sequencialmente em pares diferenciais, mas no MIPI DSI eles também são combinados em pacotes. O barramento SPI / i80 permite transmitir vários comandos ao controlador e que, executando-os, gera sinais para DPI ou uma interface semelhante. O que, por sua vez, lembra um pouco o VGA, apenas os dados sobre o brilho de cada uma das cores são recebidos não em analógico, mas em formato digital. Existem conversores VGA para DPI e vice-versa. As placas são muito convenientes, permitindo que você receba um sinal VGA do Raspberry Pi, embora inicialmente este computador produza apenas HDMI e vídeo composto.

Sinais muito semelhantes aos fornecidos a uma matriz TFT com uma interface DPI devem ser fornecidos ao módulo de exibição da matriz CSTN. A folha de dados no SX21V001 [2] mostra como controlar uma tela CSTN com uma resolução de 640x480:



Isso mostra a transferência de todo o quadro. O sinal chega na linha CL1 após cada linha, no FLM após cada quadro. E há um barramento de dados de 16 linhas. Na verdade, ocorreu um erro nesta figura: durante a transmissão da primeira e segunda linhas, os dados Y1 e Y2, e não X1 e X2, mas Y140 e Y242, respectivamente, são recebidos nas linhas UD0-UD7. Aqui U e L são, respectivamente, superior e inferior, ou seja, a tela consiste em duas matrizes com uma resolução de 640x240, localizadas uma acima da outra. Aqui está, o misterioso "dual scan" de um antigo anúncio de laptop, do qual surge uma faixa horizontal em toda a tela. Para telas STN e CSTN, o contraste é inversamente proporcional ao número de linhas, portanto, essa separação permite aumentar. Mas essa não é a única maneira de diferirem na maneira como são controlados pelo TFT.



Não está claro por que o eixo horizontal foi chamado Y ... Mas, em qualquer caso, o CL2 aqui é uma linha para fornecer pulsos de clock que alternam pixels. Mas nos barramentos UD e LD em um ciclo, não são transmitidos dados sobre um pixel de vários bits, como no TFT, mas dados sobre vários pixels ao mesmo tempo, três bits cada. Um bit por cor, três bits por pixel - oito cores no total.



Mas como assim? É claro que os monitores CSTN têm poucas cores, por exemplo, 4096 ou 32768, mas não 8. Acontece que o PWM é aplicado aqui. Os LEDs são controlados dessa maneira, o que significa que os pixels do LCD são possíveis. Você precisa, por exemplo, de um brilho de 50% - ative o pixel em quadros pares e desative-o em quadros ímpares. Esse método é chamado FRC (controle de taxa de quadros), mas o PWM nesse contexto é chamado controle de brilho de pixel da mesma maneira, mas em dois ou mais quadros, mas um. O FRC implementa um dispositivo externo e o PWM implementa os chips do módulo de exibição, se houver suporte para esta função. O autor não sabe que as exibições CSTN com PWM, mas ele sugere que estas são matrizes do tipo HPA. De qualquer forma, como o PWM não está disponível, a profundidade de cor necessária pode ser obtida usando o FRC.



A cintilação será o preço disso, portanto taxas de quadros monstruosas (comparadas ao TFT) podem ser encontradas nos monitores CSTN. Por exemplo, este módulo inicialmente possuía 120 Hz e o autor fez um overclock para 240.

Como foi implementado


O desenvolvedor enfrentou várias dificuldades ao mesmo tempo:

- o sinal de entrada tem uma taxa de quadros de 60 Hz, deve ser duplicado ou até quadruplicado

- no sinal de entrada, o quadro não é dividido nas metades superior e inferior de 640x240 pixels cada, mas aqui é necessário dividir

- você também precisa implementar o FRC, caso contrário, a profundidade da cor será de 3 bits por pixel

Os dois primeiros pontos significam que é necessário um buffer de quadro, e não um simples, mas um de duas portas. Bem, a terceira tarefa é resolvida usando GLDP LUT (tabela de pesquisa de padrões de exibição em nível de escala de cinza) [3]. A tabela de pesquisa possui dois tipos de dados de entrada: a cor a ser exibida e o estado do contador de quadros. E um tipo de saída: os três bits que precisam ser submetidos aos subpixels de um determinado pixel em um determinado momento. Portanto, os seguintes nós serão necessários:



A primeira coisa a fazer é preencher a tela inteira com um pouco de cor. Nesse estágio, não é necessário saber onde está localizado o pixel; basta garantir que o módulo de exibição transmita os sinais de forma necessários para a matriz. O código para preencher o FPGA está aqui .



Agora tente trazer algo para fora e com brilho incompleto também. Procurando por tabelas de pesquisa FRC para minimizar a cintilação. O autor apresentou duas tabelas aplicadas aos pixels em um padrão quadriculado. Portanto, todos os dois pixels vizinhos piscam de forma assíncrona. O código está aqui .



Portanto, já “ensinamos” o quadro a exibir a imagem, a próxima coisa que será necessária é um buffer de quadro. Em 640x480 e 5 bits para cada uma das cores, seu volume será de aproximadamente 600 kilobytes. Não muito, mas muitos em FPGAs. Bem, a placa possui RAM como DDR2 e Xilinx MIG para controlá-la. Dois FIFOs são implementados, um para leitura e outro para escrita. O árbitro decide se a próxima troca de dados com DDR2 é de leitura ou gravação. Existem dois buffers, o registro vai para um, lendo do outro e, ao trocar de quadro, eles mudam de lugar. O código do árbitro está aqui .

Resta implementar a captura de vídeo. Em um dos projetos anteriores, o autor já possui um tempo de operação semelhante; após o refinamento, o código do conversor de VGA para DPI tornou-se assim .

E o que aconteceu?


Assista!


Este é o terceiro projeto FPGA para o autor, foi interessante trabalhar com o Xilinx MIG e DDR2, bem como com um transportador simples. Um FRC melhor com modulação delta sigma está planejado, bem como experimentos com painéis CSTN posteriores usando a tecnologia HPA (High Performance Addressing) da Sharp.

Obrigado pela atenção!

Fontes


1. Li, W. & Guo, Q. (2000). Tecnologia de aplicação de display de cristal líquido. Pequim: Imprensa da Indústria Elétrica.

2. HITACHI (1999). SX21V001-Z4 Especificações de aceitação do cliente.

3. Hsueh, Y. & Lee, J. (2008). Método de melhoria de imagem para o controlador de taxa de quadros do LCD. Simpósio Internacional IEEE de 2008 sobre Eletrônicos de Consumo. doi: 10.1109 / isce.2008.4559534

Source: https://habr.com/ru/post/pt444762/


All Articles