68K ou coisa assim, again

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Mensagempor enigmabox » 05 Ago 2008 15:34

Marcelo Samsoniuk,

Consegui o MC68010 e o MC68030 a preço baixo.
Pergunto, no MC68030, com a FPU, fica mais transparente a comunicação, mas nesta cpu dá pra acessar perifericos como o mc68861. Dá pra usar barramento de 16bits ou somente 32bits?
enigmabox
 

Mensagempor mastk » 05 Ago 2008 16:50

Q bem enigma, pegou PGA? Humm creio q deve dar sim, ele tem os Ds nao?
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 05 Ago 2008 17:41

no 68030 dah tranquilo, o truque eh que no lugar de DTACK ele usa dois pinos DSACK0 e DSACK1, estes pinos tem a mesma funcao de DTACK e permitem encodificar a largura do bus. assim, independente do 68030 pedir 32, 16 ou 8 bits, vc responde com a largura que vc tem e ele se encarrega entao de fazer ciclos extras para terminar a transferencia.

por exemplo, ele tenta gravar 32 bits em um device que opera com 8 bits, a memoria responde DSACK0 e DSACK1 com a largura de 8 bits (pegando o byte MSB nessa primeira operacao) e o 68030 entao gera sucessivos ciclos girando o operando no bus para casar com a largura que o dispositivo suporta.

um negocio bacana do 68030 eh que ele permite esse redimencionamento variar de device para device, entao vc pode ter uma flash de 8 bits, uma DUART 68681 de 8 bits, uma SRAM de 32 bits, uma SDRAM de 16 bits e uma FPU 68882 de 32 bits no mesmo sistema e sem conflitos.

o bus continua assincrono tambem, mas uma coisa q tem q tomar muito cuidado daih eh com a MMU e a cache on-chip. no coldfire, por exemplo, eu soh consigo usar direito a cache de instrucoes, as caches de dados vivem dando problema com a parte de IO! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 05 Ago 2008 18:32

Marcelo Samsuniuk,

Tu matou a xarada. então o MC68030 é tão versatil assim?
Pensei que tinha que usar um bus de 32bits com ram 32, etc....
Agora fico mais tranquilo. Uso a mesma ram de 16bits e a mc68681 para fazer a serial.
Como ja tenho duas mc68882, ficará facil inteligar o mc68030 com esta fpu!
Eu que tava perdendo o tempo com o mc68hc000.....
Consegui o mc68030 no formato PGA e o MC68010 no formato DIP.
Estou esperando meu colega trazer de São Paulo as cpu´s.
Também consegui os velhos MC6847, que estava pensando em fazer uma placa de video. Falta o MC6883 que nem sei se encontro....
Posso até aproveitar as flash 29f040 que tenho aqui, mas tenho que montar o gravador willem.
enigmabox
 

Mensagempor msamsoniuk » 06 Ago 2008 01:04

o 68030 eh realmente muito flexivel! :)

mas note que o ponto chave dele eh justamente conseguir unir no mesmo sistema um bus sincrono de alta performance (como o do 68040 e 68060) com um bus assincrono compativel com os produtos mais antigos (como o 68000 e 68020). se vc nao usar a maior largura de bus ou o maior clock oferecido pelo 68030, ele vai ser apenas um 68000 ou 68020 com mais pinos hehehe

um bom exemplo eh essa placa aceleradora que eu uso em um amiga 1200. ela tem um 68030 e 68882 overclockados a 50MHz e quando plugada causa a desativacao do 68EC020 de 14MHz montado na MB do amiga 1200:

Imagem
Imagem

a concepcao do negocio eh muito boa: o computador amiga 1200 originalmente usa um 68EC020 de 14MHz com um bus de 16 bits e nele esta plugado todos os perifericos. o 68030 de 50MHz desativa o 68EC020 e fala tanto com esse sub-sistema de 16 bits a 14MHz quanto com um sub-sistema de memoria 32 bits a 25MHz na placa aceleradora.

