materiels:pld

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
materiels:pld [2022/08/10 11:48] – [3. Circuit à architecture programmable] philmateriels:pld [2022/08/11 10:36] (Version actuelle) phil
Ligne 1: Ligne 1:
-[[reseaux:accueilreseaux|{{ :iconemaison.jpg?nolink&30|Sommaire "Matériels, réseaux et communication"}}]]+[[materiels:circuitnum|{{ :iconemaison.jpg?nolink&30|Hardware - Classification des circuits numériques}}]]
  
-==== Matériels Classification des circuits numériques ====+===== Hardware PLD, CPLD ===== 
 +[Mise à jour le 11/8/2022]
  
-[Mise à jour le 10/8/2022]+  * **Ressources** 
 +    * <html><a href="https://fr.wikipedia.org/wiki/Circuit_logique_programmable#:~:text=Ce%20type%20de%20composant%20%C3%A9lectronique,de%20portes%20programmables%20in%20situ)%20%3B&text=PAL%20(programmable%20array%20logic%2C%20r%C3%A9seau,array%2C%20r%C3%A9seau%20logique%20programmable)." target="_blank">Circuit logique programmable</a></html> 
 +    * <html><a href="https://www.youtube.com/watch?v=zbOyU-nq6Lk" target="_blank">Vidéo</a></html> PLA PAL GAL CPLD sur YouTube
  
-//L'électronique numérique est un domaine scientifique s'intéressant aux systèmes électroniques dont les états parcourent un ensemble fini de possibilités\\ +==== 1Définition ==== 
-Le système numérique permettant **2 états différents** par numéro se nomme « **binaire** ». \\ +<callout type="primary" icon="true">Un **circuit logique programmable de type Field Programmable Devices**ou** réseau logique programmable** est un **circuit intégré logique** qui peut être reprogrammé (**caractérisé**) après sa fabrication.</callout> 
-Les états peuvent être notés **FAUX** / **VRAI** ou **0** / **1** par exemple. Ils peuvent correspondre à des tensions **0V / +Vcc** ou **-Vcc / +Vcc** par exemple. \\ \\ +  
-Les transitions entre états résultent de **portes logiques** réalisant des opérations ou fonctions logiques telles le **ET**, le **OU**, etc. La principale application de l'électronique numérique est probablement la création d'ordinateurs. \\ \\ +==== 2. Classification ==== 
-**Aujourd'hui les énormes progrès dans la technologie des circuits intégrés** font qu'il est possible de créer des composants d'une complexité extraordinaire.// <html><a href="https://fr.wikipedia.org/wiki/%C3%89lectronique_num%C3%A9rique" target="_blank">Wikipédia</a></html>+{{ :materiels:classification.png?nolink |}}
  
-Le tableau ci-après propose une classification des **circuits intégrés numériques** : +Ce type de composant électronique est communément désigné par différents sigles anglais dont :
-{{ :materiels:classification_ci.png?nolink |}}+
  
-=== 1. Circuits logiques standards === +  * **FPGA** (field-programmable gate arrayréseau de portes programmables in situ) ; 
-Il existe deux grands types de fonctions logiques : \\ +  * **PLD** (programmable logic device, circuit logique programmable) ; 
-- les **fonctions logiques dites « combinatoires »**, bases du calcul booléen, elles résultent de l'analyse combinatoire des variations des grandeurs d'entrées uniquement. \\ +  * **EPLD** (erasable programmable logic device, circuit logique programmable et effaçable) ; 
-  * Voir la page [[|Logique combinatoire]] \\ +  * **CPLD (complex programmable logic devicecircuit logique programmable complexe)** ; 
-- les **fonctions logiques dites « séquentielles »** . +  * **PAL** (programmable array logic, réseau logique programmable) ; 
-  * Voir la page [[|Logique séquentielle]] \\ +  * **PLA** (programmable logic arrayréseau logique programmable).
-=== 2. Circuits à fonctionnement programmable === +
-  * Voir la page [[ :materiels:pld|µP,µC]] +
-=== 3. Circuit à architecture programmable === +
-  * Voir la page [[ :materiels:pld|PLDCPLD]]+
  
