Obliger
Målet med denne obligen er å bli kjent med verktøy som skal brukes i oblig 2 og 3. Ikke vær bekymret om eksempelkoden som du bruker her er foreløpig ikke fult forståelig: det er bare viktig at verktøyene til å kjøre koden skal fungere når dere begynner med oblig 2 og 3. Mer om VHDL og Assembler kommer senere i forelesningen.
Obligen består av to deler.
Del 1 er en introduksjon til GHDL og gtkwave, som du vil bruke for å simulere kode skrevet i hardwarespråk og vise resultater.
I del 2 skal du bli kjent med et av to verktøy du kan bruke for å kompilere og kjøre ARM assembly kode.
Frist H2026: 10. september 23:59! Leveres gjennom devilry.ifi.uio.no (se også timeplan).
En oppgave i å konstruere og analysere digitale kretser på lavnivå.
Frist for H2026: 8. oktober 23:59! Leveres gjennom devilry.ifi.uio.no (se også timeplan).
Frist for H2026: 1. november 23:59! Leveres gjennom devilry.ifi.uio.no (se også timeplan).
Assembler er den laveste (med noen unntak) måten å programmere en CPU. Programmeringsspråket er en menneskeleselig versjon av instruksjonene som maskinvaren utfører. Settet av instruksjoner som kan utføres er forskjellig avhengig av prosessorarkitektur, og assemblerkode er derfor spesifikt til prosessoren det kjører på. Til sammenligning må høyere nivå språk, som C eller Python, oversettes til maskininstruksjoner. Dette gjøres enten av en kompilator eller ved at koden tolkes under kjøring. I denne obligen skal vi jobbe med ARM Assembler som er beskrever i kapittel 6.3 i læreboken.
Assemblerprogrammering er noe man sjeldent kommer borti i dagliglivet som programmerer. Allikevel finnes det gode grunner til å kunne skrive og lese Assembler. For mange mikroprosessorer trenger man assemblerprogrammering for å kunne utnytte alle egenskapene til prosessoren. Assembler brukes også blandt annet dersom man skal skrive kompilatorer, drivere eller operativsystemer. I denne obligen skal vi implementere noen enkle algoritmer i Assembler. Dette vil gi en innføring i hvordan enkle byggeblokker kan kombineres for å skape funksjonalitet.
Denne obligen består av fem deler. I første del av obligen skal vi implementere en algoritme som regner ut Fibonacci sekvensen i Assembler. I andre del skal vi utvide denne koden ved å gjøre den om til en funksjon vi kan kalle. I tredje del skal vi se hvordan en kompilator oversetter fra et høyere nivå språk(C) til lav nivå Assembler. I del fire og fem skal vi se hvordan moderne datamaskiner representerer flyttall og hvordan man kan legge sammen slike tall. Selv om flyttall er støttet i prosessoren vil det å implementere det selv være en fin øvelse for å jobbe med binærtall og for å lære mer om lavnivå programmering.
I den siste delen av obligen vil det være en liten konkurranse. Vinneren av konkurransen vil få en premie i siste forelesning.
Oppgaven skal leveres som en PDF-fil med svar på tekstoppgavene. For programmeringsoppgavene skal kildekoden legges ved som egene filer.