saida VGA

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

saida VGA

Mensagempor rcakto » 19 Set 2010 04:31

o que é preciso para um ARM trabalhar com saida de video para monitores?? componentes ou modulo interno??
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor Djalma Toledo Rodrigues » 19 Set 2010 10:22

Três Saidas Analógicas ( Através de DAC ) para imagem e cor

mais Sincronismo Vertical e Horizontal

mais o Comum
( o que é comum rsrs)

Os DAC de alta velocidade. Os Amplificadores de Video do Monitor atigem 100 MHz

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor rcakto » 19 Set 2010 11:48

em resumo nao entendi nada, entao so vou precisar ter 3 DAC de 10bits para funcionar?? mais nada???
entao pq todo mundo fala que é um porre trabalhar com video?? e o tal do buffer??
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor msamsoniuk » 19 Set 2010 13:21

rcakto escreveu:em resumo nao entendi nada, entao so vou precisar ter 3 DAC de 10bits para funcionar?? mais nada???
entao pq todo mundo fala que é um porre trabalhar com video?? e o tal do buffer??


depende do que vc vai querer.

pode ser simples o suficiente para fazer com um AVR e pode ser complexo o suficiente para precisar de uma FPGA. se vc quiser algo simples, entao um AVR resolve o seu problema:

http://www.atmel.com/dyn/resources/prod ... 3_3_04.pdf

mas eh uma resolucao pequena.

na verdade as especificacoes do VGA indicam que a resolucao minima seria de 640x480 pixels e isso jah requer um pixel clock de 25MHz. se vc estiver pensando em 256 cores, entao estamos falando em 25MB/s de bandwidth e um buffer de 307KB, o que tira praticamente todos os microcontroladores com memoria ram interna da jogada.

partindo entao do pressuposto que vc tem memoria externa, um canal de DMA atende bem estes requisitos minimos. porem pensar em resolucoes mais altas eh complicado, pq o video vai roubar bandwidth do processador. no caso de 1280x1024 em 85Hz, vc precisaria de 135MB/s de bandwidth para o video. mas vamos supor que 640x480 tah bom para vc hehehe

bom, o controlador de DMA pode transferir os dados, porem vc precisa gerar a temporizacao e processar os dados. para gerar temporizacao vc pode usar essa modeline do X11:

ModeLine "640x480" 25.175 640 656 752 800 480 490 492 525 -hsync -vsync

isso ae indica um pixel clock de 25.175MHz e a temporizacao derivada eh de 800 pixels por linha e 525 linhas por frame, o que resulta em varredura horizontal de 31.5kHz e varredura vertical de 60Hz.

vc teria dois timers com diversas tomadas de tempo. se o microcontrolador tiver circuito de video, vc jah tem essa funcionalidade disponivel, senao precisaria usar timers. mas eh complicado pensar nisso em termos de timer de microcontrolador e uma CPLD ou FPGA seria melhor. chutando ae um codigo em verilog, acho que seria algo como:

Código: Selecionar todos
always@(posedge PXCLK)
begin
  if(HCNT==799)
    HCNT <= 0;
  else
    HCNT <= HCNT+1;
  case(HCNT)
    0: HDMARQ <= 1;
    639: HDMARQ <=0;
    655: HSYNC<=1;
    751: HSYNC<=0; 
  endcase
end

always@(posedge HSYNC)
begin
  if(VCNT==524)
    HCNT <= 0;
  else
    VCNT <= VCNT+1;
  case(VCNT)
    0: VDMARQ <= 1;
    479: VDMARQ <=0;
    489: VSYNC<=1;
    491: VSYNC<=0; 
  endcase
end

assign DMARQ = HDMARQ && VDMARQ;
assign BLANK = HSYNC&&VSYNC;


