2009-03-10 18 views
42

Come posso creare il mio microcontrollore? Ho lavorato un po 'con i chip GAL e programmato un chip per eseguire semplici comandi come add, load, move, xor e output, ma mi piacerebbe fare qualcosa di più come un vero microcontrollore.Come posso creare il mio microcontrollore?

Come posso fare questo? Ho letto un po 'di FPGA e CPLD, ma non molto, e così stavo cercando qualche consiglio su cosa ottenere e come iniziare a svilupparlo.

+3

+1 per interessi. Hai guardato qui? http://www.fpga4fun.com/ – epatel

risposta

25

Cercare here per un buon libro wiki. Ho avuto alcuni corsi che ho scritto quando insegnavo a Electronic Eng, ma non riuscivo a trovarlo. Quando stavo insegnando, la maggior parte degli studenti era felice di usare gli strumenti di acquisizione schematica nel pacchetto Xilinx Foundation. Si sono trasferiti su ISE e WebPACK ora. È possibile scaricare gratuitamente il WebPack, che è utile, e ha la cattura schematica e la simulazione in esso.

Se vuoi davvero brillare, impara VHDL o Verilog (il VHDL sembra essere più comune in cui ho lavorato, ma questa è solo una piccola infarinatura di luoghi) e codifica il disegno piuttosto che inserirlo attraverso la GUI.

Se si conosce NULLA circa la progettazione della logica digitale (e alcune HDL), credo che si possa avere un microprocessore a 8 bit un po 'funzionale che simula in VHDL in circa 2 giorni. Non costruirai nulla di incredibilmente veloce o enormemente potente in quel momento, ma è un buon punto di partenza per crescere. Se devi conoscere la progettazione digitale, calcola in un paio di giorni per imparare come funzionano gli strumenti e simula alcuni circuiti logici di base prima di passare al design uP.

Iniziare a imparare le basi dei sistemi digitali e come costruire un sommatore binario. Passa alla costruzione di una ALU per gestire addizione, sottrazione e, o, xor, ecc. E poi un sequencer per leggere gli opcode dalla RAM e fornirli all'unità di esecuzione.

È possibile essere fantasiosi con il set di istruzioni, ma ti consiglio di iniziare DAVVERO semplice fino a quando non hai la testa attorno a cosa sta succedendo, quindi buttalo fuori e ricomincia da capo con qualcosa di più complesso.

Una volta che il progetto ha simulato bene, è possibile valutare la sua complessità e acquistare un dispositivo adatto. Dovresti esaminare un sistema di sviluppo per la famiglia di dispositivi che hai scelto. Scegli un dispositivo più grande di quello che ti serve per lo sviluppo, perché è bello poter aggiungere strumentazione aggiuntiva per eseguire il debugging quando è in esecuzione, e quasi certamente non avrai ottimizzato il tuo design nelle fasi iniziali del caricamento sul dispositivo.

MODIFICA: Colin Mackenzie ha un buon tutorial sul design di uC e alcune schede FPGA e un po 'di altre cose.

13

Si consiglia di dare un'occhiata a OpenCores.org, un sito "forge" per lo sviluppo del core IP open source. Inoltre, considera di procurarti una scheda di sviluppo come one of these con cui giocare.

Gran parte dell'ecosistema di strumenti ruota attorno a VHDL, sebbene Avalda stia lavorando su strumenti per compilare F # per FPGA.

1

Un microcontrollore può essere semplice come una ROM (l'istruzione * 2^x + (fase di clock) è l'indirizzo, le uscite sono i segnali di controllo e sei a posto). Oppure può essere un harry beast complesso con tre armi e supporto hardware di previsione del ramo.

Puoi fornire maggiori dettagli sulle tue aspirazioni?

+0

Mi piacerebbe implementare qualcosa di simile ad un AVR, anche se so che sarebbe molto più semplice. Quando utilizzavo i chip GAL, la classe in cui mi trovavo rapidamente ha raggiunto i limiti fisici del GAL e volevo sapere qual è il prossimo passo che posso compiere per rendere qualcosa di un po 'più potente. – samoz

0

Hai bisogno di una grande fpga per un po 'di mcu.

Hai bisogno di una fpga con i blocchi hardware corretti se hai bisogno di cose come AD.

È necessario un nucleo morbido da inserire nella fpga.

Ma che ne dici di giocare con un normale MCU prima di questo progetto, in modo che tu sappia dove stai andando? Che ne dici di alcuni AVR: s di Atmel.

+0

In realtà ho già diversi chip AVR;) – samoz

+0

Ma poi non sei così verde come suggerisce la tua domanda ... Forse un aggiornamento alla tua domanda. – Johan

1

Dopo aver cercato alcuni collegamenti molto utili da parte di tutti voi, mi sono imbattuto nel corso di Wikiversità, this.

Una delle prime frasi è "Hai mai pensato di costruire il tuo microprocessore?"

7

Ho visto un libro di testo una volta che è passato attraverso la costruzione di una macchina da chip TTL. Questo ha avuto le stesse istruzioni impostate come un PDP-8, che è molto - e intendo molto - semplice, quindi l'architettura della macchina reale è facile da implementare in questo modo.

Il PDP-8 FAQ menziona un libro: "The Art of Digital Design," seconda edizione, di Franklin Prosser e David Winkel (Prentice-Hall, 1987, ISBN 0-13-046780-4). Indica anche le persone che la implementano in FPGA.

Data l'estrema semplicità di questa architettura CPU e la disponibilità del codice PDP-8 o delle implementazioni di riferimento, potrebbe essere un buon punto di partenza per riscaldarsi.

In alternativa, un mio conoscente ha implementato un pollice (ridurre ARM) su un FPGA come progetto universitario gestito da un certo Steve Furber (un prominente alumnus di Acorn). Dato che questo potrebbe essere compresso in un formato abbastanza piccolo per un progetto universitario, potrebbe anche essere un buon inizio.

+2

+1 solo per menzionare il PDP-8 ;-) – RBerteig

3

Per giocare con microprocessori soft-core, mi piace il Spartan 3 Starter Board da Digilent solo perché ha 1M di RAM statica. SDRAM e DDR RAM sono più difficili da usare, lo sai.

I led, gli interruttori e una semplice interfaccia seriale sono un plus per il debug e la comunicazione.

Come qualcuno ha già sottolineato, OpenCores.org è un buon posto per trovare esempi di lavoro. Ho usato il Plasma uC per scrivere dei documenti mentre ero all'università.

1

Xilinx ha un MicroBlaze e un controller software PicoBlaze per i suoi FPGA. Quest'ultimo è gratuito, mentre, IIRC, il Microblaze deve essere pagato.
Come suggerisce il nome, PicoBlaze è un piccolo processore, che ha i suoi limiti, ma OTOH è abbastanza compatto per run on a CPLD. Comunque un buon processore per iniziare.
Pablo Bleyer è compatibile con PicoBlaze PacoBlaze. PacoBlaze è stato scritto in Verilog (che, come ha detto Adam, è meno comune di VHDL).

Problemi correlati