FÖRELÄSNING 8 INTRODUKTION TILL DESIGN AV DIGITALA ELEKTRONIKSYSTEM Innehåll Designflöde Översikt av integrerade kretsar Motivation Hardware Description Language CAD-verktyg 1
DESIGNFLÖDE FÖR DIGITALA SYSTEM Designspecifikation Verktyg för Computer-Aided Design Simulera och modifiera designen tills den fungerar som önskat Design Entry Simulera designen Överför designen Manuellt eller automatiskt Överför designen till kretsar (fysisk implementation) 2
SCHEMATISK DESIGN Grafisk metod Placera fördefinierade komponenter i ritområdet Koppla ihop komponenternas ingångar och utgångar för att skapa den önskade funktionen 3
EXEMPEL 1: SYNTES AV KOMBINATORISK LOGIK Implementera med tillgängliga grindar funktionen: Z = (A+B) (C+D) 4
EXEMPEL 2: ANALYS AV EN TILLSTÅNDSMASKIN Vad är denna tillståndsmaskins funktion? A=0 A=1 0 1 A=1 A=0 Strukturell beskrivning -Ihopkoppling av fördefinierade komponenter -Netlist på grind-nivå Beskrivning av beteende -Beskriver hur den fungerar -Säger ingenting om hur den är implementerad 5
EXEMPEL 3: DESIGN MED HARDWARE DESCRIPTION LANGUAGES 8-bitsadderare architecture rtl of add8 is begin process (a,b) variable s_var : std_logic_vector(8 downto 0); begin s_var := ( 0 & a) + ('0' & b); s <= s_var(7 downto 0); cout <= s_var(8); end process add; end rtl; a b s cout 6
FORTS. EXEMPEL 3 Automatisk syntes av adderarens kod 7
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; end rtl; enable reset up q 8
FORTS. EXEMPEL 4 Automatisk syntes av räknarens kod 9
HARDWARE DESCRIPTION LANGUAGE Fördelar Jämfört med schematisk design är det enklare att beskriva och läsa designens funktion Koden är oberoende av implementationsteknologi Designen kan implementeras med olika teknologier Koden kan återanvändas Parametriserbar kod 10
IMPLEMENTATIONSTEKNOLOGIER En design kan implementeras i olika teknologier Fysisk implementation (automatisk) Standardkomponenter Programmerbara kretsar Applikationsspecifika t.ex. TTL 74-serien t.ex. PAL, PLA, FPGA ASIC (Application Specific IC) 11
PROGRAMMABLE ARRAY LOGIC PAL Förkonstruerade byggblock med många AND-/OR-grindar Använder sig egentligen av NOR- och NAND-grindar Kretsen kan konfigureras ( programmeras ) genom att bryta kopplingar Blockdiagram för den programmerbara kretsen implementerar logiska uttryck på Summa av Produkt (SOP) form inputs AND matrix product term OR matrix outputs 12
INNAN PROGRAMMERING Alla möjliga kopplingar är tillgängliga innan programmering AND-plan Programmerbar koppling OR-plan 13
EFTER PROGRAMMERING Kopplingar tas bort Fuse Normalt har man kopplingar och tar bort de man inte behöver Anti-fuse Normalt har man inga kopplingar, och skapar de man behöver A B C AB B'C AC' B'C' A F0 F1 F2 F3 14
EXEMPEL Förenklad notation alla kopplingar ritas ej ut Visa när det finns en koppling till ingången Implementera F0=AB + A B och F1=CD + C D A B C D AB A'B' CD' C'D AB+A'B' CD'+C'D 15
GATE-ARRAYS Enkla logikgrindar Transistorer implementerar kombinatoriska och sekventiella kretsar Interconnects Trådar för att koppla ihop block I/O block Speciella block för koppling till externa signaler Lägg till kopplingar för interconnects Metalltrådar läggs till 16
BYGGA STORA PROGRAMMERBARA KRETSAR Alternativ 1: CPLD (Complex Prog. Logic Device) Sätt flera PALs på samma chip Lägg till programmerbara interconnects mellan PALs Alternativ 2: FPGA Ger samma funktion som Gate-array Kallas Field Programmable Gate Array (FPGA) Detta kräver Ett sätt att implementera konfigurerbara logiska grindar Ett sätt att göra kopplingarna på 17
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 flera miljoner grindar per chip 18
FPGA Logikblock Implementerar kombinatorisk och sekventiell logik Interconnects Trådar för att koppla ihop block I/O block Speciella block för koppling till externa signaler 19
FPGA FRÅN XILINX CLB CLB Slew Rate Control Passive Pull-Up, Pull-Down Vcc Switch Matrix D Q Output Buffer Pad CLB CLB Q D Delay Input Buffer Programmable Interconnect C1 C2 C3 C4 I/O Blocks (IOBs) H1 DIN S/R EC G4 G3 G2 G1 F4 F3 F2 F1 K G Func. Gen. F Func. Gen. H Func. Gen. DIN F' G' H' G' H' DIN F' G' H' H' F' 1 1 S/R Control S/R Control D SD Q EC RD D SD Q EC RD Y X Configurable Logic Blocks (CLBs) 20
COMPUTER-AIDED DESIGN Det är inte praktiskt möjligt att göra en design för en FPGA manuellt För mycket logik att hantera Hardware description language (HDL) Hög-nivå specifikation för logiken Validering: hög-nivå simulering Används för att hitta designfel tidigt i designfasen Syntes av logik Kompilerar HDL-program till grindar Överföring av designen till implementeringsteknologin (FPGA) 21
VHDL ETT HÅRDVARUBESKRIVNINGSSPRÅK (HDL) Det finns två HDLs som har en väl spridd användning VHDL Verilog HDL VHDL Very High Speed Integrated Circuit Hardware Description Language Historia Skapades av Amerikanska Försvarsdepartementet för att dokumentera designer Standardiserades av IEEE (1076 VHDL) 1993 22
BAKGRUND TILL VHDL Problem Ökade krav på design, implementering och test av system med ökande komplexitet på kortare tid Lösning (?) Ett hög-nivåspråk som tillåter beskrivning av digital hårdvara (HDL) HDL och CAD stöder automatisk syntes av designer Programmerbar logik för snabb implementering 23
BAKGRUND TILL VHDL Anledningar att använda HDL Hög-nivåspråk kan bli kraftfulla och flexibla Designen kan göras oberoende av implementeringsteknologi (teknologioberoende) Standardiserade språk gör det möjligt att använda CADverktyg från olika leverantörer (plattformsoberoende) Kortar ned tiden från idé till produkt eller prototyp 24
DESIGNFLÖDE FÖR FPGA Design Entry 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; Simulera och modifiera designen tills den fungerar som önskat Simulera designen Automatisk överföring av designen Syntes av logik (Automatisk) Implementering (Automatisk) Place and Route 25
DESIGNVERKTYG I VHDL Data från komponenttillverkaren Specificerade av designern Design Entry Test Bench Generera testdata Analysera resultaten Teknologi Data för grindarna t.ex. fördröjningar, energianvändning Direktiv t.ex. klockfrekvens VHDL-simulator Syntesverktyg Vågformer Netlist på grindnivå 26
DESIGNVERKTYG II Netlist på grindnivå Place & Route -verktyg Post-layout -simulering Binär-fil för programmering av komponenten Grind-fördröjningar efter place & route Vågformer 27
SLUT PÅ FÖRELÄSNING 8 Innehåll Designflöde Översikt av integrerade kretsar Motivation Hardware Description Language CAD-verktyg 28