ZPUino er en 32-bits prosessor som kjorer pa 100Mhz med et bibliotek av Wishbone-periferiutstyr. Alt styres av en skisse og enkle Arduino stilbiblioteker. Det er en Arduino-kompatibel myk prosessor pa steroider!

ZPUino er ZPU-softprosessoren tilpasset for bruk med Arduino IDE, og den ble utviklet av Alvaro Lopes.

Hurtigkoblinger.

Operativsystemer.

Maskinvare denne veiledningen gjelder for:

ZPUino Teknisk Oversikt.

32-bits myk prosessor kjorer pa 96Mhz. Bruker en modifisert versjon av Arduino IDE for a laste inn skisser. Wishbone-buss for tilkobling av eksterne enheter som folgende: Commodore 64 SID Audio Chip YM2149 Audio Chip POKEY Audion Chip AudioMixer ZX Spectrum VGA HQVGA med 8-bits farge UART GPIO SPI I2C SigmaDelta DAC Aktivt vedlikeholdt og utviklet av Alvaro Lopes. For a l re mer, besok: http://www.alvie.com/zpuino eller les den tekniske veiledningen.

L r mer tekniske detaljer om ZPUino ved a lese ZPUino Technical Reference.

ZPUINO System Pa Chip.

ZPUino er ment a gjore det enkelt a lage System on Chip FPGA-design ved a legge til Wishbone Peripherals til ZPUino Wishbone-sporene. RetroCade Synth er et eksempel pa et ZPUino system pa Chip design.

Se denne presentasjonen for a l re de nitty gritty detaljene til RetroCades internals.

ZPUino Bootloader.

ZPUino Variants.

Last opp til RAM.

ZPUino referanse.

Papilio bruker en «Wing» nummerering ordningen som gjor at topptekstene enkelt kan grupperes i 16 eller 8 bit Wing Slots.

16 Bit Wing Slots.

Hver 16-bits vingespor er betegnet med brev. Papilio One har tre 16-bits Wing Slots som er utpekt som WA, WB og WC.

8 Bit Wing Slots.

Hver 16 Bit Wing-spor kan deles inn i to 8-bits Wing Slots ved a skille dem inn i en ovre og nedre del. Wing Slot A kan brytes ned i WAL og WAH, B til WBL og WBH, og C inn i WCL og WCH.

Blink pin 4 pa AH som ogsa er A12 eller 12.

Arduino nummerering.

Pins kan ogsa adresseres ved a bruke standard Arduino konvensjonen ved a bruke et tall.

Eksempel skisse ved hjelp av Arduino referanse.

PPS (Perifer Pin Select)

ZPUino inneholder en funksjon som kalles Perifer Pin Select (kort sagt, PPS). Med PPS kan du kartlegge hver enhetens inngangs- eller utgangsstift (for eksempel SPI-klokke og SPI-datalinjer) til hver enkelt PIN-kode (GPIO), slik at du ikke krever at du utforer syntese og P & R hver gang du vil bruke en enhet pa en diff erent IO pin.

For a finne ut hvilke PPS-pinner som er tilgjengelige i ZPUino-varianten, ta en titt pa PPS-delen for varianten din. For eksempel, her er alle PPS-pinnene tilgjengelige for Hyperion-varianten.

For a forenkle ting, leveres tre metoder for a manipulere PPS:

void outputPinForFunction & # 40; usignert int pin, usignert int funksjon & # 41; ;

void inputPinForFunction & # 40; usignert int pin, usignert int funksjon & # 41; ;

Det finnes tre registerblokker for a konfigurere hvordan valget av pin er gjort.

Omdirigere utgang.

For a styre en hvilken som helst perifer utgang til en GPIO-pin, ma du:

Konfigurere GPIO-pin som utgang Aktiver PPS pa valgt GPIO-pin Konfigurasjon GPIOPPSOUT (outputPinForFunction) til perifert signal.

Folgende eksempel kartlegger Sigma Delta 1 kanal i GPIO pin nummer 30:

// Konfigurer pin som utgang.

// aktiver PPS pa denne pin.

// Kart SigmaDelta kanal 1 til pin 30.

outputPinForFunction & # 40; 30, IOPIN_SIGMADELTA1 & # 41; ;

Merk at du kan bruke GPIO-aliaser til brettet ditt istedenfor GPIO-nummer. Se GPIO-delen for mer informasjon.

Omdirigere inngang.

For a kunne gi GPIO-inngang til en hvilken som helst perifer, ma du:

Konfigurer GPIO-pin som input; Konfigurer GPIOPPSIN (inputPinForFunction) til det perifere signalet;

Legg merke til at du ikke trenger a aktivere PPS pa pinnen ved hjelp av pinModePPS for inngang.

Folgende eksempel kartlegger USPI MISO-signal (Master-In Slave-out) til GPIO pin nummer 10:

// Konfigurer pin som input.

// Kartpinne 30 til USPI MISO.

inputPinForFunction & # 40; 10, IOPIN_USPI_MISO & # 41; ;

Timer Instantiation Eksempel.

