68K ou coisa assim, again

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

Moderadores: 51, guest2003

Mensagempor enigmabox » 19 Ago 2008 14:20

Marcelo Samsoniuk,

Verdade, as cpus atuais, podem operar com frequencia bem baixa.
Modulos de cristais e cristais simples tenho varios, assim posso experimentar em varias frequencias ou fazer um divisor com o 74ls393 para o clock, mas vou colocar de inicio 14,32MHZ na cpu pra começar, no limite da RAM de 70ns sem wait-states.

Mastk,

Já liguei a placa de video sem a ram , vendo no osciloscopio, pude ver os sinais de video, conforme o modo que habilito via swich, vejo tb o croma.
Pretendo futuramente melhorar esta placa deixando apenas os latchs de endereços e dados e usar cpld com uma ram maior.
Falta ainda plugar o MC1372 para somar a luminancia e o croma no video composto.
Depois disso começo a montar a placa cpu 68030. De inicio farei uma pci com a cpu e memorias e cpld e soquete igual ao que vc viu na placa de video.
enigmabox
 

Mensagempor msamsoniuk » 21 Ago 2008 00:05

uma questao enigma, onde vc conseguiu o 6847 ? um amigo meu que esta fazendo um projeto com o Z80180 esta precisando de um controlador de video simples e pensei no 6847 (ou o 9918 usado no msx). soh que ele eh de goiania e nao manja onde comprar isso em sampa! alguma dica ?

a proposito, a velocidade de acesso da memoria no 68030 depende do tipo de terminacao: se vc usar DSACK0/1, vc tem acessos de 3 clocks e com STERM vc tem acessos de 2 clocks. o limite de tempo eh justamente o tempo entre AS baixar para ter o chipselect valido e o instante em que ele amostra o bus. no caso do acesso de 3 clocks ele baixa AS na borda de descida de S1 e amostra o bus na borda de subida de S4, isso dah um total de 2 ciclos completos de clock, portanto a 25MHz vc ainda teria 80ns de tempo de acesso entre o chipselect da memoria e o latch dos dados.

no caso do acesso de 2 clocks, realmente, as coisas ficam bem estreitas, pq AS fica ativo por um unico clock inteiro e, supondo 80ns como uma margem de seguranca entre o chipselect e o latch dos dados, precisaria baixar o clock para 12.5MHz ou inserir 2 wait-states (um clock inteiro extra, deixando o ciclo com STERM equivalente a um ciclo com DSACK0/1).

note que no primeiro caso a 25MHz e terminacao assincrona com DSACK0/1 em zero wait states (ou STERM com 2 wait-states) vc teria uma banda teorica total de 33MB/s e no segundo caso a 12.5MHz e terminacao sincrona com STERM em zero wait states vc teria... surpresa! uma banda teorica de 25MB/s. alem da banda total menor, rodando a 25MHz vc poderia atingir picos de 12MIPS gracas a cache de instrucoes e rodando a 12.5MHz vc atingiria apenas 6MIPS.

a desvantagem da terminacao sincrona eh bem aparente, de fato, o lucro em usar STERM soh aparece mesmo se vc conseguir operar em burst, como no caso de uma memoria dram com recurso de coluna estatica. nesse caso vc teria 80ns de tempo de acesso para o RAS/CAS da primeira long, mas as outras 3 estariam nas mesma coluna, de modo que vc poderia apenas clockar CAS e acessar as longs extras com um tempo de apenas 40ns! nesse caso, operando a 25MHz e com 1 wait state no primeiro ciclo e zero wait states para os outros, vc teria 4 longs transferidas em apenas 6 clocks, ou seja, 66MB/s! com isso vc aproveitaria essa propriedade elegante das memorias dram de enderecarem colunas em alta velocidade e ainda garantiria uma mipagem alta quando operando na cache.

por outro lado, voltando ao caso das srams, se vc operar no caso extremo de 50MHz (maximo clock possivel em um 68030), teria que inserir 4 wait states (2 clocks), de modo que vc teria 5 clocks por acesso de 32 bits, no lugar de 3. sua taxa de transferencia ainda seria entao de 40MB/s com a mesma memoria sram de 80ns e conseguiria picos de 25MIPS na cache on-chip. neste mesmo caso, usando uma memoria dram com coluna estatica, terminacao com STERM e transferencias em burst, vc teria a primeira long com 4 wait states e 2 wait states para cada uma das outras tres, totalizando 11 clocks por acesso e uma banda de 72MB/s.

entao eu diria que ainda vale a pena clockar o processador no maximo! =)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 21 Ago 2008 11:14

Marcelo Samsoniuk,

