Introduktion till konstruktion av digitala elektroniksystem
Innehåll
Historik
Motivation – hårdvarubeskrivande språk
Översikt av integrerade kretsar
Konstruktionsflöde
Konstruktionsverktyg
Historik –den integrerade kretsen
1958: Den första integrerade kretsen presenteras
Ej användbar teknik eftersom den var för dyr
60-talet:
En stor drivkraft till utvecklingen var NASAs rymdprogram
70-talet:
Kretsarna blev all mindre, snabbare och billigare
1971 kom Intels första mikroprocessor – 4004
Historik – den integrerade kretsen
1958: Första analoga integrerade kretsen
Jack Kilby (Nobelpristagare 2000)
60-talet
Digital elektronik börjar
komma i flera elektronikprodukter
Fortsättningen
70-talet: 100 tr./IC
80-talet: 10 000 tr./IC
90-talet: 100 000 tr./IC
Nu: 10-tals miljoner tr./IC
Utveckling – Mikroprocessor
400480088080 8085 8086
286 386
486
P6
0.001 0.01 0.1 1 10 100 1000
1970 1980 1990 2000 2010
Transistorer (M)
Utveckling – Minnen (DRAM)
64
256 1 000
4 000
16 000
64 000 256 000
1 000 000
4 000 000
16 000 000
64 000 000
10 100 1000 10000 100000 1000000 10000000 100000000
1980 1983 1986 1989 1992 1995 1998 2001 2004 2007 2010
Kbit kapacitet/chip
1.6-2.4 m
1.0-1.2 m
0.7-0.8 m
0.5-0.6 m
0.35-0.4 m
0.18-0.25 m 0.13 m
0.1 m
0.07 m
Mänskligt DNA
Uppslagsverk 2 h CD musik
30 s HDTV bok
sida
4X ökning på 3 år
Vad betyder utvecklingen egentligen ?
Vad används integrerade kretsar till ?
Generella integrerade kretsar
Mikroprocessor
Minnen
AD-omvandlare
Speciella programmerbara kretsar
T.ex för digital signalbehandling (DSP)
Speciella integrerade kretsar
Tillämpningsspecifik (t.ex krets för TV-mottagare)
Specifik för en viss produkt
Kontrollera speciella maskiner (hiss, traktor, diskmaskin)
Datorbaserade verktyg
Konstruktionsflöde för digitala system
Specifikation av konstruktionen
Mata in konstruktionen
Simulera konstruktionen
Överför konstruktionen till kretsar (implementering)
Simulera och modifiera konstruktionen tills den fungerar
Överför konstruktionen Manuellt eller automatiskt
Schemainmatning
Grafisk metod
Placera ut färdiga komponenter på en rityta
Koppla ihop in- och utgångar på dessa komponenter för att bygga en ny funktion
Exempel 1: Syntes av kombinatorisk logik
Implementera funktionen m.h.a tillgängliga grindar
Z = (A+B)·(C+D)
Exempel 2: Analys av tillståndsmaskin
Hur fungerar tillståndsmaskinen ?
Strukturell beskrivning -Sammankoppling av
grundläggande komponenter -Nätlista (grind-nivå)
-Eng. gate-level netlist
Beteendebeskrivning
-Beskriver hur den fungerar
-Säger inget om hur den är gjord
0 1
A=1
A=1 A=0
A=0
Exempel 3: Konstruktion med hårdvarubeskrivande språk
8-bitars adderare
architecture rtl of add8 is begin
process (a,b)
variable s_var : std_logic_vector(8 downto 0);
begin
s_var := a + ('0' & b);
s <= s_var(7 downto 0);
cout <= s_var(8);
end process add;
end rtl;
a
b
s
cout
Forts. Exempel 3
Automatisk syntes av koden för adderaren
Exempel 4: Tillståndsmaskin
Modulo-8 upp/ner- räknare med ’enable’
architecture rtl of fsm is
signal count : std_logic_vector(2 downto 0);
begin -- rtl
process (clk, reset) begin -- process
if reset = '0' then count <= (others=>'0');
elsif clk'event and clk = '1' then if enable='1' then
case up is
when '1' => count <= count + 1;
when others => count <= count -1;
end case;
end if;
end if;
end process;
q <= count;
enable count reset
up
Forts. Exempel 4
Automatisk syntes av koden för räknaren
Hårdvarubeskrivande språk
Fördelar
Jämfört med schemabaserad konstruktion så blir det lättare att beskriva och läsa konstruktionernas
funktion
Koden är oberoende av implementationsteknologi
Den låser inte konstruktionen till en enda teknologi
Koden kan återanvändas
Parameteriserbar kod
Implementationsteknologier
Fysisk Implementering (automatisk)
Standard komponenter Programmerbara kretsar Kundanpassade kretsar
En och samma konstruktion beskriven med grindar kan implementeras
i olika teknologier
Programmerbara logiska matriser – PAL
Pre-fabricerade byggblock med många AND/OR grindar
Består egentligen av NOR eller NAND grindar
Kretsen kan konfigureras (programmeras) genom att bryta kopplingar mellan grindar
Blockdiagram för programmerbar krets som skapar uttryck på summa-av- produktform
• • • ingångar
AND matris
utgångar OR matris produkt
termer
Före programmering
Alla möjliga kopplingar finns tillgängliga före programmering
AND-plan
Programmerbar koppling
OR-plan
Efter programmering
Ej önskade kopplingar tas bort
’Fuse’ normalt kopplade, bryt oönskade
’Anti-fuse’ (normalt okopplade, koppla de önskade)
A B C
AB B'C AC' B'C'
A
Exempel
Förenklad notation – alla ledningar ritas ej
Visar att en koppling finns och att signalen är en ingång till grinden
Implementera F0=AB + A’B’ samt F1=CD’ + C’D
AB+A'B' CD'+C'D
AB A'B' CD' C'D A B C D
Grindmatriser (Gate-arrays)
Enkla logiska grindar
Transistorer
implementerar kombinatorisk och sekventiell logik
Sammankopplingar
Ledningar för att koppla
samman in- och utgångar till logiska block
I/O block
Speciella block för att koppla signalerna externt chippet
Lägg till ledningar för sammankoppling
Metalledningar läggs till efter
Att göra stora programmerbara kretsar
Alternativ 1: ”CPLD”
Lägg massor av PAL-kretsar på samma chip
Lägg till ledningar mellan dem och vars kopplingar kan programmeras
Alternativ 2: ”FPGA”
Härma Gate-array teknologin
Kallas för Field Programmable Gate Array (FPGA)
För det krävs
Ett sätt att implementera logiska grindar som kan konfigureras
Ett sätt att koppla samman dem
Field-Programmable Gate Arrays
PAL-kretsar
10 – 100 grindar per chip
Field Programmable Gate Arrays
Altera MAX Family
Actel Programmable Gate Array
Xilinx Logical Cell Array
10000 – 4 miljoner grindar per chip
FPGA
Logiska block
Implementerar kombinatorisk och sekventiell logik
Sammankopplingar
Ledningar kopplar in-
och utgångar till logiska block
I/O block
Speciella block för att koppla signalerna externt chippet
FPGA från Xilinx
CLB
CLB
CLB
CLB
Switch Matrix
Programmable
Interconnect I/O Blocks (IOBs)
Configurable
Logic Blocks (CLBs)
D Q SlewRate Control
Passive Pull-Up, Pull-Down
Delay
Vcc
Output Buffer
Input Buffer Q D
Pad
D Q
SD
RD EC S/R Control
DSDQ
RD EC S/R Control
1 1
F' G' H' DIN F' G' H' DIN
F' G' H'
H'
Func.H Gen.
Func.G Gen.
Func.F Gen.
G4G3 G2G1
F4F3 F2F1
C4 C1 C2 C3
K
Y
X H1 DIN S/R EC
Datorstödd konstruktion
Det är inte möjligt att konstruera FPGA för hand
Alldeles för mycket logik som ska hanteras
Hårdvarubeskrivande språk (HDL)
Specificera logikens funktion på en hög nivå
Validering: högnivå simulering
För att tidigt finna fel i konstruktionen
Logiksyntes
Kompilera HDL program till logiska grindar
Överföring till implementationsteknologi (FPGA)
Logiken ska föras över till de element som finns tillgängliga i den implementationsteknologi som finns tillgänglig
VHDL – ett
hårdvarubeskrivande språk
Det finns två vanliga språk för att beskriva hårdvara
VHDL
Verilog HDL
VHDL
Very High Speed Integrated Circuit Hardware Description Language
Historik
Skapat av amerikanska försvarsdepartementet (DoD) för att dokumentera militära konstruktioner
Bakgrund till VHDL
Problem
Ökande behov för att kunna konstruera, implementera, test och dokumentera allt komplexare system på allt kortare tid
Lösning (?)
Ett högnivåspråk för att beskriva hårdvara (HDL)
HDL tillsammans med datorstödd konstruktion (CAD) för automatisk syntes och simulering
Programmerbar logik för snabb implementering
Bakgrund till VHDL
Anledningar till att använda HDL
Högnivåspråk gör det kraftfullt och flexibelt
Konstruktionen görs oberoende av den
komponent eller teknologi man ska använda
Standardiserat språk gör det möjligt att använda verktyg från olika leverantörer (simulatorer etc.)
Gör det möjligt att gå från idé till produkt snabbt med programmerbara kretsar
Implementering (Automatisk) Placering och ledningsdragning
Logiksyntes (Automatisk)
Simulera konstruktionen
Konstruktionsflöde för FPGA
architecture rtl of fsm is signal count : std_logic_vector(2 downto 0);
begin -- rtl process (clk, reset) begin -- process if reset = '0' then count <= (others=>'0');
elsif clk'event and clk = '1' then if enable='1' then case up is when '1' => count <= count + 1;
when others => count <= count -1;
end case;
end if;
end if;
end process;
q <= count;
end rtl;
Mata in konstruktionen
Simulera och modifiera konstruktionen
tills den fungerar Överför konstruktionen
automatiskt
VHDL
Syntesverktyg Syntesverktyg
Konstruktionsverktyg I
Beskrivning av
konstruktionen
Testbänk
Generera testdata Analysera respons
VHDL simulator VHDL simulator
Vågformer
Teknologi
Data för grindarna t.ex fördröjning, effektförbrukning
Direktiv
T.ex önskad klockfrekvens
Nätlista med grindar Data från komponent-
leverantör
Anges av konstruktören
”Post-layout”-simulering
”Post-layout”-simulering
Konstruktionsverktyg II
Nätlista med grindar
Binär-fil för Programmering av komponenten
Grindfördröjninger efter placering och kopplingar
”Place & Route”-verktyg
”Place & Route”-verktyg
Vågformer
SLUT på Föreläsning 1
Innehåll
Historik
Motivation – hårdvarubeskrivande språk
Översikt av integrerade kretsar
Konstruktionsflöde
Konstruktionsverktyg