Signalseksjon – Sett denne koden i signalavsnittet (sok etter #Signal)

Wishbone Section – Sett denne koden i Wishbone-komponentdelen (sok etter #Wishbone)

wb_adr_i = & gt; slot_address & # 40; 8 & # 41; ,

wb_intb_o = & gt; slot_interrupt & # 40; 9 & # 41; , – slik at vi laner innlinjen fra onskekortspor 9, ikke bruk wishbone slot 9 for noe annet.

pwm_b_out = & gt; timers_pwm1 & # 40; 1 ned til 1 & # 41;

PPS-seksjon – Sett denne koden i PPS-delen (sok etter #PPS)

gpio_spp_data & # 40; 7 & # 41; & lt; = timers_pwm1 & # 40; 1 & # 41; ; – PPS7: TIMER3.

UART Instantiation Eksempel.

Signalseksjon – Sett denne koden i signalavsnittet (sok etter #Signal)

Wishbone Section – Sett denne koden i Wishbone-komponentdelen (sok etter #Wishbone)

wb_adr_i = & gt; slot_address & # 40; 8 & # 41; ,

PPS-seksjon – Sett denne koden i PPS-delen (sok etter #PPS)

uart2_rx & lt; = gpio_spp_read & # 40; 1 & # 41; ; – PPS0: USPI MISO.

Avbryter.

SigmaDelta DAC.

SigmaDelta DAC Instantiation Eksempel.

Signalseksjon – Sett denne koden i signalavsnittet (sok etter #Signal)

signal sigmadelta1_spp_data: std_logic_vector & # 40; 1 ned til 0 & # 41; ;

Wishbone Section – Sett denne koden i Wishbone-komponentdelen (sok etter #Wishbone)

wb_adr_i = & gt; slot_address & # 40; 8 & # 41; ,

wb_inta_o = & gt; slot_interrupt & # 40; 8 & # 41; ,

PPS-seksjon – Sett denne koden i PPS-delen (sok etter #PPS)

gpio_spp_data & # 40; 7 & # 41; & lt; = sigmadelta1_spp_data & # 40; 1 & # 41; ; – PPS7: SIGMADELTA DATA.

SPI Instantiation Eksempel.

Signalseksjon – Sett denne koden i signalavsnittet (sok etter #Signal)

signal spi3_mosi: std_logic;

signal spi3_miso: std_logic;

signal spi3_sck: std_logic;

Wishbone Section – Sett denne koden i Wishbone-komponentdelen (sok etter #Wishbone)

wb_adr_i = & gt; slot_address & # 40; 8 & # 41; ,

wb_inta_o = & gt; slot_interrupt & # 40; 8 & # 41; ,

PPS-seksjon – Sett denne koden i PPS-delen (sok etter #PPS)

gpio_spp_data & # 40; 7 & # 41; & lt; = spi3_sck; – PPS7: USPI SCK.

spi3_miso & lt; = gpio_spp_read & # 40; 1 & # 41; ; – PPS1: USPI MISO.

SmallFS-biblioteket.

HQVGA-biblioteket.

VGALiquidCrystal Library.

Oppsett ZPUino Miljo.

For a skrive kode for ZPUino har vi en spesialmodifisert versjon av Arduino IDE kalt ZAP IDE. ZAP er kort for ZPUino Arduino Papilio Soft Processor IDE. Vennligst besok ZAP IDE QuickStart-siden for a konfigurere ZPUino Environment.

Kjor Hello World Eksempel.

Apne ZPUino IDE og start en ny skisse. Velg hvilken som helst ZPUino bordtype som samsvarer med typen maskinvare du har. Brenn Bootloader for a laste riktig ZPUino-bitfil til Papilio-brettet. Lim inn folgende kode i den nye skissen.

// Oppsett Seriell port.

// skriver Hello World.

// skriver Hello World igjen og igjen.

Bestem hvilken port den andre Papilio COM-porten er koblet til. Hvis du ikke er sikker pa hvilken seriell port som er tilknyttet Papilio One, sa ta en titt pa Device Management-verktoyet i Kontrollpanel. Den skal merkes som seriell omformer B i egenskapene.

Sett brettetype for a matche maskinvaren din.

Sett seriell port til den andre serielle porten til Papilio som du bestemte deg for i det forrige trinnet.

Last opp skissen til Papilio, du bor se at skissen ble lastet vellykket.

Trykk pa «Serial Monitor» -ikonet, forsikre at baudfrekvensen er satt til 9600, og du bor se Hello World!

Komme i gang med Hello World VGA Sketch pa ZPUino.

Alvaro la en VGA-kontroller til ZPUino og skrev et brukervennlig VGA-bibliotek. Hans fantastiske arbeid gjor det enkelt for alle a skrive ut VGA-grafikk med Papilio.

Apne ZPUino IDE og start en ny skisse, eller velg noen av VGA-eksempelskissene fra ZAP IDE. Velg en hvilken som helst Hyperion Board-type som samsvarer med maskinvaren din i ZAP IDE. Brenn Bootloader for a laste riktig ZPUino-bitfil til Papilio-brettet.