Domanda

Come posso creare il mio microcontrollore? Ho fatto un po 'di lavoro usando i chip GAL e programmato un chip per eseguire comandi semplici come aggiungi, carica, sposta, xor e output, ma mi piacerebbe fare qualcosa di più simile a un vero microcontrollore.

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

È stato utile?

Soluzione

Cerca qui per un buon libro wiki. Avevo dei corsi che ho scritto quando insegnavo Electronic Eng, ma non riuscivo a trovarli in giro. Quando insegnavo, la maggior parte degli studenti era felice di usare gli strumenti di acquisizione schematica nel pacchetto della Xilinx Foundation. Sono passati a ISE e WebPACK ora. Puoi scaricare il WebPack gratuitamente, il che è utile e ha una cattura schematica e una simulazione al suo interno.

Se vuoi davvero brillare, impara VHDL o Verilog (VHDL sembra essere più comune dove ho lavorato, ma è solo una piccola quantità di luoghi) e codifica il design piuttosto che inserirlo attraverso la GUI.

Se conosci TUTTO qualcosa sulla progettazione della logica digitale (e su alcuni HDL), credo che puoi avere un microprocessore a 8 bit in qualche modo 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 da cui partire. Se devi conoscere il design digitale, considera un paio di giorni per imparare come funzionano gli strumenti e simulare alcuni circuiti logici di base prima di passare al design uP.

Inizia a imparare le basi dei sistemi digitali e come costruire un sommatore binario. Passa alla costruzione di un ALU per gestire l'addizione, la sottrazione e, o, xor, ecc. E quindi un sequencer per leggere i codici operativi dalla RAM e fornirli all'unità di esecuzione.

Puoi divertirti con la progettazione del set di istruzioni, ma ti consiglio di iniziare DAVVERO semplice fino a quando non hai la testa su cosa sta succedendo, quindi buttalo fuori e ricomincia con qualcosa di più complesso.

Dopo aver simulato bene il design, puoi misurarne la complessità e acquistare un dispositivo adatto. Dovresti cercare un sistema di sviluppo per la famiglia di dispositivi che hai scelto. Scegli un dispositivo più grande di quello di cui hai bisogno per lo sviluppo perché è bello poter aggiungere strumenti aggiuntivi per eseguire il debug quando è in esecuzione e quasi sicuramente non avrai ottimizzato il tuo design nelle prime fasi di installazione sul dispositivo.

EDIT: Colin Mackenzie ha un buon tutorial sulla progettazione di UC e su alcune schede FPGA e un po 'di altre cose.

Altri suggerimenti

Potresti dare un'occhiata OpenCores.org , un " forge " sito per lo sviluppo di core IP open source. Inoltre, considera di procurarti una scheda di sviluppo come una di queste con cui giocare.

Gran parte degli ecosistemi di strumenti ruota attorno a VHDL , sebbene Avalda sta lavorando a strumenti per compilare F # per FPGA.

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

Le FAQ PDP-8 menziona un libro: " < a href = "https://rads.stackoverflow.com/amzn/click/com/0130467804" rel = "nofollow noreferrer"> L'arte del design digitale, " seconda edizione, di Franklin Prosser e David Winkel (Prentice-Hall, 1987, ISBN 0-13-046780-4). Indica anche le persone che lo implementano negli FPGA.

Data l'estrema semplicità di questa architettura della 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 (abbattuto ARM) su un FPGA come progetto universitario gestito da uno Steve Furber (un importante alunno delle ghiande). Dato che questo potrebbe essere compresso in un formato abbastanza piccolo per un progetto universitario, potrebbe anche essere un buon inizio.

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

I led, gli switch e una semplice interfaccia seriale sono un vantaggio 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 alcuni articoli durante l'università.

Un microcontrollore può essere semplice come una ROM (istruzioni * 2 ^ x + (fase di clock) è l'indirizzo, le uscite sono i segnali di controllo e sei a posto). Oppure può essere una bestia harry complessa con tre hardware di supporto per la previsione di rami e bracci.

Puoi fornire maggiori dettagli sulle tue aspirazioni?

Dopo aver cercato alcuni link molto utili da parte di tutti voi, mi sono imbattuto in questo Corso Wikiversità .

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

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

Hai bisogno di un grosso fpga per un po 'di MCU.

Hai bisogno di un FPGA con i blocchi hardware corretti se hai bisogno di cose come AD.

È necessario un core soft da inserire nell'fpga.

Ma che ne dici di giocare con un normale MCU prima di questo progetto, quindi sai un po 'dove stai andando? Che ne dici di alcuni AVR: s di Atmel.

Puoi ottenere campioni gratuiti di microcontrollori per foto su questo sito. L'ultima volta che ho saputo, non devi nemmeno pagare la spedizione.

http://www.microchip.com/stellent/idcplg?IdcService = SS_GET_PAGE & amp; nodeId = 64

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top