Ir ao conteúdo

Posts recomendados

Postado

Recentemente resolvi estudar eletronica e montei um pequeno laboratorio com a finalidade de construir um console caseiro, esse console deveria ser capaz emular consoles antigos, ele teria um firmware baseado em linux que carregaria os emuladores  e deveria acessar um cartão de memoria para carregar as roms ou os saves. O problema esta sendo na escolha dos componentes, principalmente o processador, a principio pensei em usar microcontroladores atmega ou atxmega, porém abandonei a ideia ao ver que eles não possuiam ram sulficiente, então me veio a ideia de usar processadores baseados em arm, porém existem muitos, também ouvi falar em STM32, vocês podem me indicar um processador barato e que potente o sulficiente para isso?

 

Lista de consoles a serem emulados:

- Atari 260:
- Atari 5600
- Nintendo 8-bit

- Master System

- Mega Drive/Genesis

- Super Nintendo

- Game Boy

 

Postado

Existe uma solução barata e funcional ao console que tu está a desenvolver. Bem, não quero acabar com o seu projeto, eu desejo que ele vá até o fim da forma mais satisfatória, a que você deseja.

 

O Computador Raspberry Pi Zero tem uma opção de Sistema operacional com emuladores de diversos videogames antigos. São mais de 30 opções de emuladores na RetroPie (EmulationStation): Atari (várias versões), 3DO, Game Boy, Game Gear, Nintendo 64, PlayStation 1, Dreamcast, MAME (fliperama), NES, Super Nintendo, Mega Drive, Master System, Intellivision, Macintosh, PC Engine, SEGA CD, dentre outros.

 

É um projeto pronto, mas que indico como inspiração para o seu console, com relação ao hardware. É pra fins comerciais este console que está a desenvolver, ou faz isso apenas por hobbie?

Postado

O projeto que você quer criar ja existe, o sistema operacional retropie junto com uma placa  raspberry pie /odroid C2 permite emular esses e outros consoles tendo ainda, no caso do raspberry pi saida para TVs de tubo (video composto) e HDMI...

 

O maior problema de se projetar tudo do zero a partir de um microcontrolador seria que muitos SoC simples baseados em cpus ARM 9 ou ARM cortex m3 não tem interface de video HDMI ou analogica, voce teria que criar uma "placa de video " primitiva usando um FPGA e um RAMDAC, ou usar uma tela LCD dedicada...

Postado
3 minutos atrás, Dabota disse:

Existe uma solução barata e funcional ao console que tu está a desenvolver. Bem, não quero acabar com o seu projeto, eu desejo que ele vá até o fim da forma mais satisfatória, a que você deseja.

 

O Computador Raspberry Pi Zero tem uma opção de Sistema operacional com emuladores de diversos videogames antigos. São mais de 30 opções de emuladores na RetroPie (EmulationStation): Atari (várias versões), 3DO, Game Boy, Game Gear, Nintendo 64, PlayStation 1, Dreamcast, MAME (fliperama), NES, Super Nintendo, Mega Drive, Master System, Intellivision, Macintosh, PC Engine, SEGA CD, dentre outros.

 

É um projeto pronto, mas que indico como inspiração para o seu console, com relação ao hardware. É pra fins comerciais este console que está a desenvolver, ou faz isso apenas por hobbie?

Apenas por hobbie, pra testar até onde meu conhecimento e minha capacidade podem ir queria desenvolve-lo do zero, tive essa ideia de usar arm ao ver um raspberry pi 3 com o retropie rodando emuladores

adicionado 4 minutos depois
2 minutos atrás, F4b10 disse:

O projeto que você quer criar ja existe, o sistema operacional retropie junto com uma placa  raspberry pie /odroid C2 permite emular esses e outros consoles tendo ainda, no caso do raspberry pi saida para TVs de tubo (video composto) e HDMI...

 

