OBSERVERA!! Dessa sidor är numera utdaterade. Kursens websidor finns i Lisam.
Institutionen för systemteknik
Göm meny

Projektarbete TSEA83

  • Projektet utförs i grupper om 4 teknologer. Ni måste vara godkända på laborationerna innan projektet påbörjas!
  • Bilda projektgrupp med fyra teknologer. Inregistrera projektgruppen genom att fylla i en projektanmälan (ska göras elektroniskt). Ni blir sedan införda i den stora tabellen .
  • Välj sedan projekt Kursen heter ju Datorkonstruktion och du kommer att använda FPGA-kortet Nexys3. Detta medför några underförstådda krav för projektet:
    • Projektet ska innehålla en fungerande dator som har signifikant användning, gärna av den typ du träffat på i kursen.
    • Projektet ska ge utdata till någon utenhet, t ex kunna visa en rörlig bild på en VGA-skärm.
    • Projektet ska kunna ta emot stimuli (insignaler) via någon inenhet, t ex tangentbord, joystick eller liknande.
    • De knappar, strömbrytare och displayer som finns på själva Nexys3-kortet räknas *inte* som in/ut-enheter, men kan användas som komplement om man t ex till visa poäng på displayen.
    • En grupp med fyra teknologer måste dessutom uppfylla något av följande krav:
      - En pipeline-CPU
      - Avbrotthantering
      - Subrutiner med återhoppsadress på en stack
      - Möjlighet att ladda in program via UART
    Här kommer en lista på typiska projekt:
    • Snake
    • Space Invaders
    • Tetris
    • Breakout
    • Duck hunt
    • Bilrally
    • Lunar lander
  • Skriv en enkel kravspecifikation för ert projekt. Lämna in kravspecen i gruppens kanal i Teams, under Files i katalogen Inlämningar.
  • Skriv en enkel designskiss för ert projekt. Ta kontakt med er handledare. Denne godkänner designskissen och ger er utrustning. Lämna i designspecen i gruppens kanal i Teams, under Files i katalogen Inlämningar.
  • Kursen avslutas med examination

Demo av tidigare projekt

uprogCPU, embryo för en mikroprogrammerad CPU

Filen uprogCPU.tgz innehåller VHDL-koden för ett litet mikroprogrammerat cpu-projekt. Den enda funktionalitet som finns är en enkel hämtfas som hämtar instruktioner från ett programminne PM till ett instruktionsregister IR. Miniprojektet visar hur man använder sig av hierakisk design med flera ingående VHDL-filer och en testbänk för simulering av konstruktionen. Tanka ned och packa upp filen med kommandot:

tar -xzvf uprogCPU.tgz

Då skapas katalogen 'uprogCPU' med diverse filer som behövs till ett projekt, bl a filen Makefile. Följande tre rader i Makefile är intressanta:

proj.%: S=uprogCPU.vhd uMem.vhd pMem.vhd
proj.%: T=uprogCPU_tb.vhd
proj.%: U=Nexys3_Master.ucf

Alla rader inleds med projektets namn 'proj' i detta fall. Det kan du byta till namnet på ditt eget projekt.

Den första raden innehåller filnamnen på dom ingående implementations-filerna i projektet. Det första filnamnet måste vara själva topp-modulen i projektet, då man gör en hierarkisk konstruktion.

Den andra raden innehåller namnet på testbänksfilen för toppmodulen.

Den tredje raden innehåller namnet på en s k user constraints file, vilken talar om vilka signaler och ben på FPGA:n som ska användas. Du måste själv redigera den filen och avkommentera dom signaler som ska användas i ditt projekt.

För att simulera konstruktionen med den ingående testbänken skriver man kommandot:

make proj.sim

Då startas programmet Modelsim, där ingående VHDL-filer kompileras och laddas in.

pipeCPU, embryo för en pipeline-CPU

pipeCPU.tgz

DO-fil, för att slippa starta om Modelsim

Kort video som beskriver nedanstående

När man tröttnat på att starta om Modelsim varje gång man gjort en förändring i VHDL-koden så kan man istället skapa en s k do-fil med dom kommandon som behövs för att automatiskt kompilera om VHDL-filerna (för simulering) i projektet, lägga till önskade signaler i vågformsfönstret och köra om en ny simulering. Följande fil skulle kunna heta t ex uprogCPU.do och placeras i underkatalogen proj-simdir (proj i detta fall för att projektet heter proj). Därefter kör man kommando-filen i Modelsim genom att i kommadorutan skriva:
do uprogCPU.do

Filen uprogCPU.do:

vcom "+acc" ../uprogCPU.vhd ../uMem.vhd ../pMem.vhd
vcom "+acc" ../uprogCPU_tb.vhd
vsim uprogCPU_tb

add wave {sim:/uprogcpu_tb/uut/clk }
add wave {sim:/uprogcpu_tb/uut/rst }
add wave -dec {sim:/uprogcpu_tb/uut/upc }
add wave -hex {sim:/uprogcpu_tb/uut/tb }
add wave -hex {sim:/uprogcpu_tb/uut/fb }
add wave -dec {sim:/uprogcpu_tb/uut/pc }
add wave -hex {sim:/uprogcpu_tb/uut/ir }

add wave -hex {sim:/uprogcpu_tb/uut/u0/uaddr }
add wave -hex {sim:/uprogcpu_tb/uut/u1/paddr }
add wave -hex {sim:/uprogcpu_tb/uut/u1/pdata }

restart -f
run 20 us

Color Chart

Programmera in följande fil i NEXYS3-kortet för att se en karta över alla de färger (med motsvarande HEX-kod) som kan genereras via VGA-porten:

color_chart.bit

Programmering kan ske med kommandot:

djtgcfg prog -i 0 -d Nexys3 -f color_chart.bit

Man kan aktivera/inaktivera grundfärgerna med switcharna:

sw7 : 1=enable/0=disable red
sw6 : 1=enable/0=disable green
sw5 : 1=enable/0=disable blue
sw1 : 1=altered/0=normal color counting order (in combo with sw0)
sw0 : 1=altered/0=normal color counting order (in combo with sw1)

Versionshantering med Git

För att gemensamt kunna arbeta parallellt med flera filer i projektet och samtidigt få en versionhantering av filerna kan man använda Git via gitlab.


Informationsansvarig: Anders Nilsson
Senast uppdaterad: 2022-02-08