Digitale elektronica

Download Report

Transcript Digitale elektronica

CONFIGUREREN VAN DE FPGA
• FPGA configureren = opladen van de SRAM-cellen
met een ‘bitpatroon’, zodat de gewenste schakeling
gerealiseerd wordt
• moet steeds gebeuren met de FPGA in circuit
• kan op verschillende manieren:
– vanuit de PC met een speciale download cable
– vanuit een externe seriële PROM
» vereist slechts één kleine chip en weinig verbindingen
» seriële PROMs bestaan van 18K tot 256K
» Interne CCLK klok spreekt een teller aan in de seriële PROM
– vanuit een externe gewone (parallelle) PROM
» Interne CCLK klok spreekt een teller in de FPGA aan
» Data wordt intern toch nog steeds serieel verwerkt, zodat de configuratie
op dezelfde snelheid gebeurt
– vanuit en onder de controle van een externe microprocessor of -controller
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
Seriële E(E)PROM
• Combinatie van een EPROM (of EEPROM) met een
ingebouwde adres-teller
• De teller loopt alle adressen af op het ritme van de klok en
de data worden bit voor bit naar buiten gestuurd.
• Weinig IC pinnen nodig, vb. 8-pins DIL (OTP-EPROM)
CLOCK
Address
counter
Control
logic
CS
OE
CASC
EPROM
array
Shift
register
Programmeerbare Logica
DATA
DIGITALE ELEKTRONICA 1ELO
ONTWERP-SOFTWARE voor PLDs
• Programmeerbare bouwstenen hebben een steeds
toenemende complexiteit
– SPLD = Simple PLD (PAL en GAL)
– CPLD = Complex PLD (EPLD)
– FPGA = Field Programmable Gate Array
en bevatten duizenden te programmeren punten
• Hulp van de computer is onmisbaar om een
bepaalde functie onder te brengen in een PLD
– hulp bij het ingeven en simuleren van het ontwerp
– hulp bij het ‘vertalen’ van dit ontwerp naar een PLD-schakeling
– hulp bij het configureren van de PLD
• EDA = Electronic Design Automation
CAEE = Computer Aided Electronic Engineering
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
ONTWERP-SOFTWARE voor SPLD : PALASM
• SPLD = Simple PLD (PAL + GAL)
– eerst op de markt gebracht door de firma MMI (Monolithic Memories
Inc), die later werd opgekocht door AMD
• PALASM (=PAL-assembler)
–
–
–
–
door AMD/MMI (uitvinders v/d PAL) geleverde ontwikkelingsomgeving
staat heel kort bij de component (databoek is nodig!)
is een programmeertaal met een vrij eenvoudige syntax
schakeling kan op verschillende manieren worden ingegeven:
» logische vergelijkingen
» waarheidstabellen
» toestandmachines (FSM = Finite State Machine)
– zorgt zelf voor minimalisatie
– biedt de mogelijkheid tot simulatie
– genereert de JEDEC-file (= fuse-map) die het programmeertoestel
nodig heeft om de PLD te programmeren
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld : 3-naar-8 decoder
• Declaraties
BIN/DEC
Z
4
Y
3
X
2
12
0
0
1
1
13
2
14
3
15
D
4
16
E
5
17
F
6
18
G
7
19
H
2
A
B
C
PAL16L8
Programmeerbare Logica
;PALASM Design Description
;------ Declaration Segment -----TITLE TUTOR1.PDS
PATTERN A
REVISION 1.0
AUTHOR D. SMETS
COMPANY KHLim-IWT
DATE 03/02/01
CHIP DECODER PAL16L8
; ------PIN Declarations -----PIN 2
X
PIN 3
Y
PIN 4
Z
PIN 10
GND
PIN 12
A
COMBINATORIAL
PIN 13
B
COMBINATORIAL
PIN 14
C
COMBINATORIAL
PIN 15
D
COMBINATORIAL
PIN 16
E
COMBINATORIAL
PIN 17
F
COMBINATORIAL
PIN 18
G
COMBINATORIAL
PIN 19
H
COMBINATORIAL
PIN 20
VCC
; INPUT
; INPUT
; INPUT
; POWER
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; POWER
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld : 3-naar-8 decoder
• Declaraties
BIN/DEC
Z
Y
X
4
3
2
0
0
1
1
2
2
3
4
5
6
7
12
13
14
15
16
17
18
19
A
B
C
D
E
F
G
H
PAL16L8
Programmeerbare Logica
;PALASM Design Description
;------ Declaration Segment -----TITLE TUTOR1.PDS
PATTERN A
REVISION 1.0
AUTHOR D. SMETS
COMPANY KHLim-IWT
DATE 03/02/01
CHIP DECODER PAL16L8
; ------PIN Declarations -----;pins
1
2
3
4
NC X Y Z
;pins
11 12 13 14
NC A B C
5
NC
15
D
6
NC
16
E
7
NC
17
F
8
NC
18
G
9
NC
19
H
10
GND
20
VCC
in de oorspronkelijke
PALASM-versie
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld : 3-naar-8 decoder
• Vergelijkingen
BIN/DEC
Z
Y
X
4
3
2
0
0
1
1
2
2
3
4
5
6
7
12
13
14
15
16
17
18
19
A
B
C
D
E
F
G
H
PAL16L8
Programmeerbare Logica
; ------PIN Declarations -----PIN 2
X
PIN 3
Y
PIN 4
Z
PIN 10
GND
PIN 12
A
COMBINATORIAL
PIN 13
B
COMBINATORIAL
PIN 14
C
COMBINATORIAL
PIN 15
D
COMBINATORIAL
PIN 16
E
COMBINATORIAL
PIN 17
F
COMBINATORIAL
PIN 18
G
COMBINATORIAL
PIN 19
H
COMBINATORIAL
PIN 20
VCC
; INPUT
; INPUT
; INPUT
; POWER
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; POWER
;------ Boolean Equation Segment -----EQUATIONS
/A = /X * /Y * /Z
/B = /X * /Y * Z
/C = /X * Y * /Z
/D = /X * Y * Z
/E = X * /Y * /Z
/F = X * /Y * Z
/G = X * Y * /Z
/H = X * Y * Z
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld : 3-naar-8 decoder
• Simulatie
STIMULI
CONTROLE
VAN DE
UITGANGEN
Programmeerbare Logica
;------ Simulation Segment -----SIMULATION
TRACE_ON X Y Z A B C D E F G H
; /A = /X * /Y * /Z
SETF /X /Y /Z
CHECK /A B C D E F G H
; /B = /X * /Y * Z
SETF /X /Y Z
CHECK A /B C D E F G H
; /C = /X * Y * /Z
SETF /X Y /Z
CHECK A B /C D E F G H
; ……...
SETF /X Y Z
CHECK A B C /D E F G H
SETF X /Y /Z
CHECK A B C D /E F G H
SETF X /Y Z
CHECK A B C D E /F G H
SETF X Y /Z
CHECK A B C D E F /G H
SETF X Y Z
CHECK A B C D E F G /H
TRACE_OFF
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld : 3-naar-8 decoder
• Resulterende JEDEC-file
PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92)
(C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992
TITLE :TUTOR1.PDS
PATTERN :A
REVISION:1.0
AUTHOR :D. SMETS
COMPANY:KHLim-IWT
DATE :03/02/01
PAL16L8
DECODER*
QP20*
QF2048*
G0*F0*
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld : 3-naar-8 decoder
• Resulterende JEDEC-file
L0000 11111111111111111111111111111111*
L0032 01110111011111111111111111111111*
L0064 00000000000000000000000000000000*
L0096 00000000000000000000000000000000*
L0128 00000000000000000000000000000000*
L0160 00000000000000000000000000000000*
L0192 00000000000000000000000000000000*
L0224 00000000000000000000000000000000*
L0256 11111111111111111111111111111111*
L0288 01110111101111111111111111111111*
L0320 00000000000000000000000000000000*
L0352 00000000000000000000000000000000*
L0384 00000000000000000000000000000000*
L0416 00000000000000000000000000000000*
L0448 00000000000000000000000000000000*
L0480 00000000000000000000000000000000*
L0512 11111111111111111111111111111111*
L0544 01111011011111111111111111111111*
L0576 00000000000000000000000000000000*
L0608 00000000000000000000000000000000*
L0640 00000000000000000000000000000000*
L0672 00000000000000000000000000000000*
L0704 00000000000000000000000000000000*
L0736 00000000000000000000000000000000*
L0768 11111111111111111111111111111111*
L0800 01111011101111111111111111111111*
L0832 00000000000000000000000000000000*
L0864 00000000000000000000000000000000*
L0896 00000000000000000000000000000000*
L0928 00000000000000000000000000000000*
L0960 00000000000000000000000000000000*
L0992 00000000000000000000000000000000*
L1024 11111111111111111111111111111111*
L1056 10110111011111111111111111111111*
L1088 00000000000000000000000000000000*
L1120 00000000000000000000000000000000*
L1152 00000000000000000000000000000000*
L1184 00000000000000000000000000000000*
L1216 00000000000000000000000000000000*
L1248 00000000000000000000000000000000*
L1280 11111111111111111111111111111111*
L1312 10110111101111111111111111111111*
L1344 00000000000000000000000000000000*
L1376 00000000000000000000000000000000*
L1408 00000000000000000000000000000000*
L1440 00000000000000000000000000000000*
L1472 00000000000000000000000000000000*
L1504 00000000000000000000000000000000*
Programmeerbare Logica
L1536 11111111111111111111111111111111*
L1568 10111011011111111111111111111111*
L1600 00000000000000000000000000000000*
L1632 00000000000000000000000000000000*
L1664 00000000000000000000000000000000*
L1696 00000000000000000000000000000000*
L1728 00000000000000000000000000000000*
L1760 00000000000000000000000000000000*
L1792 11111111111111111111111111111111*
L1824 10111011101111111111111111111111*
L1856 00000000000000000000000000000000*
L1888 00000000000000000000000000000000*
L1920 00000000000000000000000000000000*
L1952 00000000000000000000000000000000*
L1984 00000000000000000000000000000000*
L2016 00000000000000000000000000000000*
*
C3EE8*
EA6C
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld : 3-naar-8 decoder
• Resulterende JEDEC-file
0
1
2
3
4
5
6
7
/H = X * Y * Z
1
X2
1 3
0 2
1
5 7
4 6
9
8
1
2
1
6
2
0
0123
4567
11
8901
1111
2345
1111
6789
2222
0123
2222
4567
2233
8901
---X--XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
---X--XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
---X--XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
------XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
------XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
------XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
------XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
------XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
2
4
2
8
&
&
&
&
&
&
&
&
0
1
2
3
4
5
6
7
X
Y
1
EN
19
1
H
1
Z
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld 2 : een 4-bits teller
• Declaraties
;PALASM Design Description
;------ Declaration Segment -----TITLE CTR4.PDS
PATTERN A
REVISION 1.0
AUTHOR D. SMETS
COMPANY KHLim-IWT
DATE 03/02/01
CTR4
/SET
2S
CLK
C2
1+
CE
CHIP CTR4 PAL22V10
G1
/OE
EN
/CLR
R
S0
S1
S2
S3
Programmeerbare Logica
; ------PIN Declarations -----PIN 1
CLK
PIN 2
/CLR
PIN 3
/SET
PIN 12
GND
PIN 13
/OE
PIN 14
S0
REGISTERED
PIN 14
S1
REGISTERED
PIN 15
S2
REGISTERED
PIN 16
S3
REGISTERED
PIN 20
CE
PIN 24
VCC
NODE 1
GLOBAL
; INPUT
; INPUT
; INPUT
; POWER
; INPUT
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
; INPUT
; POWER
; INTERNAL
DIGITALE ELEKTRONICA 1ELO
PALASM voorbeeld 2 : een 4-bits teller
• Vergelijkingen
CTR4
/SET
2S
CLK
C2
1+
CE
G1
/OE
EN
/CLR
R
S0
S1
S2
S3
Programmeerbare Logica
EQUATIONS
GLOBAL.RSTF = CLR
; RESET if /CLR=0
S0 :=
/S0 * CE
; COUNT
+ S0 * /CE
; HOLD
+ SET
; SYNC. PRESET
S1 :=
S0 * /S1 * CE
; COUNT
+ /S0 * S1 * CE
+ S1 * /CE
; HOLD
+ SET
; SYNC. PRESET
S2 :=
S0 * S1 * /S2 * CE
; COUNT
+ /S1 * S2 * CE
+ /S0 * S2 * CE
+ S2 * /CE
; HOLD
+ SET
; SYNC. PRESET
S3 :=
S0 * S1 * S2 * /S3 * CE; COUNT
+ /S2 * S3 * CE
+ /S1 * S3 * CE
+ /S0 * S3 * CE
+ S3 * /CE
; HOLD
+ SET
; SYNC. PRESET
S0.TRST = OE
S1.TRST = OE
S2.TRST = OE
S3.TRST = OE
HLD.TRST = GND ; DEDICATE OUTPUT PIN AS INPUT
DIGITALE ELEKTRONICA 1ELO
ONTWERP-SOFTWARE voor SPLD : ABEL
• ABEL = Advanced Boolean Expression Language
– op de markt gebracht door DATA-I/O, een fabrikant van programmeertoestellen (en dus niet van PLD’s zelf)
– staat op een hoger niveau (compiler) dan PALASM (assembler)
» heeft complexere syntax-constructies
• kent bv. de instructie COUNT := COUNT + 1 om een teller te beschrijven
• bij PALASM moet je zelf de vergelijkingen voor de verschillende flipflops
afleiden
» kan meer onafhankelijk van de component gebruikt worden
– moet uiteraard hetzelfde doel vervullen
» design entry (met equations, truth tables en/of state diagrams)
» design simulation
» logic synthesis (= vertalen naar JEDEC-file)
– ook nu nog vaak onderdeel van grotere ontwerp-omgeving
• Andere PLD-compiler : CUPL (van Logical Devices)
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
ABEL - voorbeeld : 7-segment decoder
module bin7seg
title 'Binair naar 7-segment decoder'
D3,D2,D1,D0 pin;
a,b,c,d,e,f,g pin istype 'com';
bin = [D3,D2,D1,D0];
ON,OFF = 1,0;
L,H,X,Z = 0,1,.X.,.Z.;
@dcset
truth_table (bin -> [ a , b , c , d ,
0 -> [ ON, ON, ON, ON,
1 -> [OFF, ON, ON, OFF,
2 -> [ ON, ON, OFF, ON,
3 -> [ ON, ON, ON, ON,
4 -> [OFF, ON, ON, OFF,
5 -> [ ON, OFF, ON, ON,
6 -> [ ON, OFF, ON, ON,
7 -> [ ON, ON, ON, OFF,
8 -> [ ON, ON, ON, ON,
9 -> [ ON, ON, ON, ON,
10 -> [ ON, ON, ON, OFF,
11 -> [OFF, OFF, ON, ON,
12 -> [ ON, OFF, OFF, ON,
13 -> [OFF, ON, ON, ON,
14 -> [ ON, OFF, OFF, ON,
15 -> [ ON, OFF, OFF, OFF,
end
Programmeerbare Logica
e ,
ON,
OFF,
ON,
OFF,
OFF,
OFF,
ON,
OFF,
ON,
OFF,
ON,
ON,
ON,
ON,
ON,
ON,
f ,
ON,
OFF,
OFF,
OFF,
ON,
ON,
ON,
OFF,
ON,
ON,
ON,
ON,
ON,
OFF,
ON,
ON,
g ])
OFF];
OFF];
ON];
ON];
ON];
ON];
ON];
OFF];
ON];
ON];
ON];"A
ON];"b
OFF];"C
ON];"d
ON];"E
ON];"F
DIGITALE ELEKTRONICA 1ELO
ABEL - voorbeeld 2: 74HC161 (CTR4)
MODULE HC161Cnt
TITLE '74HC161 4-bit Counter Todd Morton, 11/21/02’
//Inputs
CLK,LD_L,CLR_L,ENP,ENT pin;
A,B,C,D pin;
//Output
QA,QB,QC,QD pin istype 'reg';
RCO pin istype 'com';
//Sets
LOADIN = [D,C,B,A];
COUNT = [QD,QC,QB,QA];
//Level Conversions
LOAD = !LD_L; CLEAR = !CLR_L;
EQUATIONS
COUNT.CLK = CLK;
COUNT.ACLR = CLEAR;
when (LOAD) then COUNT := LOADIN;
else when (!ENT) then COUNT := COUNT;
else when (!ENP) then COUNT := COUNT;
else COUNT := COUNT + 1;
RCO = (COUNT == [1,1,1,1]) & ENT;
END
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
ONTWERP-SOFTWARE voor CPLD en FPGA
• Complexere componenten vragen ook een ontwerpomgeving met een hogere complexiteit
– we gaan een FPGA met 10000 gates niet beschrijven met alleen maar
Booleaanse vergelijkingen
• Ontwikkelomgeving =
FRONT-END
• staat het kortst bij de gebruiker
• bevat DESIGN ENTRY en SIMULATION
• vaak van een onafhankelijke software-fabrikant
BACK-END
• staat het dichtst bij de component
• bevat DESIGN IMPLEMENTATION
• altijd van de fabrikant van de gekozen PLD
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
PLD fabrikanten
Programmeerbare Logica
PLD-software
DIGITALE ELEKTRONICA 1ELO
DESIGN ENTRY
Twee mogelijkheden voor DESIGN ENTRY :
• Schematic Capture
– tekenpakket om op grafische wijze het schema van de schakeling in
te voeren
– wordt onoverzichtelijk voor grote ontwerpen
• HDL = Hardware Description Language
– de schakeling wordt ‘beschreven’ met een soort programmeertaal
» beschrijving van de structuur en/of het gedrag van de schakeling
» vergelijk met ABEL, maar op een hoger niveau
» oorspronkelijk bedoeld voor specificatie en documentatie
» geschikt voor simulatie en voor automatische synthese
– in Europa : VHDL = VHSIC Hardware Description Language
(VHSIC = Very High Speed Integrated Circuit)
– in Amerika : VERILOG
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
VHDL
VHDL = VHSIC Hardware Description Language
(VHSIC = Very High Speed Integrated Circuit)
VHDL wordt gebruikt voor :
• specificatie & documentatie
• simulatie
• automatische synthese
• LET OP : synthetiseerbare VHDL is slechts een
beperkte subset van de volledige VHDL !
• GOUDEN RAAD : blijf in HARDWARE denken !!!
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
VHDL
DESIGN
entity naam
ENTITY
poort naam
a
ENTITY xor2 IS
PORT(a,b : IN bit;
c
: OUT bit);
END xor2;
b
xor2
c
poort-type
ARCHITECTURE
architecture naam
signaal declaratie
body
datatype
entity naam
ARCHITECTURE gedrag OF xor2 IS
SIGNAL d1,d2 : bit;
signaal-assignment
BEGIN
d1 <= not(a) and b;
d2 <= a and not(b);
c <= d1 or d2;
END gedrag;
Programmeerbare Logica
expressie
DIGITALE ELEKTRONICA 1ELO
SIMULATIE
Twee mogelijkheden voor SIMULATIE :
• functionele simulatie
– gebeurt onmiddellijk na het ingeven van het schema
(of na synthese van de HDL-code)
– controleert de logische werking van de schakeling
– houdt geen rekening met vertragingen of hanteert ‘unit-delay’
• timing simulatie
– kan pas gebeuren nadat de schakeling volledig is geïmplementeerd
in de gekozen component
– op dat ogenblik kent de software de juiste vertragingen
– er gebeurt nu een ‘back-annotation’, waarna de (zelfde) functionele
simulatie opnieuw kan gebeuren, maar nu wel rekening houdende
met de exacte te verwachten vertragingen
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO
SIMULATIE met behulp van TESTBENCH
Testbench
FPGA,
CPLD or
ASIC
• Use VHDL for simulation
stimulus
• Advantages :
– Common stimulus language
– Powerful constructs
– Two way communication with
design
• Great possibilities
Programmeerbare Logica
DIGITALE ELEKTRONICA 1ELO