La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Du Software au Hardware

Présentations similaires


Présentation au sujet: "Du Software au Hardware"— Transcription de la présentation:

1 Du Software au Hardware
Introduction aux composants programmables FPGA Grégory ESTRADE

2 Introduction aux FPGA - Plan
Electronique numérique Logique programmable Conception hardware sur FPGA Langages et outils Bases Exemples simples Projets avancés En pratique

3 Introduction aux FPGA – Electronique numérique
Bases Portes logiques Latches, Flip-flops Horloge, Bus... Série 7400 et 4000 Premiers circuits intégrés déployés dans les 70s Familles TTL et CMOS Accessible aux hobbyistes Applications : « glue logic », systèmes complets ( )

4 Source : Wikipedia

5 Introduction aux FPGA – Electronique numérique
Circuits avancés ROM, RAM CPU, DSP (audio, vidéo, télécoms… ), MCU (Microcontrôleurs) Contrôleurs USB, Ethernet… ASIC DAC, ADC, capteurs, servo-moteurs… Logique programmable PAL, GAL CPLD, FPGA

6 Logique programmable Synthèse combinatoire Circuits séquentiels
Composants

7 Synthèse combinatoire
S = Ci./A./B + /Ci.A./B + /Ci./A.B + Ci.A.B Co = Ci.A./B + Ci./A.B + /Ci.A.B + Ci.A.B

8 PAL = Programmable Array Logic
Source : Wikipedia

9 Introduction aux FPGA – Logique programmable
Synthèse combinatoire Gate Array (PAL, PLA, GAL) ROM Microcontrôleur ( )

10 Circuits séquentiels Horloge, bascules Finite State Machine
Référence : « Du Binaire au Processeur » - Emmanuel Mesnard

11 Introduction aux FPGA – Logique programmable
Composants : CPLD Apparition dans les 80s. Capacité : portes (500 macrocells). Configuration stockée « on-chip ». Langages de haut niveau (HDLs).

12 Introduction aux FPGA – Logique programmable
Composants : FPGA Extension des CPLD, architecture plus flexible Capacité : millions de portes Configuration stockée sur EEPROM externe Éléments dédiés : RAM, multiplicateurs, CPU cores...

13 Source : http://www.chrec.ufl.edu/

14 Introduction aux FPGA – Logique programmable
Composants : FPGA (suite) Remplacement des ASICs, DSP... Constructeurs : Xilinx, Altera, Lattice, Actel... Développement combiné software/hardware Runtime reconfiguration

15 Conception hardware sur FPGA
Langages et outils Bases du langage VHDL Exemple simple Projets avancés

16 Introduction aux FPGA – Conception
Outils (Xilinx) Spartan-3 Starter Board ISE WebPack ModelSim Source : Diligent

17 Introduction aux FPGA – Conception
Etapes Edition des sources Edition du fichier UCF : « User Constraints File » Répartition des signaux de l’entité principale sur des pins Contraintes de timing IO Standards (LVTTL, LVCMOS33, LVCMOS25…) Synthèse et génération du fichier programme Génération de l’image EEPROM Flashage de l’EEPROM

18 Introduction aux FPGA – Conception
Langages VHDL Origine : DoD américain Syntaxe ADA Meilleure abstraction Verilog Origine : industrie Syntaxe proche du C Plus simple d’apprentissage, plus concret Saisie de schémas

19 Introduction aux FPGA – Conception
Langages (suite) Software Programming Language Compilation en langage machine Exécution séquentielle Hardware Description Language Synthèse en « portes et câbles » Exécution concurrente Exécution séquentielle en simulation (Test benchs)

20 Introduction aux FPGA – Conception
Langages (suite) Pièges Exécution concurrente « Optimisations » Synthèse (guidage, asynchronisme…) Problèmes hardware (Routage, clock skew, SSO…) Remèdes Simulation Rapports de synthèse Visualisation à l’oscilloscope, analyseur logique

21 VHDL - Porte ET à 2 entrées
-- imports library IEEE; use IEEE.std_logic_1164.all; -- entité entity porte_et is port( a,b : in std_logic; s : out std_logic ); end porte_et; -- architecture architecture rtl of porte_et is begin s <= a and b; end rtl;

