Komma igång med mejsel (2 / 6 steg)
Steg 2: Hårdvara programmering
Detta är en introduktion till hårdvara programmering. Om du redan gjort några verilog programmering kan du hoppa över detta steg.
Hur är FPGAs programmerade?
Programmera en FPGA är annorlunda än andra stilar av programmering. Snarare än att ge instruktioner som ska köras i ordning, beskriver du layouten för maskinvaran. Som beskriver det i ett enda block skulle vara mycket rörig och svårläst men. I stället liknande funktioner på andra språk hårdvara delas i moduler. Dessa moduler ansluts till varandra för att göra mer komplicerade mönster. Var och en av dessa moduler har indata och utdata. Genom att ansluta dessa moduler tillsammans liknar anropa funktioner kan vi skapa komplicerade läsbara mönster. Bilden visar ett exempel på en modul i mejsel som adderar två tal. Den översta raden importerar mejsel. Du kommer att behöva göra detta i alla mejsel filer. Vi tillkännager sedan en huggorm modul som kallas myAdder. Detta lagt till har två ingångar x och y för att beräkna resultatet z = x + y. UInt är kort för osignerat heltal som indata eller utdata med 16 bitar. Lägg märke till hur det är ": =" inte "=". Detta är mycket viktigt men kommer att förklaras senare. Nästa steg kommer att visa hur man ansluta moduler i mejsel.
Några grundläggande maskinvara begrepp
Det här avsnittet beskriver några av begreppen när du designar i hårdvara.
Klockan
Klockan är nödvändig för att förstå hårdvarudesign. Det är en timer än synkroniserar din design så att allt är igång med samma hastighet. Hårdvara är generellt delas in i två kategorier: minnen och sekventiell logik. Minnen i sammansättningar logik som en = b + c ignorerar klockan. Sekventiella logik använder klockan för att avgöra när du ska läsa i nya data till ett minne element. Ett register eller Reg i mejsel är ett exempel på en sekventiell logik element. Varje gång klockan "clocks" värdet vid ingången av registret är ihågkommen för senare. Klockan är underförstått i mejsel. Detta innebär att du inte behöver oroa dig ansluta den.
Kritiska linjen
Den kritiska linjen i din design bestämmer hur snabbt klockan kan köra. Allmänt snabbare desto bättre. Den kritiska linjen är den långsammaste minnen väg mellan varje två register. Anser att det i fråga om en kapplöpning mellan klockan och den långsammaste sökvägen. Klockan måste vara långsam nog så att data kan ras genom den kritiska linjen till registret där det sedan lagras. Din design kan vara korrekt men långsam om du inte tänker på det.