Diseño de ordenadores Clásicos con FPGAs

Anuncio
Diseño de ordenadores Clásicos
con FPGAs
Gabriel Caffarena Fernández
Enero de 2016
Trayectoria profesional
• Dragon 64
• MSX 2 (Philips)
• Amiga 500
commons.wikimedia.org
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
2
•
•
•
•
•
Motivación
Diseño con FPGAs
Apple2FPGA
Diseño de microprocesadores
Conclusiones y líneas futuras
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
3
•
•
•
•
•
Motivación
Diseño con FPGAs
Apple2FPGA
Diseño de microprocesadores
Conclusiones y líneas futuras
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
4
Motivación
• Emulación hardware de sistemas informáticos
clásicos
• Se consigue emulación cycle-accurate
• Experiencia más realista que la emulación
software
• Preservación histórica
– Documentación técnica: VHDL
– Persistencia en el tiempo
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
5
Motivación
• Se utilizan FPGAs debido a que permiten
implementar indefinidamente sistemas digitales
diferentes
• La implementación debe respetar, en la medida
de lo possible, el sistema original
• Se utiliza la misma frecuencia de reloj
• Se implementan todos los chips del sistema
original (o al menos los principales)
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
6
Motivación
• Los diseños en FPGAs se realizan con los
denominados Lenguajes de Programación
Descripción Hardware
– VHDL
– Verilog
• El código no sólo sirve para implementar el
sistema clásico sino que también permite
transferir a generaciones futuras la
funcionalidad de estos sistemas
– Preservación histórica
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
7
Motivación
• Y por último:
Porque MOLA
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
8
Emulación hardware
• Existen repositorios de microchips en VHDL
– 6502, Z80, 6809, 68000,...
– Código “as it is”
• La lógica de unión entre chips (glue logic) hay
que implementarla en VHDL
– TTL
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
9
Emulación hardware
• La emulación de periféricos presenta los
siguientes retos:
– Se pueden utilizar los periféricos originales
adaptando los interfaces a la placa
– Se pueden emular con tecnología moderna
añadiendo retardos:
floppy  SD-card
teclado  teclado USB/PS-2
• La FPGA requiere memorias externas
– Hay que emular los tiempos de retardo de las
memorias clásicas
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
10
Emulación hardware
• El reloj de sistema no coincide con el de la placa
– Se usa un PLL para generar el reloj con la frecuencia
adecuada
• Audio y video adaptado al de la placa
– 1 bit  24 bits, stereo, etc.
– PAL/NTSC VGA, HDMI
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
11
•
•
•
•
•
Motivación
Diseño con FPGAs
Apple2FPGA
Diseño de microprocesadores
Conclusiones y líneas futuras
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
12
Diseño con FPGAS
Conceptos generales
PCB
MICROCHIP
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
13
Diseño con FPGAS
Conceptos generales
• Circuito impreso (PCB: Printed Circuit Board)
zxuno.speccy.org
• Circuito integrado o microchip (IC: Integrated Circuit)
commons.wikimedia.org
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
14
Conceptos generales
Circuitos integrados (microchips)
• Los microchips están formados por
– Resistencias
– Condensadores
– Dispositivos semiconductores: Transistores
• El transistor es la base de la electrónica
moderna
– Amplificador
– Conmutador binario: 0’s y 1’s  Puertas
lógicas
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
15
Conceptos generales
Circuito integrado ó microchip
• 1971: Intel 4004:
– 2,500 transistores
– “Ancho” de cada transistor: 10 micras
• 2012: Intel Xeon Phi (64 cores)
– 5,000 millones de transistores
– “Ancho” de cada transistor: 22 nanómetros
• Diámetro de un virus
– 10-300 nanómetros
commons.wikimedia.org
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
16
Conceptos generales
Circuito integrado ó microchip
•
2014: Nº de transistores fabricados
250 trillones (250 1018)
•
2014: Nº de transistores fabricados por segundo
8 billones (8 1012)
25 x Estrellas en la vía láctea
75 x Galaxias en el universo conocido
https://www.flickr.com/photos/
nasacommons/
http://spectrum.ieee.org/computing/hardware/transistorproduction-has-reached-astronomical-scales
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
17
Conceptos generales
FPGA vs CPU
• Microprocesador (CPU)
– Sistema basado en software
• Procesamiento genérico
• Reprogramable
– Alto consumo de potencia
• FPGA
– Puede contener cualquier circuito digital
• Procesamiento específico
– Velocidad inferior o superior al micro según la
aplicación
– Consumo de potencia inferior a un uP
– Hardware reconfigurable (“reprogramable”)
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
18
Conceptos generales
FPGA
• Un dispositivo FPGA contiene
– memorias con datos de 1 bit
(LUT: Look-Up Table)
– circuitos de interconexión
• Las memorias implementan
lógica
• Los circuitos de interconexión
conectan las memorias entre sí
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
19
Conceptos generales
FPGA
• Por ejemplo
– c=a and b  c toma el valor ‘1’ sólo si a=‘1’ y b=‘1’
ENTRADAS
a
c
b
a
0
0
1
1
b
0
1
0
1
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
SALIDA
c
0
0
0
1
20
Conceptos generales
FPGA
• Por ejemplo
– c=a and b  c toma el valor ‘1’ sólo si a=‘1’ y b=‘1’
• Se podría implementar con una memoria de 1 bit
con 4 palabras
a
0
0
1
1
b
0
1
0
1
c
0
0
0
1
Dirección
0 (00)
1 (01)
2 (10)
3 (11)
Dato
0
0
0
1
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
21
Conceptos generales
FPGA
• LUTs en la FPGA (Altera Cyclone IV)
LUT
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
22
Conceptos generales
FPGA
• Las memorias (LUTs) utilizan entre 4 y 6 bits
para el bus de direcciones
• Permiten implementar cualquier función lógica
de entre 4 y 6 entradas
• Las funciones lógicas son la base de todos los
sitemas digitales
• Por ejemplo, dispositivos de la familia Virtex-6 de
Xilinx tienen entre 46,000 y 354,000 LUTs
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
23
Diseño con FPGAs
Demo 1 (¡por fin!):
• Apple ][
• Efectos de audio en tiempo real
¡A tan solo un click!
(y muchas horas de diseño y cacharreo…)
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
24
Diseño con FPGAs
• El diseño a mano es inviable
• El diseño con FPGAs se hace mediante
software de desarrollo para FPGAs
• El diseñador se encarga de definir las funciones
lógicas
• Las herramientas de desarrollo
– Optimizan las funciones lógicas
– “Reparten” la lógica entre las LUTs disponibles
– Interconectan las LUTs
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
25
Diseño con FPGAs
• La FPGA forma parte de una placa y convive con
–
–
–
–
–
Chip de video/audio
Memorias
Controladores de comunicaciones: USB, PCI-e, Ethernet, etc.
Pulsadores, conmutadores, LEDs, etc.
Display 7-segmentos, display LCD, etc.
altera.com
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
26
Diseño con FPGAs
• Para implementar sistemas retro hay que buscar unas
características mínimas en la placa:
– Salida VGA (HDMI)
– Puertos para teclado, ratón (PS2), GPIO (joystick, etc.)
– Entrada/Salida de audio
• Hay que introducir adaptadores entre la tecnología retro y
la tecnología de la placa
–
–
–
–
Convertir PAL/NTSC a VGA
Convertir audio de 1/4/8 bits a 12/16 bits
Convertir PS/2 a interfaz propio
Etc.
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
27
Diseño con FPGAs
• Hay que saber qué está conectado a los pines de la
FPGA
– los pines de los demás chips
– los puertos de entrada/salida
• También puede ser interesante utilizar recursos que
no pertenecen al sistema retro original
– Se pueden usar los displays y LEDs para depurar el
sistema
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
28
Diseño con FPGAs
• Resumiendo
– Bloques generales pertenecientes al sistema original: CPU, video,
controlador de periféricos, etc.
– Bloques adaptadores propios de la placa
– Bloques de E/S para depurar el desarrollo
FPGA
Top-level (VHDL)
Adaptador audio
Apple2
• 6502
• Generador señales
• ROM
• Audio
• Video
• I/O
Adaptador VGA
Adaptador Disco
Adaptador Gameport
Adaptador Keyboard
Adaptador DRAM
Chips & I/O placa
• Audio
• VGA
• Pulsadores
• Conmutadores
PINES • LEDs
• Displays
• SRAM
Interfaz I/O depuración
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
29
Diseño con FPGAs
Fases
• Entrada de diseño
• Compilación/Síntesis
• Simulación funcional
•
•
•
•
 VHDL
 Puertas/LUTs
 0’s y 1’s
Patrones de E/S
Asignación de pines
Mapping y Place&Route  Recursos FPGA
Simulación con retardos  Más realista
“Programación”
 ¡A jugar!
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
30
Diseño con FPGAs
Fases: Simulación
E
N
T
R
A
D
A
S
S
A
L
I
D
A
S
TIEMPO
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
31
Diseño con FPGAs
Fases
• Mapping y Place&Route
– Se asignan funciones lógicas a las LUTs
– Placement: Se eligen las LUTs concretas de la FPGA que se van a
usar
– Routing: Se interconectan las LUTs
• Simulación temporal
– Se simula el sistema ya rutado
• Programación
– Se configura la FPGA con el circuito
– Se utiliza el puerto USB para enviar la información a la FPGA:
• Directamente al dispositivo (se borra tras apagar)
• Se almacena en una EPROM que se lee tras encender el sistema
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
32
Diseño con FPGAs
Ejemplo 1: LED
• Objetivo: Encender un LED si se pulsan dos botones
• Primera aproximación:
• ¿Hay varios pulsadores y LEDs?¿Cuáles son los pines?
Manual de usuario de
• ¿Al pulsa se genera un ‘1’?
la placa
• ¿Se enciende el LED con ‘1’?
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
33
Diseño con FPGAs
Ejemplo 1: LED
• Usamos la placa DE2-115
• Hay 4 pulsadores y varios LEDs
– Elegimos los pulsadores KEY0 y KEY1
– Elegimos el LEDG0
• Conexión y comportamiento de los pines
– Los pines de KEY0 y KEY1 son el M23 y el M21
– Al pulsar generan un ‘0’
– El pin del LEDG0 es el E21 y se enciende con un ‘1’
• Con todo esto al final habría que implementar
LEDG0 = (NOT KEY0) AND (NOT KEY1)
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
34
Diseño con FPGAs
Ejemplo 1: LED
PLACA DE2-115
KEY0
FPGA
LUT
LEDG0
KEY1
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
35
Diseño con FPGAs: VHDL
•
Los módulos contienen un circuito con entradas y salidas
•
Es habitual que cada módulo se defina en un fichero independiente
•
Un módulo puede contener en su interior otros módulos: jerarquía
•
Los módulos se definen mediante entidades (entity)
•
El puerto (port) de la entidad define las entradas y salidas
•
La arquitectura (architecture) describe la funcionalidad del circuito:
– Funciones lógicas y módulos
– Señales (cables)
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
36
Diseño con FPGAs: VHDL
VHDL:
library IEEE;
Library: Declara las librerías que se van a
use IEEE.STD_LOGIC_1164.all;
utilizar
Entity: Declara las entradas y salidas al
ENTITY led IS
PORT(key0, key1: IN STD_LOGIC;
ledg0: OUT STD_LOGIC);
módulo
STD_LOGIC es el tipo asociado a señales
binarias
END;
Architecture: Describe qué hace el módulo
ARCHITECTURE ejemplo1 OF led IS
BEGIN
ledg0 <= (NOT key0) AND (NOT key1);
END;
Se recomienda utilizar paréntesis para que
el orden de operaciones no sea ambiguo.
La asignación se realiza mediante el
operador <=
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
37
Diseño con FPGAs
Demo 2:
• LED y pulsadores
¡Increible! ¡Se enciende el LED¡
(¡Un paloooo, un paloooo…!)
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
38
Diseño con FPGAs: VHDL
Decodificadores
•
También podemos expresar una función lógica directamente con una
tabla (tabla de verdad)
•
A esto le llamamos decodificador
•
Aprovechamos para introducir el concepto de proceso
•
La arquitectura de una entidad puede tener varios procesos que se
comunican entre sí
•
Debemos ver cada proceso como un circuito
•
Los procesos trabajan en paralelo
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
39
Diseño con FPGAs
Ejemplo 2: Decodificador
• Objetivo: Mostrar en un display de 7 segmentos el valor
hexadecimal de un número binario de 4 bits
• Usamos 4 conmutadores de los 18 que hay
• Usamos 1 display de los 8 que hay
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
40
Diseño con FPGAs: VHDL
Ejemplo 2: Decodificadores
library IEEE; use IEEE-STD_LOGIC_1164.all
ENTITY decod7 IS
PORT ( bin: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
seg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END;
ARCHITECTURE ej2 OF decod7 IS
BEGIN
-- formato: gfedcba
PROCESS(bin) BEGIN
CASE bin IS
WHEN X”0”
WHEN X”1”
...
WHEN X”F”
WHEN others
END CASE;
END PROCESS;
END;
=> seg <=“1111110”;
=> seg <=“110000”;
=> seg <=“1000111”;
=> seg <=“0000000”;
Digital Design and Computer
Architecture, Harris&Harris
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
41
Diseño con FPGAs: VHDL
Máquinas de estado
•
Las máquinas de estado permiten realizar tareas secuenciales
•
Necesitamos un registro que almacene el estado
– Reloj: cuando pasa de ‘0’ a ‘1’ se almacena el nuevo estado
– Reset: cuando se activa el registro contiene el estado inicial
•
El reloj marca la velocidad a la que puede cambiar el estado
•
El reloj marca la velocidad a la que pueden fluir los datos
Reloj
Estado
próximo
Entradas
Estado
actual
Salidas
Reset
Cálculo del
Próximo estado
Registro
de estado
Cálculo del valor
de las salidas
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
Digital Design and Computer
Architecture, Harris&Harris
42
Diseño con FPGAs: VHDL
Máquinas de estado
•
3 bloques  3 procesos
– Registro de estado
– Lógica de próximo estado
– Lógica de salida
Reloj
Estado
próximo
Entradas
Estado
actual
Salidas
Reset
Cálculo del
Próximo estado
Registro
de estado
Cálculo del valor
de las salidas
Digital Design and Computer
Architecture, Harris&Harris
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
43
Diseño con FPGAs
Ejemplo 3: Máquina de estados
• Objetivo: Encender un LED cuando se pulse la secuencia:
KEY0KEY2KEY1
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
44
Diseño con FPGAs
Ejemplo 3: Máquina de estados
library IEEE; use IEEE.STD_LOGIC_1164.all
entity tres is
port ( clk, reset: in STD_LOGIC;
key0,key1,key2: in STD_LOGIC;
ledg0:
out STD_LOGIC);
end;
architecture retro of tres is
type tipoestado is (wait0, wait2,wait1,led);
signal estado, prox_estado: tipoestado;
begin
-- registro de estado
process(clk, reset) begin
if reset=‘1’ then
estado <= wait0;
elsif RISING_EDGE(clk) then
estado<=prox_estado;
end if;
end process;
...
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
Digital Design and Computer
Architecture, Harris&Harris
45
Diseño con FPGAs
Ejemplo 3: Máquina de estados
...
-- lógica de próximo estado
process (estado, key0, key1, key2) begin
case estado is
when wait0 => if key0=‘0’ then
prox_estado <= wait2;
else prox_estado <= wait0;
end if;
when wait2 => if key2=‘0’ then
prox_estado <= wait1;
else prox_estado <= wait2;
end if;
when wait1 => if key1=‘0’ then
prox_estado <= led;
else prox_estado <= wait1;
end if;
when led =>
prox_estado <= led;
end case;
end process;
...
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
46
Diseño con FPGAs
Ejemplo 3: Máquina de estados
...
-- lógica de salida
process (estado) begin
if (estado=led) then
LEDG0 <= ‘1’;
else
LEDG0 <=‘0’;
end if;
end process;
end;
-- fin de la arquitectura
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
47
apple2fpga
Demo 3: VGA
Código modificado a partir de un proyecto de Scott Larson
https://eewiki.net/pages/viewpage.action?pageId=15925278
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
48
•
•
•
•
•
Motivación
Diseño con FPGAs
Apple2FPGA
Diseño de microprocesadores
Conclusiones y líneas futuras
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
49
6502
• Chuck Peddle: padre del PC
– Estaba en el grupo que diseñó el Motorola 6800
– Quiso realizar una CPU más simple y más barata
– Se incorporó en 1974 a la empresa MOS
Technology para llevar a cabo su Proyecto
• Desarrollo del 6502
–
–
–
–
–
Equipo compuesto por 9 personas
1975: Primer diseño funcional
commons.wikimedia.org
Diseño “manual”
La leyenda dice que funcionó a la primera
Consiguieron un yield del 70% (lo habitual era 30%)
150$ Motorola 6800  25$ MOS 6502
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
50
6502
visual6502.org
•
•
•
•
3500 transistores
6 diagramas diferentes superpuestos
Regla de metal y calcetines nuevos
Bill Mench = Genio del layout
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
51
6502
• Sinergia
–
–
–
–
–
–
Apple II
1975: Creación del 6502
1975: Homebrew Computer Club
1975: Wescon: venta a “hackers”
1975: Contrato con Atari
1976: Demo Apple I en HBC
1976: Commodore Int. adquiere MOS Technology
Commodore 64
Atari 2600
Futurama: Episodio “Fry y la fábrica de Slurm”
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
52
Los dos Steves: Wozniak
•
•
•
•
•
Aficionado a la electrónica desde pequeño
Premio sobre proyecto de electrónica en el colegio
Diseñaba ordenadores y compiladores en papel
Convencido de la importancia de reducir el coste
1970: Cream Soda Computer (256 bytes de RAM)
– Trabajó como programador para conseguir los componentes
• Aficionado a gastar bromas: llamadas telefónicas,
inhibidor de televisión, etc.
• 1971: Conoce a Steve Jobs
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
53
Los dos Steves: Jobs
•
•
•
•
•
•
Aficionado a la electrónica desde pequeño
Conseguía componentes gratis
Trabajó ya en el instituto en Hewlet-packard
Tendía a seguir sus propias normas
Amigo de “experimentar”
Aficionado a gastar bromas
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
54
Los dos Steves: Wozniak+Jobs
• Construyen y venden la “blue box”
• 1973: Woz trabaja para HP diseñando calculadoras
– Queda fascinado con el juego Pong de Atari
• 1974: Jobs trabaja para Atari
• 1975: Jobs pide ayuda a Woz para diseñar una
versión de Pong para 1 jugador de bajo coste
(Breakout)
– Versión de Atari (Acorn): 100 chips
– Vesión de Wozniak: 45 chips
• 1975: Woz compra varios 6502 en WESCON…
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
55
Apple ][
• Se crea en 1977 y es la evolución del Apple I de
– Apple I: MOS 6502 1 MHz
4K RAM, 256 bytes de ROM
40x24 caracteres
– Apple II: MOS 6502 1 MHz
4-48K RAM, 12 KB ROM (BASIC)
40x24 caracteres
40 x 48 x 16 colores
280 x 192 x 6 colores
Admite unidad de disco 5 1/4
• Énfasis en video a color, BASIC y periféricos
• Fue Jobs quién se “empeñó” en comercializarlo
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
commons.wikimedia.org
56
Apple ][
• Se basa en la patente
– “Microcomputer for use
with video display”, US
patent 4.136.359, Enero
1979
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
57
Apple ][+
•
•
•
•
•
•
Mejora del Apple II puesta en el mercado en 1979
16,32 ó 48 K de RAM
BASIC con coma flotante
Arranque desde disco
Gran éxito comercial
Apple siguió produciendo nuevas versiones del
Apple II y hardware hasta 1993
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
58
Apple2FPGA
• Iniciativa de Steve A. Edwards de
la Universidad de Columbia
• Placa DE2
• Todos los chips, salvo la RAM en
una única FPGA
• Consumo Apple][ : 20-30 W
• Consumo DE2:
5W
http://www.cs.columbia.edu/~sedwards/apple2fpga/
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
59
Diagrama de bloques
14 MHz
2 MHz
1 MHz
http://www.cs.columbia.edu/~sedwards/
papers/edwards2009retrocomputing.pdf
60
Generador de señales de temporización
61
Generador de señales de
temporización
http://www.cs.columbia.edu/~sedwards/
papers/edwards2009retrocomputing.pdf
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
62
Generador de señales de
¡PLL!
temporización
http://www.cs.columbia.edu/~sedwards/
papers/edwards2009retrocomputing.pdf
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
63
Generador de video
64
Generador de vídeo
•
•
•
•
Texto: 40x24 B/W
Gráfico “lores”: 40x48, 15 colores
Gráfico “hires”: 140x280, 6 colores
NTSC: se codifica en binario los colores
con 4 bits
• Necesitamos convertir de NTSC a VGA
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
65
Generador de vídeo
http://www.cs.columbia.edu/~sedwards/
papers/edwards2009retrocomputing.pdf
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
66
Generador de vídeo
FPGA
Generador de Vídeo
Adaptador VGA
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
VGA
Monitor
67
Teclado y puerto de juegos
Teclado PS/2
3 Botones del
joystick
68
Disco 5 1/4
SD/CARD
69
Disco 5 1/4
6502
Interfaz
Disk II
Adaptador SD/CARD
(SPI)
SD-CARD
Última versión creada por
Michel Stempin
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
70
Disco 5 1/4
• El control de la disquetera era software
• Los datos se recibían codificados y había
que decodificarlos mediante SW
• Se accede a la SD/CARD mediante el
protocolo serie SPI
• Se evita formatear la SD/CARD se usa el
formato .nib  dsk2nib.exe
• Se emula el cambio de disco con los
conmutadores de la placa
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
71
Disco 5 1/4
Demo: Varios discos en una SD-CARD
0 – Apple DOS
1 – Lode Runner
2 – Mario Bros
3 – Moon Patrol
4–…
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
72
Audio
FPGA
6502
Flip-flop
1-bit
Adaptador Audio
(I2C)
CODEC
Audio
Altavoz
32-bit, Estéreo
Hasta 96 Ksps
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
73
ROM
• Copyright de apple
• Se incluye una “fake ROM” que muestra
un mensaje y hace un par de demos
gráficas
• La ROM está dentro de la FPGA
• Se incluye una aplicación para convertir la
ROM en VHDL
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
74
RAM
FPGA
6502
Adaptador
DRAMSRAM
48 KB
SRAM
1-2 MB
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
75
Implementación final
FPGA
Top-level (VHDL)
Adaptador audio
Apple2
Adaptador VGA
• 6502
• Generador señales
• ROM
• Audio
• Video
•I/O
Adaptador Disco
Chips & I/O placa
Adaptador Gameport
Adaptador Keyboard
PINES
Adaptador DRAM
• Audio
• VGA
• Pulsadores
• Conmutadores
• LEDs
• Displays
• SRAM
Interfaz I/O depuración
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
76
Implementación final
ROM
6502
Controlador
SD/CARD
(SPI)
77
apple2fpga
Demo: Echemos un vistazo al código VHDL
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
78
Joystick
• Originalmente Woz pensó en utilizar paddle analógicos
basados en un potenciómetro
• Dentro del Apple ][ había un 558 que actuaba en modo
monoestable (one shot)
• La resistencia que presenta el paddle hace variar el
tiempo que está la salida del 558 activa
ESCRITURA EN xC070
PADDLE
LECTURA EN Xc064, xC065, …
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
79
Joystick
• Al leerse la dirección xC070
– Se genera la señal de trigger que activa los 4 monoestables del 558
– Se activan 4 salidas del 558
– El tiempo de ON de cada salida depende del estado de cada paddle
(potenciómetro)
• Mediante una rutina software se comprueba cuánto tiempo
tarda cada paddle de forma independiente en pasar a ‘0’
• Los tiempos oscilan entre 2,2 secs y 3.3 ms para
potenciómetros de 150 K
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
80
Joystick
• Emulamos el joystick mediante un circuito digital
• Cada paddle se asocia con dos botones del joystick
– Si se pulsa el botón A (left o up) se genera un pulso corto
– Si se pulsa el botón B (right o down) se genera un pulso largo
– Si no se pulsa ninguno se genera un pulso intermedio
• Los pulsos se hacen con contadores
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
81
Joystick
DEMO:
• Juguemos un poco
• VHDL
• ¿Qué ocurre con juegos tipo Pong?
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
82
•
•
•
•
•
Motivación
Diseño con FPGAs
Apple2FPGA
Diseño de microprocesadores
Conclusiones y líneas futuras
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
83
6502
Demo: Echemos un vistazo al código VHDL
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
84
•
•
•
•
•
Motivación
Diseño con FPGAs
Apple2FPGA
Diseño de microprocesadores
Conclusiones y líneas futuras
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
85
Conclusiones
• Dominar VHDL
• Conocer muy bien el esquemático del microordenador
• Conocer muy bien la placa concreta que se va a usar
• Apple2FPGA:
– Mejorar gameport: similar paddle con potenciometro
¿Es possible?
– Mejorar disco: escritura
• Líneas futuras
– Crear foro para poder adaptar implementaciones a un surtido de
placa  adaptadores
– Diseño de HW para utilizar los periféricos originales
– Emulación de CRT en pantallas modernas
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
86
Referencias
•
Apple2FPGA, DE2
http://www.cs.columbia.edu/~sedwards/apple2fpga/
•
Apple2FPGA en DE2-115
http://biolab.uspceu.com/~gabriel/retro.htm
•
Retrocomputing on an FPGA: Reconstructing an 80's-Era Home
Computer with Programmable Logic, Steve A. Edwards
http://www.cs.columbia.edu/~sedwards/papers/edwards2009retrocomputing.pdf
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
87
Referencias
•
The Apple II Circuit Description. Howard W. Sams & Co
http://mirrors.apple2.org.za
•
Sophistication & Simplicity: The Life & Times of the Apple II
Computer. Steven Weyhrich
http://apple2history.org/book/
•
Commodore: a company on the edge
http://variantpress.com/books/commodore-a-company-on-the-edge/
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
88
Referencias
•
http://www.altera.com (Software: Quartus II Web Edition)
•
http://www.xilinx.com (Software: ISE WePACK)
•
http://www.fpga4fun.com
•
Cheap FPGA boards
https://joelw.id.au/FPGA/CheapFPGADevelopmentBoards
•
http://zxuno.speccy.org/
•
http://www.visual6502.org
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
89
Referencias
•
Digital Design & Computer Architectura, D. Harris, S. Harris, 2012,
Morgan Kaufman
•
The student’s guide to VHDL, P.J. Ashenden, 2008, Morgan
Kaufman
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
90
THANKS!
• Universidad San Pablo CEU
• Altera Inc.
• Steve Edwards (apple2fpga)
• Michel Stempin (apple2fgpa/sdcard)
• Peter Wendrich (FPGA-64/cpu6502.vhd)
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
91
THANKS!
• BenKenobi
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
92
gacaffe@gmail.com
@gacaffe
Diseño de ordenadores clásicos con FPGAs
Gabriel Caffarena - Enero 2016
93
Descargar