O maior problema de se projetar tudo do zero a partir de um microcontrolador seria que muitos SoC simples baseados em cpus ARM 9 ou ARM cortex m3 não tem interface de video HDMI ou analogica, voce teria que criar uma "placa de video " primitiva usando um FPGA e um RAMDAC, ou usar uma tela LCD dedicada...

Tempo para aprender para mim não é problema. Não iria usar saida HDMI, a saida de vídeo podia ser RF ou vídeo composto estive pensando em colocar um segundo chip para funcionar como "GPU", o que você acha?

Postado

@José Nildo de M. Pereira Creio que se voce pretende rodar linux ou outro sistema operacional com interface grafica a saida mais fácil seria mesmo a placa raspberry pi, as placas ARM 9 ja estão meio fora de linha, embora sejam capazes de rodar linux/windows CE e as placas ARM cortex M3 mais simples não tem muita memoria RAM, tipicamente menos de 128KB, menos RAM que um super nintendo...  são placas destinadas a projetos mais simples... 

 

Talvez uma placa ARM M4 a 150Mhz com + 4MB de SRAM externa consiga emular esses consoles, mas você teria que programar os emuladores pra rodar diretamente no hardware sem sistema operacional, lidar manualmente com o acesso a memoria, ja que essas placas não tem MMU, e ainda construir um RAMDAC pra gerar o sinal de vídeo analógico RGB, eu mesmo não me aventuraria a tentar construir algo assim.

 

 

 

 

 

Postado
23 horas atrás, F4b10 disse:

@José Nildo de M. Pereira Creio que se voce pretende rodar linux ou outro sistema operacional com interface grafica a saida mais fácil seria mesmo a placa raspberry pi, as placas ARM 9 ja estão meio fora de linha, embora sejam capazes de rodar linux/windows CE e as placas ARM cortex M3 mais simples não tem muita memoria RAM, tipicamente menos de 128KB, menos RAM que um super nintendo...  são placas destinadas a projetos mais simples... 

 

Talvez uma placa ARM M4 a 150Mhz com + 4MB de SRAM externa consiga emular esses consoles, mas você teria que programar os emuladores pra rodar diretamente no hardware sem sistema operacional, lidar manualmente com o acesso a memoria, ja que essas placas não tem MMU, e ainda construir um RAMDAC pra gerar o sinal de vídeo analógico RGB, eu mesmo não me aventuraria a tentar construir algo assim.

 

 

 

 

 

Eu encontrei um arm cortex m4 rodando a 168MHz, sabe onde encontro as memórias sram? Eu não ia usar uma distribuição linux padrão e sim uma versão modificada por mim mesmo, apenas com o minimo necessario para o sistema funcionar,  e uma interface gráfica simples baseada no lxde, os emuladores também seriam de minha autoria (Iria utilizar emuladores open source como base para faze-los)

 

Link do arm cortex m4:

https://pt.aliexpress.com/item/STM32F405RGT6-ARM-Cortex-M4-IC-MCU-LQFP-64-STM32F405-32Bit-1MB-Microcontroller-Chip-Controller-Flash-DC/32821157574.html?ws_ab_test=searchweb0_0,searchweb201602_2_10152_5000015_10151_10065_10344_10068_10342_10547_10343_51102_10340_10548_10341_5130015_10084_10083_10307_10312_5790015_10059_10313_10314_10534_100031_10604_10103_10605_10594_5060015_10142,searchweb201603_1,ppcSwitch_2&algo_expid=c040ea4e-7c09-41d7-bfeb-c80b187fa5c7-0&algo_pvid=c040ea4e-7c09-41d7-bfeb-c80b187fa5c7&rmStoreLevelAB=5

Postado

@José Nildo de M. Pereira pesquisando um pouco, parece que ha uma versão do linux chamada uC linux que é capaz de rodar em CPUs ARM M3 em diante, mas é uma versão limitadissima, no maximo voce deve conseguir um acesso ao terminal via interface serial com um PC, como é feito em alguns modens...

 

