Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
materiels:pld [2022/08/11 08:19] – [Hardware - PLD, CPLD] phil | materiels:pld [2024/07/31 09:01] (Version actuelle) – [4. Programmation] phil | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
===== Hardware - PLD, CPLD ===== | ===== Hardware - PLD, CPLD ===== | ||
- | [Mise à jour le 10/8/2022] | + | [Mise à jour le 11/8/2022] |
* **Ressources** | * **Ressources** | ||
* < | * < | ||
+ | * < | ||
+ | |||
+ | \\ | ||
==== 1. Définition ==== | ==== 1. Définition ==== | ||
- | <callout type=" | + | <callout type=" |
- | + | ||
+ | \\ | ||
==== 2. Classification ==== | ==== 2. Classification ==== | ||
{{ : | {{ : | ||
Ligne 21: | Ligne 26: | ||
* **PAL** (programmable array logic, réseau logique programmable) ; | * **PAL** (programmable array logic, réseau logique programmable) ; | ||
* **PLA** (programmable logic array, réseau logique programmable). | * **PLA** (programmable logic array, réseau logique programmable). | ||
+ | |||
+ | \\ | ||
==== 3. Organisation ==== | ==== 3. Organisation ==== | ||
<callout type=" | <callout type=" | ||
- | * **PAL (réalisation d'un OU-Exclusif)** | + | |
{{ : | {{ : | ||
// Exemple de circuit // **PAL16R8** | // Exemple de circuit // **PAL16R8** | ||
{{ : | {{ : | ||
+ | |||
+ | * **CPLD** | ||
+ | {{ : | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 4. Programmation ==== | ||
+ | {{ : | ||
+ | <callout type=" | ||
+ | |||
+ | 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**, | ||
+ | |||
+ | // Exemple // : comparateur logique | ||
+ | <callout type=" | ||
+ | |||
+ | {{ : | ||
+ | // 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' | ||
+ | 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; | ||
+ | </ | ||
+ | |||
+ | * ** Description fonctionnelle** | ||
+ | <code vhdl *.vhdl> | ||
+ | -- Seule la partie description du code ci-dessus est modifiée | ||
+ | architecture COMPORT of COMPARATEUR1bit | ||
+ | begin | ||
+ | S <= ' | ||
+ | end COMPORT; | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | // 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' | ||
+ | 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; | ||
+ | </ | ||
+ | |||
+ | * ** Description fonctionnelle** | ||
+ | <code vhdl *.vhdl> | ||
+ | -- Seule la partie description du code ci-dessus est modifiée | ||
+ | architecture COMPORT of COMPARATEUR2bits | ||
+ | begin | ||
+ | S <= ' | ||
+ | end COMPORT; | ||
+ | </ | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 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é. |