Wykład 1 Elektronika IV rok Studium Zaoczne J.Kasperek P.J.Rajda
po co? 1G 256M 100M 10M 1M 100K 10K 4K 16K 256K 64K 8086 8085 16M 4M 1M 80386 80286 64M 80486 i??? Pentium i??? Wymogi pamięci: 1.50 na rok Wymogi CPU 1.35 na rok 4004 8080 1K 1970 1980 1990 1998
po co? Potrzeba narzędzia: 1970 - INTEL 4004 4 projektantów 1 tys. tranzystorów 1982 - INTEL 80286 1992 - INTEL PENTIUM 2002 200??? 20 projektantów 100 tys. tranzystorów 100 projektantów 3 mln tranzystorów 1000 projektantów 150 mln tranzystorów???? projektantów???? mln tranzystorów Współczesne wymagania: hardware-software codesign!!!
po co?
- organizacja zajęć 1. Wykład Wprowadzenie do układów PLD (Programmable Logical Devices) Języki opisu sprzętu: PALASM, ABEL, CUPL C, VHDL, VERILOG 2. Laboratorium Projekty Oprogramowanie 3. Zaliczenie 4. Egzamin Kontakt z prowadzącymi: C-3 p.502, tel. (617)3980 dr inż. Jerzy Kasperek kasperek@agh.edu.pl dr inż. Paweł J.Rajda pjrajda@agh.edu.pl http://fccm.agh.edu.pl
Program wykładu Wprowadzenie do układów PLD (Programmable Logic Devices) Klasyfikacja układów programowalnych Układy SPLD - przykłady struktur PAL i GAL Układy FPGA - przykład: seria Spartan2E Xilinx Język VHDL ( VHSIC Hardware Description Language ) Zakres zastosowania Przykłady kodu Pakiet Active HDL
Układy PLD Literatura Majewski, Łuba, Jasiński, Zbierzchowski, Programowalne moduły logiczne w syntezie układów cyfrowych Łuba, Markowski, Zbierzchowski, Komputerowe projektowanie układów cyfrowych w strukturach PLD Łuba, Jasiński, Zbierzchowski, Specjalizowane układy cyfrowe w strukturach PLD i FPGA Strony WWW producentów układów PLD www.altera.com www.atmel.com www.actel.com www.lattice.com www.xilinx.com Programmable Logic Jump Station www.optimagic.com
Układy PLD - klasyfikacja Source: Dataquest Logic Standard Logic ASIC Programmable Logic Devices (PLDs) Gate Arrays Cell-Based ICs Full Custom ICs SPLDs (PALs) CPLDs FPGAs SPLD Simple Programmable Logic Devices PAL (Programmable Array Logic, Vantis) GAL (Generic Array Logic, Lattice) PLA (Programmable Logic Array) CPLD Complex Programmable Logic Devices EPLD (Erasable Programmable Logic Device) PEEL (Programmable Electrically-Erasable Logic ) (ICT) EEPLD (Electrically-Erasable Programmable Logic Device) MAX (Multiple Array matrix, Altera) FPGA Field Programmable Gate Array fine grained, coarse grained
SPLD - Simple-Programmable Logic Devices PAL (Programmable Array Logic, AMD Vantis) PLA (Programmable Logic Array) GAL (Generic Array Logic, Lattice)
Podstawowa struktura układu typu PAL Układy typu PAL: programowalna matryca AND stała matryca OR
Układy PLD SPLD (Simple PLD) PAL (Programmable Array Logic) 16L8, 16R4, 16R6, 16R8 GAL (Generic Array Logic) 16V8, 20V8, 22V10, 26V12 PLA (Programmable Logic Array)
Układy PLD PAL16L8
Układy PLD PAL16L8
Układy PLD PAL16R8
Układy PAL rodziny 12,14,16,20 Technologia bipolarna Jednokrotne programowanie przez przepalenia fuse Rozkodowanie symbolu PAL xx Y z xx - liczba wejść Y - L-logika ujemna H-logika dodatnia C wyjścia komplementarne R wersja z przerzutnikami synchronicznymi RA wersja z przerzutnikami asynchronicznymi X, A wersja z układami arytmetycznymi S wersja z dzielonymi iloczynami z - liczba wyjść (kombinacyjnych lub rejestrowych)
Układy GAL - Generic Array Logic Rok 1985 Technologia E 2 CMOS Wielokrotne programowanie Czas kasowania 100ms GAL16V8 GAL 20V10 - światowy standard
Układy GAL ISP (In System Programmable) HDPLD High Density PLD
Układy PLD GAL22V10 W większych układach GAL liczba termów nie jest równa dla każdego pinu
Układy PLD GAL22V10 Makrocela układu GAL 22V10 Przerzutnik D z wejściami: Asynchronic Reset (AR) Synchronic Set (SR)
Makrocela układu GAL22V10
CUPL Compiler for Universal Programmable Logic Logical Devices, Inc.
Cykl projektowy PLD LST DOC MX ABS SI SO JED(1) JED(2) HEX opis projektu listing projektu (raport błędów) dokumentacja projektu rozwinięcie makr postać binarna projektu wektory testowe dla symulatora wyniki pracy symulatora JEDEC bez wektorów testowych JEDEC z wektorami testowymi ASCII hex
PRZYKŁAD cykl projektowy edycja (WAITGEN.PLD) kompilacja (WAITGEN.PLD) błąd? symulacja (WAITGEN.SI) błąd? programowanie układu
CUPL software
CSIM software
CUPL składnia języka Komendy preprocesora Liczby Listy Operatory logiczne Rozszerzenia zmiennych Równania logiczne Operatory porównania Tabele prawdy Automaty stanów Symulator
Case sensitive CUPL składnia języka Komentarz: /* to jest komentarz */ Każda linia, poza komentarzami i dyrektywami preprocesora, musi być zakończona przez średnik: każda linia; Równania logiczne: [!]variable[.extension] = expression; D0.OE = OUT_HIZ;!MEMW = MEM_SELECT;
CUPL liczby Liczba b 0 B 1101 O 663 D 92 h BA O [300..477] H 7FXX Podstawa bin bin oct dec hex oct (zakres) hex (zakres) Dziesiętnie 0 13 435 92 186 192..314 32512..32767
Zmienne indeksowe: CUPL listy zmiennych Pin 2 = AD0; Pin 3 = AD1; Pin 4 = AD2; Pin [2..4] = [AD0..2]; Pola zmiennych: Pin 2 = stop; Pin 3 = dir; Pin 4 = clear; FIELD mode = [stop, dir, clear]; bit2 bit1 bit0
CUPL operatory logiczne Operator Funkcja Przykład Priorytet! NOT!A 1 & AND A & B 2 # OR A # B 3 $ XOR A $ B 4
CUPL automaty stanów!warunek warunek stan0 stan1 stan2 wyjście=1 SEQUENCE nazwa_sekwencji { PRESENT stan0 IF warunek NEXT stan1 OUT wyjście; DEFAULT NEXT stan0; PRESENT stan1 NEXT stan2;... }
PRZYKŁAD - schemat adres 3000h 2800h RESET CPU_CLK RAM1 (2k) RAM0 (2k) RDY CPU DATA ADDRESS!MEMR!MEMW RESET PLD READY!ROM_CS!RAM_CS1!RAM_CS0 A A!CS R/!W!CS A ROM RAM1 RAM0 R/!W!CS D D D 2000h 1000h ROM (8k) 0000h
PRZYKŁAD przebiegi CPU_CLK A15..11 WAŻNY ADRES!MEMR WAIT1 WAIT2!ROM_CS READY
PRZYKŁAD wyprowadzenia A15 A14 A13 A12 A11!MEMW!MEMR RESET CPU_CLK 2 3 4 5 6 7 8 9 1 I I I I I I I I OE I/O I/O RO RO I/O I/O 19 18 15 14 13 12!ROM_CS READY WAIT1 WAIT2!RAM_CS1!RAM_CS0 11
PRZYKŁAD format pliku PLD Nagłówek Komentarz funkcjonalny Menu PLD Deklaracje we / wy Deklaracje pól bitowych i zmiennych pomocniczych Równania logiki
PRZYKŁAD deklaracje we/wy /** WEJŚCIA **/ PIN 1 = cpu_clk ; /* zegar CPU */ PIN [2..6] = [a15..11] ; /* Linie adresowe CPU */ PIN [7,8] =![memw,memr] ; /* Stroby zapisu i odczytu */ PIN 9 = reset ; /* Reset systemu */ PIN 11 =!oe ; /* Output Enable */ /** WYJŚCIA **/ PIN 19 =!rom_cs ; /* wybranie ROM */ PIN 18 = ready ; /* Sygnał READY CPU */ PIN 15 = wait1 ; /* Początek stanu Wait */ PIN 14 = wait2 ; /* Koniec stanu Wait */ PIN [13,12] =![ram_cs1..0]; /* wybranie RAM 0..1 */
PRZYKŁAD deklaracje, równania logiki /** DEKLARACJE PÓL BITOWYCH I ZMIENNYCH POMOCNICZYCH **/ FIELD memadr = [a15..11]; /* adres ROM / RAM */ memreq = memw # memr; /* zmienna pomocnicza */ /* dostęp do pamięci */ /* "memreq" */ /** RÓWNANIA SYMBOLICZNE **/ select_rom = memr & memadr:[0000..1fff]; /* dekodowanie ROM */ ram_cs0 = memreq & memadr:[2000..27ff]; /* dekodowanie RAM0 */ ram_cs1 = memreq & memadr:[2800..2fff]; /* dekodowanie RAM1 */ ready.oe = select_rom; /* sterowanie buforem */ /* linii READY */
PRZYKŁAD opis przy pomocy automatu stanów!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom Automat synchroniczny oczekuje w stanie S0 na wybór ROM przez CPU, po wybraniu ROM wstawia jeden cykl oczekiwania S1 i tam, przez sterowanie linią ready=0, zatrzymuje CPU tak, że dane z ROM mogą być przeczytane. Następnie przechodzi do S2 i po przeczytaniu danych przez CPU (nieaktywny select_rom) wraca do stanu S0.
PRZYKŁAD opis przy pomocy automatu stanów FIELD wait = [wait2,wait1]; /* pole bitowe "wait" */ $define S0 0 /* definicja symbolicznych nazw reprezentujących */ $define S1 1 /* aktualne stany bitów stanu */ $define S2 3 /* - dyrektywa preprocesora */ SEQUENCE wait { /* Definicja sekwencji */ PRESENT S0 IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF select_rom NEXT S1; /* czekaj aż żądanie dostępu */ DEFAULT NEXT S0; /* do ROM */ PRESENT S1 OUT rom_cs; /* steruj dalej "rom_cs" */ NEXT S2; /* przejdź do następnego stanu */ PRESENT S2 OUT ready; /* ustaw READY -> CPU czyta ROM */ /* ready.oe = select_rom */ IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF!select_rom NEXT S0; /* czekaj na następny dostęp */ DEFAULT NEXT S2; } /* czekaj aż CPU przeczyta */
PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S0 IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF select_rom NEXT S1; /* czekaj aż żądanie dostępu */ DEFAULT NEXT S0; /* do ROM */ CPU_CLK!ROM_CS READY
PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S1 OUT rom_cs; /* steruj dalej "rom_cs" */ NEXT S2; /* przejdź do następnego stanu */ CPU_CLK!ROM_CS READY
PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S2 OUT ready; /* ustaw READY -> CPU czyta ROM */ /* ready.oe = select_rom */ IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF!select_rom NEXT S0; /* czekaj na następny dostęp */ DEFAULT NEXT S2; } /* czekaj aż CPU przeczyta */ CPU_CLK!ROM_CS READY
PRZYKŁAD deklaracje, równania logiki!select_rom S0 rom_cs select_rom S1 rom_cs S2 rom_cs ready select_rom!select_rom PRESENT S2 OUT ready; /* ustaw READY -> CPU czyta ROM */ /* ready.oe = select_rom */ IF select_rom OUT rom_cs; /* asynchroniczne sterowanie */ /* linią "rom_cs" */ IF!select_rom NEXT S0; /* czekaj na następny dostęp */ DEFAULT NEXT S2; } /* czekaj aż CPU przeczyta */ CPU_CLK!ROM_CS READY
CPLD kontra FPGA typu PAL więcej logiki kombinacyjnej mała / średnia wielokrotna struktura 22V10 do 200 MHz przewidywalne opóźnienia ARCHITEKTURA GĘSTOŚĆ SZYBKOŚĆ typu Gate Array więcej przerzutników średnia / duża do kilku milionów bramek do 200 MHz opóźnienia zależne macierz łączeniowa POŁĄCZENIA połączenia odcinkami
Architektura FPGA Bloki we/wy (Input Output Block) Bloki logiki (Configurable Logic Block) Zasoby połączeniowe
Architektura FPGA
Cechy użytkowe układów FPGA Idealna technologia dla aplikacji dedykowanych (Fast Time-to-Market) Zalety integracji (niski koszt, mały pobór mocy, małe wymiary, System on Chip) Niższe koszty i mniejsze ryzyko niż układy ASIC (no NRE, minimum order size, or inventory risk, no long delay in design and testing) Bardzo szybkie przetwarzanie danych massively parallel operation much faster than DSP engines Reprogramowalne w każdym z etapów produkcji i użytkowania in design, in manufacturing, after installation allows unlimited product differentiation Technika Cyfrowa J.Kasperek P.J.Rajda 2002 Katedra Elektroniki AGH Kraków
Rozwój układów FPGA Bigger, Faster, Cheaper FPGAs Miliony bramek (8M dla XC2V800) Miliony bitów RAM dla aplikacji (3M w 18kb blokach dla XC2V800) >200 MHz częstotliwość zegara systemu 800 Mbps I/O transfer danych cena od 0.3 to 3 za blok Logic Cell (LUT plus flip-flop ) najniższa dla serii SpartanXL Najwyższa dla serii Virtex-II FPGAs have evolved from glue logic to system platforms Technika Cyfrowa J.Kasperek P.J.Rajda 2002 Katedra Elektroniki AGH Kraków
Xilinx Spartan2E
Kit Digilent D2E Układ XC2S200E-PQ208: macierz CLB 28 x 42 (1,176 CLBs, 5,292 LCs) 146 sygnałów dla użytkownika 75,264 bity pamięci rozproszonej 56K pamięci blokowej (14 bloków) Płyta D2E: 122 + 21 sygnałów dla użytkownika UV, 3.3V, GND na każdym złączu JTAG & RS232 header, MODE jumper Program Enable switch
Kit Digilent DIO1 & DIO2
Xilinx Spartan2E coarse grain 50,000 600,000 system gates 200+ MHz system performance clock DLLs pamięć użytkowa Select RAM+ rozproszona do 220 Kb blokowa do 280 Kb (bloki 4Kb) zewnętrzna: ZBT, DDR, QDR... pamięć konfiguracji SRAM (4 tryby + ReadBack) port JTAG (testowanie + konfiguracja) zasilanie: CLBs 2,5V IOBs 3,3V max.
Spartan2E - CLB Configurable Logic Block przerzutnik / zatrzask Clock Enable SS / SR / AP / AC LUT (Look-Up-Table)
Spartan2E - CLB LUT: 4-wejściowy generator funkcji SinglePort / DualPort RAM 16-stopniowy rejestr przesuwny
Spartan2E CLB Multipleksery: MUXF5 dowolne funkcje 5 zmiennych multiplekser 4:1 wybrane funkcje 6 9 zmiennych MUXF6 dowolne funkcje 6 zmiennych multiplekser 8:1 wybrane funkcje 7 19 zmiennych
Spartan2E - IOB Programowalne: pull-up pull-down weak-keeper clamp diode
Spartan2E Zasoby połączeniowe Lokalne (Local Routing): pomiędzy LUT / FF / GRM, sprzężenia zwrotne, bezpośrednie połączenia poziome. Ogólne (General Purpose Routing) GRM (Global Routing Matrix), 4 kierunki po 6 linii typu single, 4 kierunki po 24 linie hex sterowanie na jednym z końców, odbiór na drugim końcu lub w połowie, 1/3 dwukierunkowych, 12 linii long (dwukierunkowe, pionowe i poziome, przez całą strukturę).
Połączenia I/O (I/O Routing - VersaRing) Dedykowane (Dedicated Routing) 4 dzielone linie 3-stanowe, 2 linie carry Globalne (Global Routing) primary: 4 ścieżki zegarowe (Clock Routing) secondary: 24 backbone lines, sterują 12 pion. długimi liniami Spartan2E Zasoby połączeniowe
Spartan2E Zasoby pamięciowe
Spartan2E Distributed RAM SinglePort RAM 16x1 SinglePort RAM 32x1
Spartan2E Distributed RAM DualPort RAM 16x1 ShiftRegister 32x1
Spartan2E Block RAM
Spartan2E konfiguracja Tryby konfiguracji: Slave Serial Master Serial Slave Parallel (SelectMAP) Boundary Scan (JTAG) ReadBack: weryfikacja pamięci konfiguracji oraz stanów przerzutników i zawartości pamięci (debug)
VHDL co to jest? Definicja VHDL - VHSIC Hardware Description Language Very High Speed Integrated Circuit It is "a formal notation intended for use in all phases of the creation of electronic systems.... it supports the development, verification, synthesis, and testing of hardware designs, the communication of hardware design data..." [IEEE Standard VHDL Language Reference Manual]
VHDL jak, gdzie, kiedy? Zakres stosowania Modelowanie A(1..0) A= 01? Z Z <= 1 when A = 01 else 0 ;
VHDL jak, gdzie, kiedy? Zakres stosowania Symulacja A(1) A(0) Z
VHDL jak, gdzie, kiedy? Zakres stosowania Synteza (automatyczna) translacja opisu w języku HDL na strukturę w postaci listy połączeń elementarnych bloków funkcyjnych docelowej platformy sprzętowej (bramek, przerzutników, pamięci i innych) A(0) A(1) Z
VHDL jak, gdzie, kiedy? Projektowanie systemu
VHDL jak, gdzie, kiedy? Proces projektowania
VHDL jednostki projektowe Jednostki projektowe Biblioteki entity architecture configuration package kompilator VHDL entity architecture configuration package
VHDL jak, gdzie, kiedy? Jednostki projektowe entity name entity COMPARE is port (A,B: in bit; C: out bit); end COMPARE; architecture style of name architecture BEHAVIORAL of COMPARE is begin process (A,B) begin if (A=B) then C <= 1 ; else C <= 0 ; end if; end process; end arch_behavioral;
VHDL przykłady Dekoder entity DECODER is port(d: in bit_vector (0 to 3); ZERO: out boolean; ONE: out boolean; EIGHT: out boolean; NINE: out boolean); end DECODER; architecture FIRST of DECODER is begin NINE <= (D= 1001 ); EIGHT <= (D= 1000 ); ONE <= (D= 0001 ); ZERO <= (D= 0000 ); end FIRST;
VHDL przykłady Komparator entity COMPARE is port(a,b: in bit_vector (0 to 7); EQL: out bit_vector (0 to 7)); end COMPARE; architecture SECOND of COMPARE is begin EQL <= not (A xor B); end SECOND; Gdzie na tym schemacie jest błąd?
VHDL przykłady Multiplekser entity MPLEXER is port(d: in bit_vector (0 to 7); A: in integer range 0 to 7; X: out bit); end MPLEXER; architecture THIRD of MPLEXER is begin X <= D(A); end THIRD;
VHDL przykłady Sumator use IEEE.STD_LOGIC_UNSIGNED.all; entity SUM is port(a,b: in std_logic_vector (0 to 2); Cin: in std_logic; S: out std_logic_vector (0 to 2); Cout: out std_logic); end SUM; architecture FOURTH of SUM is signal V: std_logic_vector (0 to 3); begin V <= A + B + Cin; S <= V(0 to 2); Cout <= V(3); end FOURTH;
VHDL przykłady Licznik architecture FIFTH of COUNT is begin process (C, CLR) begin if CLR='1' then Q := 0; elsif C='1' and C'event then if CE='1' then if Q = 9 then Q := 0; else Q := Q + 1; end if; end if; end if; end process; end FIFTH;
VHDL przykłady Powielanie logiki entity loop_stmt is port (a: bit_vector (0 to 3); m: out bit_vector (0 to 3)); end loop_stmt; architecture example of loop_stmt is begin process (a) variable b: bit; begin b := '1'; for i in 0 to 3 loop b := a(3-i) and b; m(i) <= b; end loop; end process; end example;
VHDL i co z tego? Zalety Specyfikacja projektu niezależna od technologii możliwość współpracy z wieloma producentami uniknięcie problemów z wycofywanymi technologiami łatwe ulepszenia i poprawy Automatyzacja projektowania niskiego poziomu krótszy czas projektowania redukcja kosztów eliminacja błędów niskiego poziomu Poprawa jakości projektu łatwe sprawdzanie opcjonalnych technologii weryfikacja działania na wysokim poziomie łatwa weryfikacja implementacji modularność projektu łatwa wymiana do innych celów
VHDL - wczoraj 1980 DoD USA początek programu rozwijania technologii układów VHSIC (Very High Speed Integrated Circuits) 1981 Woods Hole, Massachusetts - konferencja na temat założeń przyszłego standardu HDL 1983 DoD ustala założenia VHDL: VHSIC Hardware Description Language kontrakt otrzymują : Intermetrics, TI i IBM 1984 gotowa wersja 6.0 1985 zwolnienie z restrykcji ITAR (US International Traffic and Arm Regulation), VHDL 7.2 wraz z referencjami przekazany do IEEE celem standaryzacji i dalszego rozwoju 1987 wydany opis IEEE Std 1076 1993 wydana nowelizacja IEEE Std 1076-1993 2000 wydana errata IEEE Std 1076a-1993
VHDL - jutro VHDL Analysis and Standardization Group (VASG) VHDL 200x TextIO enhancements/improvements Direct C/C++, Verilog calls / interface Performance XMR (Signal Spy)
VHDL literatura A Guide to VHDL, S. Mazor, P. Langstraat VHDL Analysis and Modelling of Digital Systems, Z. Navabi VHDL Hardware Description and Design, R. Lipsett, C. Schaefer, C. Ussery The VHDL Cookbook, P. J. Ashenden VHDL programming: with advanced topics, L. Baker VHDL starter's guide, S. Yalamanchili VHDL for designers, S. Sjoholm, L. Lindh VHDL made easy!, D. Pellerin, D. Taylor VHDL answers to frequently asked questions, B. Cohen VHDL and AHDL digital systems implementation, F. A. Scarpino VHDL: język opisu i projektowania układów cyfrowych, W. Wrona Active-VHDL Series BOOK#2 EVITA Interactive Tutorial, J. Mirkowski, M. Kapustka, Z. Skowroński, A. Biniszkiewicz VHDL: a logic synthesis approach, D. Naylor, S. Jones
VHDL literatura Kevin Skahill Józef Kalisz Marek Zwoliński Włodzimierz Wrona
VHDL zasoby w Internecie Grupa dyskusyjna: comp.lang.vhdl EDA Industry Working Groups homepage: http://www.eda.org/ Accellera: http://www.accellera.org/ Programmable Logic Jump Station: http://www.optimagic.com Design Automation Cafe: http://www.dacafe.com/ The Hamburg VHDL archive: http://tech-www.informatik.unihamburg.de/vhdl/vhdl.html Doulos High Level Design Web site: http://www.doulos.com/ RASSP WWW site: http://www.eda.org/rassp/ ESA (European Space Agency): http://www.estec.esa.nl/wsmwww/vhdl/vhdlpage.html University of Cincinnati: ftp://ftp.ececs.uc.edu/pub/vhdl Leroy's Engineering Web Site: http://www.interfacebus.com or http://www.interfacebus.com/frames.html VHDL-online, University of Erlangen-Nürnberg: http://www.vhdl-online.de/ VHDL info pages of the Microelectronics Department (University of Ulm, Germany): http://mikro.e-technik.uni-ulm.de/vhdl/vhdl_infos.html
VHDL tutoriale An Introductory VHDL Tutorial, Green Mountain Computing Systems: http://www.gmvhdl.com/vhdl.html VHDL Synthesis Tutorial by Bob Reese, Electrical Engineering Department Mississippi State University: http://www.erc.msstate.edu/~reese/vhdl_synthesis/ Introduction to VITAL '95 by Steve Schulz: http://vhdl.org/vi/vital/wwwpages/steves/ VHDL-Modelling And Synthesis Of The DLXS RISC Processor by Martin Gumm, University of Stuttgart: ftp://ftp.informatik.uni-stuttgart.de/pub/vhdl/vlsi_course/ Doulos High Level Design Web site; A Hardware Engineers Guide to VHDL: http://www.doulos.com/hegv/index.htm VHDL Synthesis Tutorial from APS: http://www.associatedpro.com/aps/x84lab/ Interactive VHDL Tutorial from Aldec, Inc.: http://www.aldec.com/registration/evita_vhdl_download.htm FPGA Synthesis by Scott E. Harrington: http://www.ee.duke.edu/research/vhdl_tutorial/ VHDL Tutorial by Ulrich Heinkel, Thomas Bürner and Martin Padeffke (in English and German): http://www.vhdl-online.de/~vhdl/tutorial/ VHDL-FSM-Tutorial by Martin Padeffke: http://www.vhdl-online.de/fsm/ VHDL Verification Course by Stefan Doll: http://www.stefanvhdl.com/ A small VHDL-Tutorial: http://www.eej.ulst.ac.uk/tutor/vhdnotes.html MicroLab VLSI Design course: http://www.microlab.ch/academics/courses/vlsi/
VHDL free IP cores OpenIP home page: http://www.opencores.org/oipc/ The Free-IP Project Home Page: http://www.free-ip.com/ Free behavioral models from Alatek: http://www.alatek.com/ The Hamburg VHDL archive: http://tech-www.informatik.unihamburg.de/vhdl/vhdl.html RASSP www site: http://www.eda.org/rassp/ Doulos High Level Design Web site; Monthly-updated Original Models (developed by Doulos): http://www.doulos.com/fi/ EDIF LPM - Library of Parameterized Modules: http://www.edif.org/edif/lpmweb/ Micron Technology, Inc. (memories): http://www.micron.com/mti/ A VHDL synthesizable model for the MICROCHIP PIC 16C5X microcontroller by Tom Coonan: http://www.mindspring.com/~tcoonan/ VHDL Library of Arithmetic Units developed by R. Zimmermann: http://www.iis.ee.ethz.ch/~zimmi/arith_lib.html CMOSexod: http://www.cmosexod.com/
VHDL firmy (produkty) Accolade Design Automation, (PeakFPGA) Aldec, (Active-HDL) Cadence Design Systems Cypress Semiconductor (Warp) Data I/O Corporation (Synario) Green Mountain Computing Systems, (VHDL Studio) Model Technology, (V-System, ModelSim) Exemplar (LeonardoSpectrum) Synplicity (SynplifyPro) Synopsys (FPGA Compiler, FPGA Express) InnovEDA, (dawniej: Viewlogic Systems) Xilinx, (XST)
VHDL Aldec / Alatec Produkty Software (ActiveCAD, ActiveHDL) Hardware-based Simulation Accelerators IP Cores Donacja dla laboratorium: Komputery 8 PC Oprogramowanie (ActiveHDL) 20 sites license (professional) Student Edition Oddział Kraków!
VHDL Aldec / Alatec Praktyki studenckie Prace dyplomowe (IP Cores) µp/µc: PIC17C4x, PIC16C5x, 8051-SoC peryferia: 8251-SIO, 8255-PIO, 8257-DMA, 8259-INT interfejsy: CAN, UART/IrDA, USB, I2S, PS/2 telekom: Reed-Solomon, Viterbi, Utopia, DTMF, MP3, ADPCM i wiele nowych! Praca zawodowa
ActiveHDL moduły
ActiveHDL moduły
ActiveHDL Design Flow
ActiveHDL HDL
ActiveHDL BDE
ActiveHDL FSM
ActiveHDL Design Browser
ActiveHDL Waveform Viewer
ActiveHDL List Viewer
ActiveHDL Library Manager
Ciąg dalszy nastąpi...