eh justamente esse sub-sistema de memoria extra que permite o 68030 mostrar sua real performance! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 06 Ago 2008 08:01

Marcelo Samsuniuk,

Tô vendo que tu é um conhecedor de 68K.
Sempre quiz ter um Amiga, tive contato com um a 15 anos atraz, quando eu mexia com edição de video, onde tinha um cartão genlook, pra fazer animações de video.
Já usei por muito tempo o 6502, z80, 8085, etc....Agora quero aprender mais sobre este 68k.
Acho que montarei uma placa com o banco de ram e eprom e uma placa com a cpu mc68030 com a fpu, ligadas por flat-cable de 60 vias. Mas deste modo acho que não posso usar com muita velocidade, a menos que o flat-cable seja curto.
De inicio usarei memoria configurada para 16bits, depois penso em fazer um banco de 32, para aproveitar toda a velocidade.
TB no momento usarei somente o modo antigo assincrono. Mas se usar modo sincrono, nao posso ligar perifericos mc68xx, mas como ficaria? Existem perifericos compativeis para 32bits?
Como vc explicou, a cpu é bem versatil, vc pode usar no caso o mc68030 e usá-lo de modo rebaixado como o 68000 ou utilizá-lo com toda sua potencia.
Vou ter que desenhar o 68030 no kicad e o soquete pga, pra depois fazer algo.
Estava lendo a datasheet do 68030 é tem varios pinos novos, para trabalhar com barramento de dados variavel, controle de cache, modo sincrono, etc..
Tb pra ajudar, acabei de baixar os manuais de serviço do Amiga 500 e 600 que trabalham com o 68000, mas vou ver se encontro o do Amiga 1200 ou superior pra ter uma ideia melhor de como funciona.
Para placa de video estava pensando em usar o mc6847 mesmo gerando CGA, ou usar uma placa de video que vi no site WWW.MYCPU.EU
Neste site tem um projeto de cpu, placa io, placa de video vga, tudo com componentes discretos. Nao sei se vc ja conhece este site.
Minha proxima tarefa ...desenhar o 68030 no kicad!
enigmabox
 

Mensagempor mastk » 06 Ago 2008 09:39

Seria o maximo, se puder ir trocando a placa CPU de 68000 para 68030, esses sao compativeis, e depois para um coldfire.

6847, enigma mano, inicialmente tinha ido muito com a cara deles, porem, precissam de configuracoes e um certo circuito complementar, levando em conta q eh um tanto chato para posteriormente criar imagem colorida, desanimei deles e de video composto.
Editado pela última vez por mastk em 06 Ago 2008 12:47, em um total de 2 vezes.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor enigmabox » 06 Ago 2008 10:16

Mastk,

Como ja tenho alguns flat-cables de 60 vias prontos com varios conectores, tô pensando em fazer um barramento com eles, penso que dá pra colocar quase todos os pinos.
Achei simples montar com o mc6847, pois é mais completo que o mc6845, mas tenho que achar a SAM ou mc6883 ou emular via cpld. Por enquanto nao tenho intenção de usar um monitor vga.
Outra opção de maluco é montar a placa de video VGA do site www.mycpu.eu. Tudo com 74hc e 74ac, eprom e ram.
Ou posso também usar minha placa de video do AppleIIplus 80colunas, nela usa o mc6845. É só fazer o mesmo barramento, mas ai seria um downgrade grande...Ou tb modificá-la, pois tenho todos os esquemas do AppleII.
enigmabox
 

Mensagempor msamsoniuk » 06 Ago 2008 11:14

nao teria muito problema misturar barramentos sincronos e assincronos, pois a cada acesso vc pode escolher terminar o ciclo de forma sincrona com o sinal STERM (apenas 32 bits) ou assincrona com DSACK0/1 (com 8, 16 ou 32 bits). no caso da terminacao sincrona, vc pode tambem escolher fazer um acesso em burst, puxando 4 palavras de 32 bits em sequencia para preencher uma linha de cache (128 bits).