O MC6847 pode ainda ser encontrado na Santa Efigenia ou em alguma sucata da CCE. Se quiser posso te passar o telefone via PM de um amigo que trabalha com componentes lá, assim ele pode encontrar para você.
O 9918, eu vi na Squib, mas lá a conta sai cara.....
Geralmente, junto com o MC6847, pode ser utilizado o MC1372 para somar as cores com a luminancia, mas não é necessario usar bobinas ou trafos para gerar video composto, apenas no envio de RF para o televisor. Vendo a página 12 do datasheet do MC6847, mostra como ligar o MC1372, na configuração video composto, que será ligada na entrada A/V de qualquer televisor atual.
Vou adotar suas ideias. Tenho um modulo cristal de 20mhz para testar.
Outra duvida, Marcelo. Para comunicar com memorias de 8 bits, ou enviar palavras de 8 bits para a memoria, devo ligar D24 a D31 do barramento do 68030 no D0 a D7 da Ram? E enviar somente o MSB no modo 32 bits ou devo indicar o tamanho do barramento de 8 bits para o 68030 e deixar a CPU dividir em pedaços de 8bits, ligado D0-D7 do 68030 na ram D0-D7?
enigmabox
 

Mensagempor msamsoniuk » 21 Ago 2008 13:26

bom, o 68030 soh descobre a largura do bus quando recebe DSACK0/1, entao na primeira tentativa ele vai colocar a palavra de 32 bits inteira no bus. como ele eh big-endian, o byte do endereco 0 vai estar nos bits D31-D24 e eles estarao conectados em D7-D0 da memoria.

quando ele receber o DACK0/1, ele vai compreender que conseguiu enviar apenas um byte e vai tentar transferencias de 24, 16 e 8 bits, algo como:

Código: Selecionar todos
A1-0 D31-24 D23-16 D15-8 D7-0
00   byte0  byte1  byte2 byte3
01   byte1  byte2  byte3
10   byte2  byte3 
11   byte3 


em cada requisicao vc sempre responde DSACK0/1 indicando um port size de 8 bits e o 68030 faz o resto do trabalha. eh bem pratico isso, mas, por algum motivo, no 68040 e 68060 essa facilidade foi removida.

bom, meu amigo achou o 6847 muito interessante, vc me envia o contato de seu colega lah ?
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 21 Ago 2008 19:19

Já estou preparando mais um latch na placa de video para sinalizar a cpu via dsack durante o CSVideo que a largura de pulso é 8 bits.
Fiz uma jogada na placa de video usando o FS\ HS\ para evitar o flicker da imagem, se a cpu 68030 acessa a placa de video e o mc6847 está apresentando a imagem, dentro do frame, o 68k fica em wait até que o frame seja terminado, assim poderá tomar o bus da ram de video, espero que funcione.
Acho que removeram este recurso do 68040 e 68060 porque a melhor eficiencia é com bus de 32. Se no 68020 retiraram os pinos de compatibilidade com perifericos 68xx, na ultima versão resolveram tirar tudo e trabalhar somente em 32bits.
Agora entendi melhor o envio de dados em 8 bits. Se fosse em 32 bits somente com o MSB, ficaria pulando endereços de 4 em 4, assim a memoria de video seria escrita de modo errado! :shock:
Outra diferença é que no 68020 e 68030 tem o A0, pra fazer esta jogada em 8 bits. No 68000 não há A0, assim tem que fazer de outro modo.
Se fizesse uma placa cpu com 68000 e depois fosse feito um upgrade para 68030 ficaria complicado, além de fazer os deslocamentos dos pinos de endereço, teria que usar o dsack0/1 no lugar do dtack e para confirmar o dado no bus de dados estou usando o DS\, que no 68000 não tem.
Já mandei via PM o contato :wink:
enigmabox
 

Mensagempor mastk » 22 Ago 2008 11:43

perai, nao haver o A0 compensa-se com o UDS e LDS uma logica e vc gera ele e vice-versa nao?

Enigma qual resolucao pretende?
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 22 Ago 2008 12:48

eh que realmente o 68020 e 68030 sao um caso a parte, pois eles permitem dimensionamento dinamico do bus. vc pode fazer um sistema que usa parte 8, parte 16 e parte 32 bits. no caso do 68000, o sistema tem q ser inteiro de 16 ou inteiro de 8 bits.

por exemplo, a 68681 eh um periferico bem avancado, mas o bus eh de 8 bits, normalmente conectada ao byte LSB no 68000. para acessar a 68681, vc tem q levar em consideracao que ela esta presente apenas no enderecos impares.

no caso do 68030, mesmo no bus de 8 bits nao teria problema algum e poderia ser acessivel em enderecos corridos.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 22 Ago 2008 12:54

Mastk,

Como tinha dito, sem o A0 no 68k, "pode se fazer de outro modo..."..não fique assustado!!hehe
Por enquanto, a resolução será compativel com a TV.
Depois que funcionar a placa cpu 68030, vou fazer outra placa de video para gerar VGA. Com o barramento que utilizei posso até ligar duas placas de video. Deixando o do MC6847, somente para texto e debug, e construir uma outra placa grafica VGA.
Fiz deste modo para economizar tempo de montagem. Acho que até domingo a placa do 6847 estará 100% montada, assim inicio a placa CPU.
enigmabox
 

