Bem-vindos à edição 42 do Repórter Retro, contendo a resposta para a vida, o universo e tudo o mais.
Links do podcast
- 35 anos do Projeto GNU
- TIM – não a operadora, mas um computador de relés
- TIny, recriando o TI-99
- Programar para a Web em BASIC clássico. Aí sim eu vi vantagem.
- Um teclado moderno… com teclas do Commodore 64
- Aprenda Verilog sem sair do seu navegador modernoso
- O melhor computador da Apple (opinião do autor do post no Hackaday) alcança o paraíso do Wi-Fi
- Consertando a impressora de um IBM 1401 (ou: se tem uma coisa que NÃO mudou é impressora ferrando a parada toda)
- Como programaram o EDSAC
- Perifratic salva uma light pen – e, no caminho, explica como elas funcionam
- RetroManCave recupera um Amiga 1500
- AkBKukU restaura um Sharp PC-7000
- Adrian Black ganha um C64C que ficou ao relento por 10 anos e…
- Enquanto isso, na casa do xAD…
- Mattel Intellivision com GSOD
- Myarc Geneve 9640 (nunca ouviu falar? basicamente, é um kit de “upgrade” para o TI-99 com um V9938)
- O momento dos AGORA VAI:
- A produção em massa do ZX Spectrum Next
- Novo batch do Powergraph Lite
- Rafael Rigues restaurando cartuchos de Atari 2600
- Enquanto isso, no nosso grupo do Facebook…
- Marcelo Cabral tirando o pó e publicando códigos de seus programas: aqui, aqui e aqui.
- Mauro Xavier fazendo mod de vídeo componente para Hotbit
- Emilio Aoi terminando de montar um kit que vinha junto de um curso de eletrônica digital do CEDM
Música de fundo
Músicas que NÃO são a resposta para a vida, o universo e tudo o mais.
Outras formas de ouvir
Não se esqueça de deixar seu comentário aí embaixo; afinal, seu comentário é o nosso salário. No entanto, caso você prefira, entre diretamente em contato conosco.
Podcast: Play in new window | Download
Assine: RSS
FPGA é emulação de chip utilizando blocos lógicos físicos e como eles interagem entre si, normalmente utilizado para prototipagem, ou: FPGA È EMULAÇÃO! Kkkkk tenham um bom dia 🙂
Isso rende uma discussão… Mas no futuro pretendemos responder essa pergunta de forma definitiva, se FPGA é ou não é emulação. Eu sei que não é, mas precisamos de alguém mais gabaritado para embasar a explicação. Aguardemmmmmm…
Tenho feito projetos com FPGA desde 1986 e de circuitos integrados dedicados desde 1990. Não é possível ter uma discussão produtiva sem primeiro definir os termos usados. Seguem minhas definições:
Simulação: é um sistema cujo comportamento tem analogias com o comportamento de outro sistema. Numa simulação do Sistema Solar, por exemplo, a relação das distâncias dos pontinhos na tela é a mesma relação das distâncias dos planetas apesar das distâncias em si serem centímetros num caso e milhões de kilômetros no outro. As relações dos tempos de orbita também são as mesmos apesar de serem medidos em segundos num caso e anos ou décadas no outro.
Emulação: é uma simulação que pode ser usada no lugar do sistema sendo simulado. O processador A20 do C64 Mini rodando um software faz as imagens dos jogos aparecerem na tela da televisão de maneira tão parecida com o Commodore 64 original que dá para nos divertirmos com estes jogos (apesar da maior latência entre o movimento de uma tecla ou joystick e o efeito na imagem).
Reimplementação: é uma emulação cuja organização interna é igual à do original. Tem os mesmos subcomponentes ligados do mesmo modo. Note que cada subcomponente, por sua vez, pode também ser uma reimplementação ou ser uma simples emulação.
Imagine que estou construindo um novo Apple I. Talvez seja mais fácil eu usar um 74HC00 onde o Woz usou um 74LS00. Pelas minhas definições acima, o primeiro componente é uma emulação do segundo. Usa transistores NMOS e PMOS no lugar de resistores, diodos e transistores bipolares. Mas o Apple I em si pode ser considerado uma reimplementação e não uma simples emulação. Já se eu trocar a parte de vídeo e seus “shift registers” por um ATMega rodando software isso é um caso claro de emulação. Como classificar o projeto como um todo?
FPGAs podem ser usadas para emulações ou reimplementações ou soluções mistas. Cada caso é diferente e é bem complicado saber qual é qual. Um processador Z80 para FPGA pode parecer uma reimplementação, mas se usa uma ULA de 8 bits no lugar da de 4 bits do chip original então não é uma reimplementação exata. Por outro lado, dizer que “é só uma emulação” não descreve bem a situação.
Essa foi uma das explanações mais completas e sucintas em língua portuguesa sobre o assunto que já vi, concordo absolutamente com seu ponto de vista sobre simulação, emulação e como isso se encaixa no FPGA, valeu a pena eu incitar o caos com meu comentário levemente provocativo.
Tenham uma boa noite ?
O povo do Whats está migrando essa discussão sem fim pra cá? Dios mio…
Cruzes! Grupo de zapzap é ambiente de droga! 😀
Taí uma questão polêmica! E como toda boa questão polêmica não existe consenso na(s) sua(s) resposta(s); mas mesmo assim vou dar minha humilde contribuição na condição de um interessado pelo tema e suas possibilidades, usuário de um dispositivo retrocomputacional baseado em FPGA mas que pessoalmente nunca projetou nada com base nesta tecnologia.
Pessoalmente acredito que toda esta celeuma em torno do uso do FPGA na recriação de computadores e videogames clássicos nasce de uma certa “confusão” conceitual/filosófica entre conceitos como potêncialidade (disponibilidade TEÓRICA de recursos e ou capacidades) e os resultados alcançados (prática). Teoricamente qualquer circuito digital, de uma simples porta lógica (operação booleana) até algo extremamente complexo como CPU’s e mesmo todo aquele computador ou videogame clássico pode ser recriado com esta tecnologia e (teoricamente) poderia-se esperar um comportamento idêntico ao do original (relação entre entradas e saídas nos circuitos individuais constituintes, bem como na totalidade do sistema) mas, embora teoricamente possível nem sempre esta fidelidade é conseguida….então seria isto uma forma de emulação? NÃO E NÃO!! O que tem-se visto com certa frequência é que os projetistas responsáveis pelas reimplementações destas máquinas clássicas esbarram sempre no problema da falta de documentação técnica (datasheets, esquemas, diagramas de funcionamento, etc) sobre os componentes individuais destas máquinas e sem estas informações a “modelagem” acaba sendo bastante comprometida pois o que poderia (em teoria) ser uma cópia virtual de todo o diagrama lógico de funcionamento da máquina, passo à passo, bit por bit exatamente nos mesmos tempos e nos mesmos paralelismos originais acaba se tornando uma amalgama de partes (blocos) perfeitamente idênticos misturados com partes “contaminadas” (suposições alcançadas através da observação empirica dos componentes do sistema) e é justamente essa a razão pela qual muitas destas reimplementações acabam não tendo um comportamento absolutamente idêntico ao original (ainda que muitas vezes imperceptíveis aos sentidos humanos). Desta forma, por principio, uma reimplementação de uma máquina clássica feita em FPGA NÃO é uma emulação mas quanto ao grau de fidelidade, poderá ser 100% fiel (idêntica) ou não em função da qualidade da modelagem do original no meio FPGA e esta qualidade está relacionada diretamente com a quantidade e a qualidade das informações técnicas disponíveis acerca do funcionamento de cada componente individual (datasheets) bem como de suas interelações (esquemas e diagramas lógicos). Então máquinas clássicas podem, em teoria, ter uma nova “encarnação” dentro de um simples “chip” FPGA, e por definição, serem exatamente a mesma máquina (comportamento) ainda que numa apresentação física/cosmética distinta, contudo, na prática, a reimplementação poderá (bastante raro) ou não ser 100% fiel ao original mas nunca uma emulação!
Nem sempre é possível dizer se algo é uma emulação ou recriação apesar de nos casos extremos ser bem óbvio. Se um novo Apple I tem o mesmo layout de placa, então é uma reimplementação bem fiel. Já se usa uma RAM estática relativamente moderna no lugar das DRAMs originais, eu chamaria isso de reimplementação pouco fiel. Fazendo mais a mais alterações chega num ponto onde eu usaria o termo “emulação”. No extremo de algo tão diferente quanto um processador ARM rodando um software que simula um Apple I acho que todos concordamos que emulação.
Todas estas alternativas são possíveis numa FPGA. Posso implementar um Apple I nela onde as memórias são as Block RAMs mas boa parte da lógica usa módulos equivalentes aos TTLs ligados da mesma forma que o original. Esta seria uma reimplementação não tão fiel da parte do computador, mas ao mesmo tempo posso implementar a parte do terminal como um processador Nios II rodando um programa, o que é claramente emulação apesar de ser em FPGA.
Tudo isso vale para circuitos integrados também (tem pessoas que chamariam de “circuito de verdade” um ASIC com extamente o mesmo projeto que chamariam de “emulador” numa FPGA). Compare a parte de vídeo do DTV com o VIC II do Commodore 64, por exemplo.
Deixando um pouco de lado estas questões sobre o que é ou não é emulação, reimplementação, etc. Gostaria de saber sua opinião, pela sua experiência com desenvolvimento em FPGA, se esta abordagem teria atingido o seu limite do que é possível implementar, ou melhor “viável”, em termos de computadores e videogames clássicos? Pergunto isto pois acompanho a dificuldade que alguns projetistas vem enfrentado já há alguns anos para conseguir reimplementar fielmente o chipset “AGA” da família da computadores “Amiga”; e isso num esforço colaborativo envolvendo inúmeros e experientes projetistas com bastante experiência com esta tecnologia! Por aí dá para se ter uma noção de como a tarefa de reimplementar uma tecnologia antiga se torna mais dificultosa e vai tomando muito mais tempo de acordo com a evolução da tecnologia ia ocorrendo nos computadores e videogames no decorrer do tempo. Se já está sendo extremamente mais difícil e demorado reimplementar uma tecnologia (AGA) do que ocorreu com suas predecessora (OCS, ECS) apenas alguns pouco anos posterior, dá para imaginar por aí que seria virtualmente impossível reimplementar máquinas somente um pouco mais recentes como um playstation 1 ou Xbox, obviamente nem vou mencionar as gerações subsequentes. Isso estaria mostrando que o limite do que é possível fazer, em termos de reimplementação de máquinas clássicas, teria sido atingido ou ao menos estaria bem próximo de ser atingido? Isto supondo que os fabricantes destas máquinas e/ou detentores das propriedades intelectuais sobre os circuitos, componentes e projeto destes sistemas (software e hardware) continuem com a prática vigente de não divulgar informações técnicas sobre o funcionamento interno dos seus sistemas e seus componentes, o que poderia mudar radicalmente esta situação e fomentar a preservação de suas tecnologias para o futuro mas claro que isto esbarraria com questões de propriedade intelectual e licenciamentos que são inerentes ao ambiente corporativo e dificilmente seriam deixadas de lado…
Lazlo, realmente a dificuldade de se fazer engenharia reversa aumenta muito quanto mais recente for o equipamento.
Meu pai não constumava comprar nenhum aparelho eletrônica que não tivesse esquemas detalhados (ou como parte do produto ou como compra opcional). Os Apple II e IBM PC, XT e AT antendiam a este tipo de cliente. O último produto para o qual meu pai conseguiu isso foi o monitor Multisync da NEC. Depois disso só folhetos cada vez mais finos e vagos.
Ao mesmo tempo a Lei de Moore permitiu projetos cada vez mais complexos. A engenharia reversa de algo com centenas de transistores vai ser mais fácil do que algo com bilhões de transistores.
Estes dois fatores juntos multiplicam a dificuldade.
Desenhei parte da PPI MSX em flip-flop HCMOS, a porta 0A8h funciona, mas a porta de modo não reprograma nem ela nem a 0A9h, evitando tentativas de vírus danificar o circuito de teclagem.
Estarei emulando? O modo bit, não pretendo incorporar: é exigência que funcione igual ao intel? Porque ASIC é comparado com FPGA se o objetivo é produção em massa sem o compromisso de redesenho mais eficiente?
Abra-se a porta a artigo focado no design, afinal dá pra fazer GateArray até com os TTL 74156 !