• No results found

Laboration i digital konstruktion I: Lab 4

N/A
N/A
Protected

Academic year: 2021

Share "Laboration i digital konstruktion I: Lab 4"

Copied!
54
0
0

Loading.... (view fulltext now)

Full text

(1)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(2)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(3)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(4)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(5)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(6)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(7)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(8)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(9)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(10)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(11)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(12)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(13)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(14)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(15)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(16)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(17)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(18)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(19)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(20)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(21)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(22)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(23)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(24)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(25)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(26)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(27)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(28)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(29)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(30)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(31)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(32)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(33)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(34)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(35)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(36)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(37)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(38)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(39)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(40)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(41)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(42)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(43)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(44)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(45)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(46)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(47)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(48)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

(49)

Sida 1 av 3

1.0 Sekventiell addera-och-skifta multiplikator

1.1 Syfte

Syftet med den här laborationen är att ge insikt i hur man konstruerar en funktion med både en beräkningsenhet och en kontrollenhet.

1.2 Bakgrund

I de flesta typer av konstruktioner betraktas multiplikation som en komplex ope- ration som både tar lång tid att utföra och kräver mycket logik för att implemen- tera. En multiplikation kan implementeras som ren kombinatorik. För att reducera komplixiteten kan man dela upp multiplikationen i flera klockcykler som resulterar i enklare logik men multiplikationen görs istället under ett antal klockcykler. För att kontrollera vad som ska ske under de olika klockcyklerna måste beräkningsenheterna (datavägarna, eng. data paths) styras av en tillstånds- maskin (FSM).

I den här laborationen ska en addera-och-skifta multiplikator konstrueras. Mul- tiplikationen går till på samma sätt som i grundskolan: multiplikanden multipli- ceras men en siffra (eller bit) av multiplikatorn, och för varje mer signifikant bit av multiplikatorn skiftas delprodukten vänster. Exempel:

Multiplicera 1011 · 1101 = B16 · D16 = 8F16

Efter det att en delprodukt har bildats kan den adderas till den tidigare summan av delprodukter.

En addera-och-skifta multiplikator har följande struktur:

1011 1101 1011 0000 1011 1011 10001111

multiplikand multiplikator

Multiplikatorns LSB AND:as med multiplikanden Multiplikatorns 0-bit AND:as med multiplikanden och skiftas vänster

bildar 1:a delsumman

multiplikator

Tillståndsmaskin

register

adderare

multiplikand

multiplikator

1bit av multiplikand

skift registerregister delprodukt-generator

(4 bitar)

(4 bitar)

(1 bit)

(4 bitar)

(4 bitar)

delprodukt

produkt (8 bitar)

load hold clr start

clk reset

färdig

(50)

sida 2 av 3

Timingdiagram:

1.3 Förberedelser

cd ~/VHDL mkdir lab4 cd lab4 qhlib work

Tabell 1: kontrollsignaler

Signal Funktion

clk klocksignal som går till samtliga register (insignal) reset initiering av tillståndsmaskinen (insignal)

start starta multiplikationen (intern signal)

clr nollställ registret som innehåller summan av del- produkterna (intern signal)

load ladda multiplikand och multiplikator (intern sig- nal)

hold bibehåll värdet på produkten (intern signal och utgång). Indikerar då multiplikationen är klar.

UU...U UU...U UU...U UU...U UU...U UU...U VÄRDE

CLK

START

MULTIPLIKAND

MULTIPLIKATOR

FÄRDIG PRODUKT

(51)

Sida 3 av 3 1.4 Utförande

Konstruera en skifta-och-addera multiplikator som kan multiplicera två positiva 4-bitars tal som resulterar i en produkt på 8-bitar. Multiplikationen ska initieras med en start-signal och då multiplikationen är färdig ska detta indikeras med en färdig-signal. Produkten ska ligga kvar tills nästa multiplikation har startats.

Konstruktionen ska skrivas i syntetiserbar VHDL-kod. Multiplikatorn kan delas upp i flera komponenter som kopplas samman strukturellt.

1.5 Redovisning

VHDL-koden ska lämnas in till labhandledaren tillsammans med en beskrivning av in- och utsignaler (gärna som kommentarer i koden).

References

Related documents

Kommunstyrelsen beslutar att Tjörns kommun är positiv till slutbetänkandet Kameraövervakning i kollektivtrafiken – ett enklare förfarande (SOU

säkerhetsområdet. FOI har - från de utgångspunkter som myndigheten har att beakta – inga synpunkter på underlaget och tillstyrker förslagen. Detta remissvar har beslutats

Ett utökat undantag från tillståndsplikten fråntar dock inte Trafikverket eller någon annan aktör inom kollektivtrafiken ansvaret för att bedöma från plats till plats att

På sidan 167 tar man sedan upp den avsikt som finns att bygga linbanor och gör bedömningen att sådan kollektivtrafik kommer att vara högst begränsad varför den trafiken inte

Västra Götalandsregionen är vidare positiva till att aktörerna inom kollektivtrafik tar fram en gemensam uppförandekod för hur bevakningen ska gå till, syftet med bevakning samt

Tips: För att lägga till en last på utgången, editera Lsim-nätlistan (.N) och lägg till följande rad:.. C CL

Dela upp funktionen i två steg där första delen beräknas då klocksignalen är hög och den andra delen beräknas då klocksignalen är låg.. Verifiera konstruktionen med simulering

För att minska risken för att någon annan faktor än just ljuset påverkade utfallet, det vill säga för att hålla andra faktorer konstanta, be- lystes även flaskan