Mensagempor Ov3rM1nd » 26 Ago 2008 20:08

Olá Marcelo Samsoniuk,
Até que enfim consegui registrar :P

Bem, tenho feito um projeto semelhante, mas ao invés de usar um 68k estou usando um z80180 de 8 bits. Estou utilizando uma PIC 16F877A para supervisionar a CPU, gravando o código que boota a CPU na PIC e assim a PIC passa para a sram o código que vai bootar. Após fazer a transferência, a mpu reseta o z80, que então executa o código.

Hoje consegui fazer o z80 ler alguma coisa de um cartão SD (pelo menos parece que sim :P).
Ov3rM1nd
 
Mensagens: 3
Registrado em: 31 Jul 2008 22:46

Mensagempor msamsoniuk » 26 Ago 2008 21:52

Ov3rM1nd escreveu:Olá Marcelo Samsoniuk,
Até que enfim consegui registrar :P

Bem, tenho feito um projeto semelhante, mas ao invés de usar um 68k estou usando um z80180 de 8 bits. Estou utilizando uma PIC 16F877A para supervisionar a CPU, gravando o código que boota a CPU na PIC e assim a PIC passa para a sram o código que vai bootar. Após fazer a transferência, a mpu reseta o z80, que então executa o código.

Hoje consegui fazer o z80 ler alguma coisa de um cartão SD (pelo menos parece que sim :P).


pow, eh 2 palito ae para vc colocar um 68EC000 no lugar do Z80 hein! ;D

eu convidei o overmind para participar do topico pq alem do projeto dele ser muito similar, ele se interessou pelos controladores de video que estamos discutindo. convenci ele a usar um 6847, agora soh falta convencer a usar um 68EC000 hehehe

bem vindo ao forum, nao se esqueca de postar umas fotos do monstrinho ae! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Ov3rM1nd » 26 Ago 2008 21:55

Hehehehe, vou comprar um 68EC000 junto com o 6847... mas vai ficar muito tramposo trocar o z80180 aqui... o negócio já tá funcionando hehehehe, mas quem sabe...
Ov3rM1nd
 
Mensagens: 3
Registrado em: 31 Jul 2008 22:46

Mensagempor msamsoniuk » 27 Ago 2008 00:28

como vc esta trabalhando no seu projeto de conclusao de curso, talvez nao seja mesmo uma boa ideia alterar o processador agora que as coisas jah estao funcionando hehehe ;)

mas uma boa jogada seria prever na sua placa um bus de expansao com todos os sinais do Z80 e um conjunto de jumpers para desligar o BUSREQ e BUSACK do resto do sistema e forcar BUSREQ para sempre ativo. desta forma o Z80 estaria sempre em tri-state e seria possivel plugar uma placa de expansao com o 68EC000 substituindo integralmente o Z80.

o bus padrao intel com WR, RD, IOREQ, MREQ, etc vc poderia adaptar facilmente com alguma logica TTL adicional a partir do bus padrao motorola e o 68EC000 operaria com bus externo fixo em 8 bits, de modo a reutilizar diretamente os bancos de memoria e IO projetados para o Z80. se interessar, podemos discutir no futuro essa logica TTL para adaptar um bus ao outro, nao tem muito segredo isso hoje em dia nao.

e claro, vc obviamente precisaria portar seu SO para o 68000.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 27 Ago 2008 08:22

Marcelo,

Já entrou em contato e conseguiu o mc6847 para o seu amigo?
Já terminei a placa de video. Fiz alguns testes e consegui enviar video para a tv. Falta ainda ajustar a freq. do oscilador do mc1372 e terminar a conexao do 74ls138 gerador do CSVIDEO.
Placa de video montada:
Imagem


Agora darei inicio a montagem da placa cpu....

Benvindo ao Ov3rM1nd!
Qualquer coisa estamos a disposição.hehe
Editado pela última vez por enigmabox em 27 Ago 2008 08:44, em um total de 2 vezes.
enigmabox
 

Mensagempor mastk » 27 Ago 2008 08:35

Bem vindo cabra, pega um mupy na geladeira e fica a vontade.

Tem um computador feito com Z80 + 877 com SO, bacana, teria umas fotos?

Enigma, de q forma vc esta utilizando o compatilhando a ram do sistema? Tem fotos tb?

Sam, como ta indo seu sistema?

Eu to fazendo o software de PC para utilizar o sistema e a placa de video, talvez demore um pouco mais q esse fds tem o enem.

Overmind, lider dos zergs?
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor enigmabox » 27 Ago 2008 08:40

Mastk,

Ainda nao estou fazendo o processo do frame-buffer, assim a ram de video de 8k(usado somente 6k no maximo) é isolada da ram do sistema via latch.
A proxima placa de video usara a ram do sistema.
A cpu do sistema joga a informação na ram de video entre o intervalo do frame de video e o mc6847 faz o resto.
enigmabox
 

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