assim vc tem DMARQ ativo na area de 640x480 do frame e sinais de BLANK, HSYNC e VSYNC. feito isso, ainda precisa tratar os dados. provavelmente o DMA vai entregar uma largura de 16 ou 32 bits, o que precisa compensar nos timers acima. nisso estou pensando em DMA por edge, o que significa que a cada pulso ele transfere 640 pixels para um buffer. no caso de uma FPGA, vc teria uma FIFO de 640 pixels que entram com largura de 16 ou 32 bits e saem cadenciados byte a byte a 25MHz.

se nao tiver uma FPGA, tem que dar uma melhorada nisso e puxar 16 ou 32 bits para 2 ou 4 latches e sequenciar no braco. e daih entao vai para o DAC de video. como eh 256 cores, provavelmente vc vai passar por uma paleta de 8 para 18 bits e daih para DACs separados de 6 bits cada. ou vc pode usar um padrao RGB332, onde tem DACs de 3, 3 e 2 bits diretamente.

bom, se o microcontrolador tiver controlador de video integrado e suporte para memoria externa, os problemas praticamente desaparecem. mas daih pode faltar flexibilidade, por exemplo, para trabalhar com multiplos planos, janelamento, aceleracao grafica, etc.
Editado pela última vez por msamsoniuk em 19 Set 2010 13:57, em um total de 1 vez.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Djalma Toledo Rodrigues » 19 Set 2010 13:34

O Monitor é RGB

E os Sinais de Video Analógicos

Isso permite dozar as proporções de R , G , ou B com Alta Resulução

o que vai permitir atingir a 16 milhões de cores.

mas para que a imagem tenha Nitidez é necessario que esses Sinais possuam velocidade, isto é, que atinjam Freqûencia bem alta.
Isso acredito ser mais importante em seu caso que a gama de Cores
de modo que pode usar um DAC com menor número de Bits em prol de maior Velocidade.

Faltou esclarecer que os Sinais de Sincronismo são independentes
Uma entrada para Sincronismo Horizontal
outra para Sincronismo Vertical

Quanto ao Buffer, Marcelo Samsoniuk colocou melhor que eu poderia te-lo feito.

Sugiro ver Esquema do Monitor VGA

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor rcakto » 19 Set 2010 14:03

to vendo que e melhor eu deixar isso de lado por agora... eu tava tentando sair fora do LCD pois a maioria dos chips com esse modulo nao tem memoria interna e como nao faco ideia de como trabalhar com memoria externa e nem tenho uma para aprender, nao to afim de perder dinheiro por agora... vo ter de aproveitar o meu LPC2368 adaptar meu projeto nele e criar um programa no pc para usar a porta serial como forma de controle.. resumindo, e como se eu tivese um PLC em casa...
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor msamsoniuk » 19 Set 2010 14:15

sim, voce precisa gerar os sinais HSYNC e VSYNC. a partir deles vc gera o BLANK tambem. o HSYNC e VSYNC vao para o monitor, enquanto o BLANK eh usado para desligar o DAC e colocar um nivel fixo, que vai justamente formar as bordas pretas nas laterais do monitor.

quanto a resolucao, depende do tamanho do DAC. no caso do VGA, foi dimensionado inicialmente em 6 bits para cada componente de cor, mas possivelmente o monitor pode responder ateh 8 bits para cada componente.

porem isso eh arbitrario, se vc usar 8 bits por pixel, pode perfeitamente usar um RGB332 com 3 ou 2 bits por DAC, se usar 16 bits por pixel, pode usar um RGB556, com 5 ou 6 bits por DAC, mas vai precusar gastar o dobro do bandwidth. e finalmente, se usar 24 bits por pixel, pode usar RGB888 e 8 bits por DAC, gastando o triplo do bandwidth. isso daria respectivamente uns 25MB/s, 50MB/s e 75MB/s para apenas 640x480.

imagine entao quanto seria a 1280x1024 e vc comeca a concluir que para ir a tanto precisaria de uma DDR3 e um barramento bem largo. aqui tem um projeto bem completo desse porte e usa oito DDRs de 16 bits em paralelo para formar um bus de 128 bits:

http://wiki.opengraphics.org/tiki-index.php