mas note que uma diferenca principal do 68000/68010 para outros 680x0 eh que os sinais de suporte direto ao 68xx foram removidos e vc tem que simular eles a partir de um acesso assincrono de 8 bits. os manuais do amiga sao uma boa ideia. no amiga existem alguns perifericos compativeis com 68xx, os chipsets principais com bus de 16 bits e, no caso do amiga 3000 com 68030, bancos de memoria 32 bits.

sobre o video, nao eh muito trivial mesmo nao. o 6847 e alguns componentes antigos sao mais simples de usar, mas acho que sao muito inflexiveis e o resultado final eh muito fraco. o 6845 requer mais componentes, mas vc pode construir um adaptador de video com maior resolucao. uma outra opcao simples e direta eh vc ligar uma placa de video ISA antiga diretamente no 68000, usando bus 16 bits e ajustando a temporizacao para simular os acessos de 8MHz do padrao PC AT.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 06 Ago 2008 12:53

Marcelo Samsuniuk,

Entendi sobre o barramento. Consegui baixar o esquema do Amiga3000 que vem com o MC68030. Agora outra pergunta, no esquema do Amiga 3000, vi que tinha a opção para o mc68030 PGA e QFP.
Isso mesmo, vi no datasheet que o mc6847, vem tudo embutido e é menos flexivel que o mc6845, como vc disse.
Vou tentar achar alguma placa isa PC pra brincar...pois a que tenho é do appleII de 8 bits.
enigmabox
 

Mensagempor msamsoniuk » 06 Ago 2008 14:29

acho que tem exatamente os mesmos sinais, visto que o QFP tem 132 pinos e o PGA tem 128 (ateh onde lembro). o que pode acontecer eh vir um 68EC030 no lugar de um 68030, nesse caso nao teria MMU on-chip (se vc nao pretende usar, eh ateh melhor).

sobre video eh por aih mesmo, o 6845 eh ideal para gerar temporizacao.

outras opcoes seriam copiar as ideias usadas no macintosh ou amiga, onde a memoria de video eh extraida diretamente da memoria principal e o refresh do video eh feito atraves de um DMA que acessa a memoria alternadamente com o processador. apesar de parecer consumir banda, normalmente o impacto eh bem pequeno e em contra-partida vc tem muito mais memoria disponivel para efeitos de video.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 06 Ago 2008 15:15

Marcelo,

Comprei o MC68030RC20 PGA 128 pinos, comprei tb o MC68010 PGA.
Vc tocou em um tema importante. Geralmente as placas de video convencionais tem ram separada do sistema, ou em alguns casos utiliza ram de acesso duplo.
No caso do amiga, appleII, tk95 entre outros, usam a mesma memoria para ram de video.
Como o que estou montando é uma placa experimental não me preocupo muito com a eficiencia.Posso tb emular algo via cpld e usar como um frame-buffer, ao inves de usar um barramento para acessar a placa de video.
Também vi em um site que colocaram as logicas do amiga 4000 em um fpga, assim a placa ficaria resumida em ram, flash, fpga e cpu que em alguns casos pode ser emulada dentro do fpga em vhdl.
Vou começar a desenhar a placa, depois publico aqui.
enigmabox
 

Mensagempor msamsoniuk » 06 Ago 2008 18:30

eu acho essa questao de eficiencia da memoria compartilhada bem questionavel. na pratica vc teria 3 casos possiveis: memoria separada, memoria compartilhada e memoria de porta dupla.

os primeiros sistemas usavam memoria compartilhada e isso apresentava uma serie de vantagens: diminuicao da complexidade geral do sistema e incremento na performance de video, visto que bastava apontar o dma de video para sucessivos buffers para produzir video em realtime. esse eh o segredo do processamento de video em realtime do amiga na decada de 80.