-<callout  icon="fa fa-hand-stop-ocolor="blue" title="A RETENIR"> +==== 3. Organisation ==== 
-La miniaturisation des circuits intégrés aujourd'hui est telle qu'il est possible d'avoir des ordinateurs sur une  +<callout type="primaryicon="true">Les **réseaux logiques programmables** sont des circuits composés de **nombreuses cellules logiques élémentaires** et **bascules logiques** librement interconnectables.</callout> 
-unique puce d'une centaine de millimètres carrés\\ Ces mini-ordinateurs, appelés **microcontrôleurs** ou + 
-**S**ystème **o****C**hip (**SoC**), intègrent tous les composants habituellement présents sur la carte mère +  * **PAL (réalisation d'un OU-Exclusif)** 
-d'un ordinateur (CPUmémoire, périphériques). \\ +{{ :materiels:pal.png?nolink |}} 
-Les **microcontrôleurs**, peu coûteux et avec des capacités de calcul et de mémoire limités, reposent + 
-souvent sur une architecture de **Harvard** où la mémoire des programmes est dissociée de celle des données\\ +// Exemple de circuit // **PAL16R8** 
-Les **SoC** sont de véritables ordinateurs avec des CPU très puissants, tellement rapides qu'une architecture avec  +{{ :materiels:16r8.png?nolink |}} 
-deux bus est nécessaire pour éviter les goulots d'étranglement.</callout>+ 
 +  * **CPLD** 
 +{{ :materiels:cpld.png?nolink |}} 
 + 
 +==== 4. Programmation ==== 
 +{{ :materiels:vhdl_verilog.jpg?nolink&150|}} 
 +<callout type="warning" icon="true">Contrairement à un microprocesseur, **un circuit logique programmable n'exécute aucune ligne de code**. Un code de programmation est cependant nécessaire pour **assembler les opérateurs logiques** qui le composent.</callout> 
 + 
 +La programmation des PLD modernes (FPGA / CPLD) passe généralement par un compilateur basé sur un langage de programmation de type langage de description matériel (ou « HDL » pour Hardware Description Language) comme le **ABEL**((**ABEL**, acronyme de Advanced Boolean Expression Language, est un langage de programmation informatique utilisé dans le domaine de l'électronique, pour notamment la programmation des PLD. Il a été créé en 1983 par Data I/O Corporation, à Redmond, Washington.)). Pour faciliter la programmationil existe aussi des langages de plus haut niveau. Les deux plus connus sont le <html><a href="https://fr.wikipedia.org/wiki/VHDL" target="_blank"><strong>VHDL</strong></a></html>((**VHDL** est un langage de description de matériel destiné à représenter le comportement ainsi que l'architecture d’un système électronique numérique. Son nom complet est **VHSIC Hardware Description Language**.)) ("V" pour "Very high speed") et le <html><a href="https://fr.wikipedia.org/wiki/Verilog" target="_blank"><strong>VERILOG</strong></a></html>((Le** Verilog**, de son nom complet **Verilog HDL** est un langage de description matériel de circuits logiques en électronique, utilisé pour la conception d'ASICs et de FPGAs. Le sigle anglais HDL -Hardware Description Language- signifie Langage de Description du Matériel.)). 
 + 
 +// Exemple // : comparateur logique 
 +<callout type="primary" icon="true">Un comparateur logique est un circuit logique auquel sont soumis en entrée deux mots sous forme binaire, et qui détermine lequel des deux nombres correspondants est le plus grand, le plus petit ou s'ils sont égaux.</callout> 
 + 
 +{{ :materiels:comp1bit.png?nolink&200|}} 
 +// Code VHDL // d'un comparateur 1 bit  
 +  * **Description structurelle** 
 + 
 +<code vhdl *.vhdl> 
 +--Importation des bibliothèques 
 +library IEEE; 
 +use IEEE.std_logic_1164.all; 
 +use IEEE.numeric_std.all; 
 + 
 +-- Description de l'interface externe 
 +entity COMPARATEUR1bit is port( 
 +    A,B : IN STD_LOGIC; 
 +    S : OUT STD_LOGIC; 
 +end COMPARATEUR1bit; 
 + 
 +-- Description structurelle 
 +architecture EQU_LOG of COMPARATEUR1bit 
 +begin 
 +    S <= not(A xor B); 
 +end EQU_LOG; 
 +</code> 
 + 
 +  * ** Description fonctionnelle*
 +<code vhdl *.vhdl> 
 +-- Seule la partie description du code ci-dessus est modifiée 
 +architecture COMPORT of COMPARATEUR1bit 
 +begin 
 +    S <= '1' when A=B else '0'; -- C'est intuitifconcis et clair ! 
 +end COMPORT; 
 +</code> 
 + 
 +{{ :materiels:comp2bits.png?nolink&200|}} 
 +// Code VHDL // d'un comparateur 2 bits 
 +  * **Description structurelle** 
 + 
 +<code vhdl *.vhdl> 
 +--Importation des bibliothèques 
 +library IEEE; 
 +use IEEE.std_logic_1164.all; 
 +use IEEE.numeric_std.all; 
 + 
 +-- Description de l'interface externe 
 +entity COMPARATEUR2bits is port( 
 +    A,B : IN STD_LOGIC_VECTOR (1 dowto 0); -- A et B sont des mots de 2bits : A = A1A0 et B = B1B0 
 +    S : OUT STD_LOGIC; 
 +end COMPARATEUR2bits; 
 + 
 +-- Description structurelle 
 +architecture EQU_LOG of COMPARATEUR2bits 
 +begin 
 +    S <= ( not(A(1)) and not(A(0)) and not(B(1)) and not(B(0))) 
 +         or (not(A(1)) and A(0) and not(B(1)) and B(0)) 
 +         or (A(1) and not(A(0)) and B(1) and not(B(0))) 
 +         or (A(1) and A(0) and B(1) and B(0)); 
 +end EQU_LOG; 
 +</code> 
 + 
 +  * ** Description fonctionnelle*
 +<code vhdl *.vhdl> 
 +-- Seule la partie description du code ci-dessus est modifiée 
 +architecture COMPORT of COMPARATEUR2bits 
 +begin 
 +    S <= '1' when A=B else '0'; -- Identique au comparateur 1bit et généralisable à n bits !!! 
 +end COMPORT; 
 +</code> 
 + 
 +<callout type="tip" icon="true">Les descriptions comportementales sont toujours recommandées, sauf raison majeure de densité ou de performance après synthèse.</callout> 
 + 
 +==== 5. Utilisation ==== 
 +Pour de **moyennes séries**, les composants programmables sont en général préférés aux **ASIC**. Les PLD peuvent être **programmés par l’utilisateur** (bureau d’étude, chaîne d’assemblage) alors que les ASIC qui sont configurés lors de leur fabrication (ils ne peuvent être que simulés par le bureau d’étude) sont réservés à des productions de très grande série ne serait-ce qu’en raison de leur coût de développement élevé.
  • materiels/pld.1660124886.txt.gz
  • Dernière modification : 2022/08/10 11:48
  • de phil