mas daih eu acho que eh mais jogo partir logo para um powerpc com barramento pci-express e usar um chip da nvidia.

Djalma Toledo Rodrigues escreveu:O Monitor é RGB

E os Sinais de Video Analógicos

Isso permite dozar as proporções de R , G , ou B com Alta Resulução

o que vai permitir atingir a 16 milhões de cores.

mas para que a imagem tenha Nitidez é necessario que esses Sinais possuam velocidade, isto é, que atinjam Freqûencia bem alta.
Isso acredito ser mais importante em seu caso que a gama de Cores
de modo que pode usar um DAC com menor número de Bits em prol de maior Velocidade.

Faltou esclarecer que os Sinais de Sincronismo são independentes
Uma entrada para Sincronismo Horizontal
outra para Sincronismo Vertical

Quanto ao Buffer, Marcelo Samsoniuk colocou melhor que eu poderia te-lo feito.

Sugiro ver Esquema do Monitor VGA

DJ
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor polesapart » 20 Set 2010 12:12

Eu já postei aqui há zilhões de anos atrás um esquema: se você ainda pensa em usar uma cpu com saída pra monitor lcd, tem um integrado que já faz tudo pra ti: você entra com os sinais digitais, e ele já sai com os sinais analógicos. Precisa só de uns componentes externos para conformar sinal e mais umas bobagens.
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor rcakto » 20 Set 2010 16:21

polesapart, se voce ainda tiver o esquema passa pro meu email...
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor polesapart » 20 Set 2010 16:39

Vou procurar. Pode demorar um pouco, mas acabo achando hehehe :D
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor NEON » 21 Set 2010 10:02

Acho vc está procurando por um componente ADV7125 ou ADV7441. Este entra digitais 8 bits RGB e sai em analógicos.
Vc acha site VGA with the ADV7125 http://www.avrfreaks.net/wiki/index.php ... he_PSP_LCD

Estava tentando usar o LCD PSP mas esta daí ADV7125 pode usar para o Monitor VGA.

vw..
NEON
Nibble
 
Mensagens: 58
Registrado em: 05 Dez 2006 17:04
Localização: RJ

Mensagempor rcakto » 21 Set 2010 11:27

NEON vlw, vou dar uma olhada para ver se eu concigo usar... como eu não sei se voce viu meu outro post.. estou tendo muita dificuldade de achar um chip com memoria cache e modulo lcd, por isso eu vou tentar usar o monitor para visualizar tudo... o problema vai ser como atualizar os dados no monitor, mas depois eu descubro... pelomenos eu nao terei problema com memoria externa... so escuto falar que é um porre conceguir funcionar.. sem contar no valor delas...
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor rcakto » 21 Set 2010 11:32

NEON, eu vou precisar de 24 I/O?? ou pode ser menos??
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor polesapart » 21 Set 2010 12:17

Achei, era esse aí que o colega postou.

http://www.analog.com/en/digital-to-analog-converters/video-encoders/adv7125/products/product.html

Esquematico c/ exemplo de como conectar as linhas do LCD no conversor (o que te interessa tá na pag. 5):
http://www.toradex.com/files/media/pdf/Colibri_EvaluationBoard_Schematics_Rev2.1_0.pdf
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor NEON » 21 Set 2010 12:30

Rcakto,
É verdade mas não vi outro o seu post. Fácil é funcionar, o difícil é a velocidade da imagem que vai traçando na tela do VGA e a velocidade do CPU. Mas depende que vai usar o seu projeto.
Pode funcionar menos de 24 I/O ou até 3 bits 3 I/O(um vermelho, um verde e um azul) se quiser economizar a sua memória.
Acho vai encontrar dificuldade de achar também ADV7125 ou equivalente.
Eu tenho interesse desenvolver projeto usando o LCD PSP.
NEON
Nibble
 
Mensagens: 58
Registrado em: 05 Dez 2006 17:04
Localização: RJ

Próximo

Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x