a desvantagem eh que o refresh de video consome banda de memoria do processador principal e isso impacta aplicacoes que nao precisam de video e de outra forma seriam mais rapidas. para resolver esse problema algumas arquiteturas separaram a memoria de video da memoria principal, um exemplo disso sao os PCs da decada de 80. por outro lado, quando o processador precisava cuidar do video ele estava sujeito a acessar uma memoria compartilhada com o refresh de video e isso impactava a performance da mesma forma! pior, como o buffer de video era muito menor, o processador principal precisava mover volumes imensos de dados da memoria principal para o unico buffer de video, o que simplesmente impedia o processamento de video em realtime no PC na decada de 80.

bom, o macintosh na decada de 80 usava memoria compartilhada, mas para diminuir o consumo de banda passaram a usar memoria de video de porta dupla na decada de 90. isso realmente soluciona o problema de compartilhamento de banda com o refresh de video dos outros dois sistemas, mas mantem a deficiencia de gastar performance do processador movendo dados da memoria principal para o buffer de video.

entao, somando as vantagens e desvantagens, me parece que a memoria compartilhada ainda eh mais interessante para processamento de video em realtime quando comparado com buffers de video separados. eh soh questao de vc ter um sistema de DMA bastante eficiente e talvez um processador principal com uma boa cache on-chip.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 06 Ago 2008 22:19

Por isso que na decada de 80 só usavam Amiga com Genlook para video edição. Tentei na epoca fazer algo com um PC XT, mas nem dava pois o video era cga de baixa resolução e tinha que criar uma placa separadora de sincronismo, frame-grabber, misturadora,etc....Enquanto que no Amiga era só plugar o cartucho genlook e tudo funcionava.
Na epoca eu tinha alguns jogos que no AppleIIplus era mais rapido no processamento que o PC XT, comparando um jogo equivalente.
Outro que seguiu a logica do PC foi o MSX, mas acho que foi devido a Microsoft. No MSX tinha um processador de video, onde a memoria era isolada da memoria principal, assim o z80 não conseguia manipular de modo direto a ram do processador de video.
Uma ideia interessante, mas que foi usada porque o hardware era fraco, foi no ZX80 ou ZX81, onde vc desligava as interrupções do processamento do video para aumentar a eficiencia do Z80. No software, podia ligar e desligar esta chave, ligando somente quando fosse necessaria o uso do z80 para exibição do video. Acho que isso poderia ser aplicado tb em outros hardwares, ao inves de ficar compartilhando de modo continuo a CPU para processamento e video.
Vou dar uma boa estudada no hardware do Amiga e dos primeiros Macs, pra vc que decido fazer.
enigmabox
 

Mensagempor msamsoniuk » 07 Ago 2008 02:23

o amiga eh uma referencia definitiva: as ideias estao bem implementadas, bem documentadas e todo mundo viu funcionar bem! o interessante do amiga eh que o acesso dos canais de dma eh encadeado de tal forma a nao causar nenhuma perda de performance no 68000, embora para outros 680x0 mais velozes isso nao fosse verdade.

bom os amigas sao bem documentados mas os macs...pff! :P alguma coisa do mac IIci vc encontra neste link:

http://developer.apple.com/documentatio ... c_IIci.pdf

eh uma maquina bem interessante, com um 68030 de 25MHz e utiliza memoria compartilhada para gerar 640x480 pixels em 256 cores.

detalhes menores dos macs originais com display monocromatico soh encontrei aqui:

http://en.wikipedia.org/wiki/Macintosh_ ... al_details

os macs mais antigos integrados usavam essa mesma logica, meio derivada do proprio apple2 (inclusive o mac plus, SE, SE30, classic, etc), mas os mais novos com gabinete separado do monitor passaram a usar VRAM (exceto o IIci acima).

outra referencia boa eh o palm pilot: o 68328 utilizado nos primeiros modelos inclui um sub-sistema de controle de lcd bem completo e utiliza dma em cima de memoria compartilhada. o 68340 por sua vez era usado no CD-I, mas nao tenho muitos detalhes de como o video dele funcionava.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

AnteriorPróximo

Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

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

x