Esses processadores não tem uma MMU o que obriga a controlar o chip de RAM externo diretamente das linhas de I/O como era feito antigamente, lidando com temporizações, multiplexação, calcular wait states, etc... a sugestão de usar um SRAM externa é pra facilitar já que não terá que lidar com ciclos de refresh como em uma DRAM, mas o preço das SRAM pode deixar o projeto bem caro, pra se ter uma ideia um exemplo de uma cotação de um chip SRAM de 32Mbit (4MB):

 

https://octopart.com/as6c3216a-55tin-alliance+memory-81875021

 

Seria mais fácil pensar em reescrever e rodar os emuladores direto no hardware, já que claramente não ha recursos para roda-los junto com um sistema operacional, pra poupar recursos voce poderia criar menus em texto simples como os usados naqueles clones de SNES de camelo...

 

O vídeo seria outro problema, um sinal de vídeo analógico colorido usualmente é gerado, ao menos na arquitetura PC, por um circuito de RAMDAC onde os valores dos pixel são escritos na memoria de vídeo (framebuffer) pelo processador e a memoria é endereçada em serie por um contador com os dados sendo jogados em um conversor D/A (RAMDAC) gerando os sinais de vídeo RGB analógicos, que podem ser combinados pra gerar um sinal de video composto colorido para TVs... circuitos auxiliares geram os sinais de sincronismo horizontal/vertical, nos videogames antigos toda essa parafernália ficava em um chip dedicado, como o TIA do atari 2600, você provavelmente teria que apelar pra um FPGA ou dezenas de CIs dedicados...

Postado
12 horas atrás, F4b10 disse:

@José Nildo de M. Pereira pesquisando um pouco, parece que ha uma versão do linux chamada uC linux que é capaz de rodar em CPUs ARM M3 em diante, mas é uma versão limitadissima, no maximo voce deve conseguir um acesso ao terminal via interface serial com um PC, como é feito em alguns modens...

 

Esses processadores não tem uma MMU o que obriga a controlar o chip de RAM externo diretamente das linhas de I/O como era feito antigamente, lidando com temporizações, multiplexação, calcular wait states, etc... a sugestão de usar um SRAM externa é pra facilitar já que não terá que lidar com ciclos de refresh como em uma DRAM, mas o preço das SRAM pode deixar o projeto bem caro, pra se ter uma ideia um exemplo de uma cotação de um chip SRAM de 32Mbit (4MB):

 

https://octopart.com/as6c3216a-55tin-alliance+memory-81875021

 

Seria mais fácil pensar em reescrever e rodar os emuladores direto no hardware, já que claramente não ha recursos para roda-los junto com um sistema operacional, pra poupar recursos voce poderia criar menus em texto simples como os usados naqueles clones de SNES de camelo...

 

O vídeo seria outro problema, um sinal de vídeo analógico colorido usualmente é gerado, ao menos na arquitetura PC, por um circuito de RAMDAC onde os valores dos pixel são escritos na memoria de vídeo (framebuffer) pelo processador e a memoria é endereçada em serie por um contador com os dados sendo jogados em um conversor D/A (RAMDAC) gerando os sinais de vídeo RGB analógicos, que podem ser combinados pra gerar um sinal de video composto colorido para TVs... circuitos auxiliares geram os sinais de sincronismo horizontal/vertical, nos videogames antigos toda essa parafernália ficava em um chip dedicado, como o TIA do atari 2600, você provavelmente teria que apelar pra um FPGA ou dezenas de CIs dedicados...

Você conhece algum processador similar aos Cortex-M e que possua MMU? Já a placa de vídeo depois eu resolvo

Postado

@José Nildo de M. Pereira Tem os SoCs ARM 9 e ARM11 que tem MMU e conseguem rodar linux, porém são chips ja obsoletos e dificeis de achar, dentro da linha ARM atual, hoje o minimo capaz de rodar uma distro linux basica seria um ARM A5, como os chips da familia VF3xxR e VF5xxR da freescale:

 