22 VHDL - Utilisation de la porte ET à 2 entrées
library IEEE; use IEEE.std_logic_1164.all; entity mon_systeme is … … end mon_systeme; architecture arch of mon_systeme is -- déclaration de porte_et pour utilisation component porte_et is port( a,b : in std_logic; s : out std_logic ); end component; -- déclaration de « registres » 8 bits signal op1 : std_logic_vector(7 downto 0); signal op2 : std_logic_vector(7 downto 0); signal res : std_logic_vector(7 downto 0); begin -- instanciation de 8 portes_et et8 : for i in op1’range generate et8_0 : porte_et port map (a => op1(i), b => op2(i), s => res(i)); end generate et8; end arch;

23 Autres exemples : représentation d’un MUX
-- template 1: X <= A when S = '1' else B; -- template 2: with S select X <= A when '1' else B; -- template 3: process(A,B,S) begin case S is when '1' => X <= A; when others => X <= B; end case; end process; -- template 4: if S = '1' then X <= A; else X <= B; end if; Source : Wikipedia

24 Autres exemples (suite)
-- logique 3 états et « don’t care » : B <= A when CE = ‘0’, ‘Z’ when OE = ‘1’ else ‘X’; -- horloge et reset asynchrone process(clk, reset) if (reset = ‘0’) then … … elsif clk’event and clk = ‘1’ then end if; begin end process; -- simulation : génération d’une horloge process clk <= ‘0’; wait for 20ns; clk <= ‘1’;

25 Introduction aux FPGA – Conception
Exemple : Communication RS-232 Utilisation d’un convertisseur (MAX232)

26 Introduction aux FPGA – Conception
Exemple : Communication RS-232 Caractéristiques Fonctionnement à 16Mhz Communication à 9600 bps, format 8N1 Exemple d’interface Caractères à lire et à écrire Signal de demande d’écriture Signal « busy  » en écriture Signal de demande de lecture Signal « avail »  en lecture Reset

27 Exemple : Communication RS-232
entity UART is port( clk : in std_logic; reset : in std_logic; tx : out std_logic; rx : in std_logic; rd : in std_logic; rd_data : out std_logic_vector(7 downto 0); avail : out std_logic; wr : in std_logic; wr_data : in std_logic_vector(7 downto 0); busy : out std_logic ); end UART;

28 Introduction aux FPGA – Conception
Exemple : Communication RS-232 Fonctionnement Suréchantillonage x16 (utile en réception uniquement) Compteur serclk_cnt (adapté au baudrate) / 9600 / 16 = 103 Compteurs rx_cnt et tx_cnt sur 8 bits 4 bits de poids faible : suréchantillonage 4 bits de poids fort : compteur des bits à transmettre/recevoir Bit de start Bits de données Bit de stop

29 Architecture de l’UART – Vue d’ensemble
architecture rtl of UART is -- signaux de contrôle (non détaillés) signal serclk_cnt : std_logic_vector(6 downto 0); signal tx_data : std_logic_vector(7 downto 0); signal tx_cnt : std_logic_vector(7 downto 0); signal rx_data : std_logic_vector(7 downto 0); signal rx_cnt : std_logic_vector(7 downto 0); begin process(clk, reset) if reset = ‘0’ then -- réinitalisation (non détaillée) elsif rising_edge(clk) then -- gestion des signaux de contrôle (non détaillée) serclk_cnt <= serclk_cnt + 1; if serclk_cnt = 103 then serclk_cnt <= (others => '0'); -- unité de réception -- unité d’émission end if; end process; end rtl;

30 Architecture de l’UART – Emission
-- un ordre d’écriture positionne tx_cnt à ‘ ’ et busy à ‘1’ if tx_cnt(7 downto 4) = "0000" then tx <= '1'; elsif tx_cnt(7 downto 4) = "0001" then -- start bit tx <= '0'; tx_cnt <= tx_cnt + 1; elsif tx_cnt(7 downto 4) < "1010" then -- data bits tx <= tx_data(0); if tx_cnt(3 downto 0) = "1111" then tx_data <= "0" & tx_data(7 downto 1); end if; elsif tx_cnt(7 downto 4) = "1010" then -- stop bit else busy <= ‘0’; tx_cnt <= " ";