http://www.mouser.com/ds/2/302/VYBRIDRSERIESEC-1127990.pdf

 

São CPUs ARM A5 com opção de encapsulamento LQFP de 168 pinos nas versões mais simples ou BGA nas mais rapidas, o encapsulamento LQFP facilita muito o projeto da PCB embora as altas frequências da interface com a memoria externa sejam problemáticas...

 

Tenha em mente que praticamente qualquer SoC moderno mais complexo vem em encapsulamento BGA, o que torna projetar suas próprias placas uma tarefa bastante complicada, já que normalmente esse tipo de CI requer PCBs multi camadas industriais. sem mencionar que devido as altas frequências de barramento o projeto da placa se torna critico em relação a impedância de trilhas, capacitâncias parasitas, não sera qualquer PCB caseira que aceitaria um CPU desses, mesmo para um engenheiro não seria uma tarefa trivial rotear + de 400 trilhas apenas de um SoC BGA moderno...

 

A opção mais pé no chão são placas prontas baseados em SoCs ARM A7, como os allwinner H2 ou o raspberry pi zero que são mais baratas tem memoria RAM e Flash  onboard e são mais potentes, são soluções prontas:

 

https://pt.aliexpress.com/item/Allwinner-H2-plataforma-de-hardware-Open-source

 

Se quiser sair fora da linha ARM, outra opção seria partir pra SoCs MIPS como os Ingenic  x1000 com 32/64MB de RAM on chip:

 

http://www.ingenic.com/en/?product/id/9.html

 

Essa empresa inclusive fabricava CPUs para consoles de mão portáteis (MP5) como o brasileiro Dingoo, o problema é achar placas de desenvolvimento com esse SoC e o encapsulamento BGA que torna o projeto das PCB um inferno...

 

 

 

 

Postado

Encontrei um ARM Cortex A13 LQFP 176 pinos (os MIPS que encontrei só estavam disponiveis em BGA), acredito que

esse tenha potência suficiente para emular os consoles, tenha MMU e possa usar memórias ram mais baratas que as SRAMs

 

https://www.alibaba.com/product-detail/Best-Price-A13-LQFP-176-CPU_60677890757.html?spm=a2700.7724838.2017121.19.1cb5c281NMyKNa

Postado

Ja cheguei a começar fazer algo para começar a emular SNES ou Megadriver,mas só fiz a parte de mapas para teste.

Usei um STM32103 a 72 MHZ,mas desistí pois ia acabar reinventando a roda.

Isso foi em 2014.

Minha placa teste ficou desde então parada e deve ter oxidado pois não esta rodando direito mais.

 

  • Curtir 1
Postado

@José Nildo de M. Pereira

6 horas atrás, José Nildo de M. Pereira disse:

Encontrei um ARM Cortex A13 LQFP 176 pinos (os MIPS que encontrei só estavam disponiveis em BGA), acredito que

esse tenha potência suficiente para emular os consoles, tenha MMU e possa usar memórias ram mais baratas que as SRAMs

 

https://www.alibaba.com/product-detail/Best-Price-A13-LQFP-176-CPU_60677890757.html?spm=a2700.7724838.2017121.19.1cb5c281NMyKNa

 

Esqueci das memorias externas, que invariavelmente sendo DDR2 ou DDR3 usarão chips com encapsulamento BGA...

 

Postado

@F4b10

O ARM Cortex A13 aceita memorias SDRAM DDR2 e DDR3 a 533MHz. Seria possivel usar memorias como essas:

 

http://www.alibaba.com/product-detail/memory-NB-DDR-RAM-DDR2-PC6400_60588064861.html?spm=a2700.7724838.2017115.20.1f655a73QNGeCM

 