31 Architecture de l’UART – Réception
if rx_cnt(7 downto 4) = "0000" then if rx = '0' then -- start bit rx_cnt <= rx_cnt + 1; if rx_cnt(3 downto 0) = "1000" then rx_cnt <= " "; end if; else rx_cnt <= " "; elsif rx_cnt(7 downto 4) < "1001" then -- data bits if rx_cnt(3 downto 0) = "1111" then rx_data <= rx & rx_data(7 downto 1);

32 Introduction aux FPGA – Conception
Projets avancés CPU Cores : T65, T80, 6809, 8051… Contrôleurs Ethernet, USB, LCD, SPI, I²C… Emulation de machines anciennes (ZX81, ZX Spectrum, Jupiter ACE, TRS80) (Hardware arcade, VIC-20) Minimig (Amiga 500 sur base 68k + FPGA) (Atari STE)

33 Introduction aux FPGA – Conception
Projets avancés (suite) (Commodore ONE) (MSX) Divers Emulation de lecteur de disquette avec interface USB Custom CPUs (le site de Kevin Horton : NES, Intellivision, SID…) (Blog dédié au développement)

34 En pratique Outils et composants Interfaçage avec d’autres systèmes
Réalisation de PCB

35 Introduction aux FPGA – En pratique
Equipement Pour commencer Breadboard, cartes pastillées, fil. Composants passifs : résistances, condensateurs. Fer à souder <18W, soudure 0.5mm. Tresse ou pompe à dessouder. Multimètre Pour aller plus loin Oscilloscope (analogique, numérique, USB) Analyseur logique

36 Introduction aux FPGA – En pratique
Interfaçage - Problématiques Evolution des standards 5V TTL / CMOS 3.3V CMOS (2.5V, 1.8V, 1.2V…) Evolution des composants Packages « thru-hole » Packages « SMT » (CMS, Composants Montés en Surface)

37 Introduction aux FPGA – En pratique
Interfaçage - Circuits intégrés : Packages Packages « Thru-hole » DIP : 2,54mm PLCC, PGA : 2,54mm – 1,27mm Packages « SMT » (CMS) SOIC : 1,27mm *QFP, *SOP : 0,8mm – 0,5mm *BGA

38 Introduction aux FPGA – En pratique
Interfaçage - Solutions Conversion 5V / 3.3V : circuits d’adaptation Utilisation des CMS Adaptateurs Utilisation de PCB Fabriqués par un tiers (ex : ) Fabriqués soi-même

39 Introduction aux FPGA – En pratique
Réalisation de PCB – Processus Utilisation de plaques photosensibles Conception du circuit – EAGLE, Proteus, OrCAD… Edition d’un typon – Impression laser sur transparent Insolation – Kit insoleuse à néons UV Révélation – Bac et révélateur en poudre Gravure – Kit graveuse verticale (bac, chauffage et bulleur) et perchlorure de fer Etamage – Solution d’étamage à froid

40 Graveuse et Insoleuse KF – photo Selectronic

41 Introduction aux FPGA – En pratique
Réalisation de PCB – Matériel additionnel Meuleuse et support (Dremel 300 et Dremel Workstation 220) Soudure Fer 11W avec panne CMS Station de soudage thermo-régulée Flux de soudure (flux pen Kester solder) Loupe Divers Plaques de cuivre simples Feutres pour CI Gomme abrasive

42 Du Software au Hardware – Pour conclure
Ouvre de nouvelles perspectives Investissement non négligeable Initial Récurrent Demande du temps Demande méthode et patience

43 Du Software au Hardware – Bibliographie
« Du binaire au processeur » - Emmanuel Mesnard (Théorique) « Design your own video game console » eBook – André LaMothe « Understanding the Apple II » - Jim Sather « Tracé des circuits imprimés » - Philippe Dunand

44 Merci pour votre attention
Grégory ESTRADE


Télécharger ppt "Du Software au Hardware"

Présentations similaires


Annonces Google