contanto que elas fossem SDRAM DDR2 ou DDR3? Ou teria que usar especificamente esse fipo de memoria:

 

http://www.alibaba.com/product-detail/H5PS5162GFR-Y5C-512Mb-DDR2-SDRAM_60529362136.html?spm=a2700.7724838.2017115.1.1f655a73QNGeCM

 

(NOTA: As memorias acima sao apenas de exemplo)

Pretendo usar chips com encapsulamento BGA apenas se nao houver outra alternativa, esse cortex a13 me parece bom para o projeto, nao queria ter que procurar um processador diferente por causa da memoria ram, mas se nao tiver jeito, vou ter que procurar um processador que aceite memorias mais faceis de instalar que as no formato BGAs

Postado

@José Nildo de M. Pereira Primeiramente não tem como um chip com encapsulamento de 176 pinos tr linhas o suficiente para controlar um modulo de RAM com 200 ou 240 pinos... depois que as linhas de endereçamento desses SoCs não conseguem acionar mais do que 1 ou 2 chips de RAM diretamente, e o modulo tem 8 ou 16 chips...

 

Não é à toa que se usa encapsulamento BGA nessas memorias, esse tipo de encapsulamento tem menor capacitância parasita entre pinos, menor indutância das trilhas internas, o que permite a operação em frequências mais altas, hoje praticamente qualquer chip que opere acima de 300Mhz ja usa esse tipo de encapsulamento...

  • 2 semanas depois...
Postado

@F4b10 Vi em alguns sites americanos que da pra usar memórias DDR SDRAM em um Cortex M4, sabe me dizer se isso realmente é verdade? E se for, como fazer isso? Tenho 8 chips de 64MBytes dando sopa, pesquisei muito mas essas CPUs da arm e da mips estão um pouco caras, não quero usar placas prontas, vou ter que usar o Cortex M4 mesmo, nem que tenha que tenha que diminuir a lista de consoles para Atari 2600, NES, Master System e Game Boy

Postado

@José Nildo de M. Pereira Controlar chips DDR diretamente sem um hardware do controlador dedicado pode ser um pesadelo, esse tipo de memoria deve seu nome a transferir 2 palavras de dados por ciclo de clock que eu nem sei como seria implementada sem um buffer especial... a temporização tambem é complicada sem falar nas tensões, memorias DDR trabalham com tensões entre 2 e 2.5V enquanto o microprocessador trabalha com 3.3V...

 

Uma alternativa seria memorias SDRAM comuns, também conhecidas como SDR DRAM, são mais faceis de controlar que as DDR, trabalham com 3.3V como as SRAMs e tem um custo mais baixo que as SRAM...

 

Outra alternativa é implementar um controlador de memoria externo com um FPGA pra controlar a memoria DDR e agir como se fosse um chipset...

  • Obrigado 1
Postado

@F4b10 Os FPGAs que encontrei estão um pouco caros, então vou manter os chips DDR aposentados e usar esses SDR DRAM, na minha pesquisa, encontrei uns chips SDRAM de 64Mbits/8MBytes, ao pesquisar no datasheet dele, não encontrei nada relacionado a DDR, somente SDRAM, acho que esses devem ser SDR, se não forem, pode me indicar alguma memoria dessas?

 

Link da memoria que encontrei, e uma Hynix Hy57v64162:

https://produto.mercadolivre.com.br/MLB-762752124-ci-smd-hy57v64162-sdram-64mbits-hynix-_JM

Postado

@José Nildo de M. Pereira Essas memorias do link são SDR SDRAM a denominação SDR é meio que informal e é como ficaram conhecidas praticamente todas as memorias que não são DDRs...

e pela numeração dos chips nas fotos elas podem ter sido recicladas de um modulo SDR PC133 de 133 MHz...

 

Antes de comprar as memorias convém dar uma estudada no datasheet dela pra ver se você tem como programar o microcontrolador, normalmente em assembly, para acessa-la

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...