Plan du cours
Quest ce quun circuit numrique Rappel : circuits combinatoires et circuits squentiels Synthse darchitectures Numriques : Allocation de ressources Les cibles numriques FPGA/ASIC/SoC/NoC Flot de conception des circuits numriques : Importance du langage VHDL Le langage VHDL
Y (n) hi xn i
i 0
N 1
Z-1 X
Z-1 X +
Z-1 X
Z-1 X +
Multiplications par des constantes
+
Sortie
Quelques dfinitions
La latence dun systme : il y a toujours un moment de latence entre le moment o on envoie quelque chose en entre et le moment o on rcupre quelque chose en sortie ; cet intervalle de temps est connu et sappelle le dlai de propagation ou Latence. La cadence dun systme est le temps sparant la consommation de deux entres successives par le systme Le chemin critique dun circuit dtermine la latence et la frquence maximale de fonctionnement du circuit combinatoire.
Circuit exprimant les sorties en fonction des entres s=f(e) Absence de mmorisation Interne Circuits caractriss par des latences faibles Exemples :
AND OR XOR
NOT
NAND
NOR
Table de vrit ?
Le dmultiplexeur : Opration inverse par rapport au multiplexeur Entre propage sur 2n sorties possibles en fonction des n bits de slection Table de vrit dun dmux 1 4
Les Dcodeurs Dcode un Mot binaire : il ya n entres et m 2n sorties possibles Exemple dutilisation : dcodage dadresse de mmoire : mmoire 32 mots constitu de 4 blocks de mmoires 8 mots Exemple : 2 4
Les Encodeurs Opration inverse dun dcodeur m 2n entres possibles et n sorties Exemple : Encodeur 4 2
Circuit de ralisation :
10
Circuit de ralisation
11
Additionneurs N bits
Exemple N = 4 bits
12
13
Les UALs : Circuit combinatoire capable d'effectuer plusieurs fonctions de base (arithmtique, logique, dplacement/rotation). LUAL fait habituellement partie intgrante du processeur LUAL prend en entre les oprandes (A et B), ainsi que la fonction { effectuer (Contrle). En sortie, nous retrouvons le rsultat (F) et une mise--jour des bits d'tats (Status).
14
Recherche dune solution { base dquations : tablissement de la table de vrit (algbre de Boole)
Simplification des quations trouves Rgles de simplification , table de Karnaugh Dissociation du design en sous blocks pour rduction de complexit
15
Circuits Squentiels
Les circuits squentiels sont caractriss par une facult de mmorisation Les sorties un instant t dpendant des entres de linstant t-1 ainsi St = f(E0, E1, E2, St-1) Les circuits squentiels de base sont les bascules (flip-flops) Les bascules : capables de conserver ltat de leur sortie mme si la combinaison des signaux dentre ayant provoqu cet tat de sortie disparat. Circuits dpendant le plus souvent dun signal dHorloge ou clock (circuits synchrones)
2 Priode
16
Notion de synchronisme
Bascules Synchrone/Asynchrone
Bascule synchrone : changement dtat de la bascul cadenc sur front dhorloge
Entres
Bascule synchrone
sorties
Horloge Bascule Asynchrone : changement dtat cadenc sur le changement dtat des entres aux mmes
17
Bascules lmentaires
Bascule RS Asynchrone
Bascule RS synchrone
si H= 0 Q= Qsi H= 1 fonctionnement RS
Bascule D-latch
si H = 1 Q = D si H = 0 Q= Q-
Bascule D synchrone
si front montant de H Q = D Sinon Q= QJ Q J K Q
0 0 1 1
0 1 0 1
x 1 0 x
Q x 0 1 x
18
19
J h
RaZ
h 1 2 3
0 t
N 0 1
Qc 0 0 0 0 1 1 1 1
Qb 0 0 1 1 0 0 1 1
Qa 0 1 0 1 0 1 0 1 20
Qa t Qb t Qc t
2 3 4 5 6 7
& J Q a J Q b J Q c
21
22
Input 0 1 0 1
Output 0 0 1 1
23
Machine de Moore
Les sorties dpendent des tats prsents. Un bloc de logique combinatoire traite les entres et ltat antrieur des sorties et alimente un bloc de bascules en sortie. Ainsi, les sorties changent de manire synchrone sur un front dhorloge.
24
Machine de Moore
Description des sorties comme des tats concurrents
25
Machine de Mealy
A la diffrence de la machine de Moore, la sortie peut changer lors dun changement de la sortie et ce indpendamment de lhorloge : Une machine de Mealy est donc asynchrone.
26
Machine de Mealy
Description des sorties comme des tats concurrents Dpend des tats et des entres
27
28
29
30
Choisir les oprateurs utiliser pour implmenter une fonction donne Dpend du critre optimiser ( surface , latence, consommation) Dpend de la cible technologique vise (ASIC ou FPGA) Exemple : soit la fonction Sum = A+B+C+D
31
Architecture combinatoire
Allocation matrielle de ressources pour chaque opration Sachant que le chemin critique du circuit est gal 30 ns, quelle est la frquence maximale de fonctionnement de ce circuit ?
Architecture pipeline
Architecture introduisant des tages de pipeline Le chemin critique est rduit ( 10 ns), quelle est la frquence maximale de fonctionnement du circuit ? Quelle est la cadence du circuit ? Quelle est la latence du circuit ? Comparer la surface du circuit avec celle du transparent prcdent
33
Architecture Squentielle
Calcul effectu de manire squentielle et avec rutilisation des ressources Impact sur la surface ? Impact sur la latence ? Cadence ?
34
Architecture Squentielle
Sachant que la latence du circuit est de 10ns et que le contrleur est compos de 3 tats squentiels
Quelle est le frquence maximale du circuit Quelle est sa latence
35
Surface Dpend troitement du nombre de ressources matrielles lmentaires utilis pour raliser un circuit Influe directement sur le cot du circuit Latence (frquence de fonctionnement) Dtermine la frquence maximale de fonctionnement du circuit Consommation Dtermine la dure dautonomie du circuit , critre crucial pour les circuits mobiles aliments par batterie. Time to Market Suret de fonctionnement
36
37
La synthse darchitecture numrique revient retrouver partir dquations le circuit numrique ralisant la fonction voulue sous un certains nombre de contraintes ( surface, consommation, frquence de fonctionnement ou latence) Les tapes aboutissant la dfinition du circuit optimis : Description du circuit par des quations boolennes ( algbre de Boole) ou par des composant prdfinis en determinant les interconnexion entre ces composants Exemple : demi-additionneur ( quations boolennes) / additionneur complet (quations boolennes ou 2 demiadditionneur) Optimisation des quations obtenues (table de kargneau) Soit la fonction Y suivante : Y = A xor B Circuit ralisant la fonction
38
Synthse dun filtre numrique FIR dordre N Soit le filtre FIR dquation suivante :
Y (n) hi xn i
i 0
N 1
Plusieurs implmentations possibles chacune amliore un critre donn : Architecture directe Architecture directe pipeline Architecture { base dunit de multiplication accumulation
39
Architecture directe
Entre
Z-1 X
Z-1 X +
Z-1 X
Z-1 X +
Multiplications par des constantes
+
Sortie
40
Z-1 X Z-1
Z-1 X Z-1
+
Sortie
41
Z-1
Z-1
Mux
Z-1
Z-1
Coefficients du filtre
Mux
Reg
Sortie
42
43
Les circuits programmables (FPGAs) Les circuits ddis (ASICs) Les SoCs Les NoCs Rq: nous ne considrerons dans ce cours que les flots de conception classiques sur FPGA et ASIC , les SoCs seront traits dans le cours Architecture de SoCs fait en parallle avec ce cours.
44
45
Ensemble de blocks logiques Chaque block logique est constitu de macro-cellules Une macro-cellule contient une fonction combinatoire + bascule Lensemble est connect par une matrice de connexion Technologie EPROM ou FLASH
46
47
Les ASICs
Des circuits spcifiques Conu pour application particulire Meilleures performances (surface, consommation et frquence)
49
Flot de conception
Un ingnieur confirm peut valider 100 portes logique par jour Pour un design de 12 millions de porte, il lui faut 500 ans et 75 millions de dollars
50
51
52
53
54
Historique du langage
VHDL ( VHSIC Hardware Description Langage) Dvelopp dans les annes 80 par les amricains Devenu standard IEEE en 1987 Updat et rvis en 1993 Le langage est utilis pour Concevoir des ASIC Programmer les circuits programmables ( CPLD, FPGAs) Concevoir des modles de simulation numrique et des mthodes de tests de ces circuits
55
56
Association Entit/Architecture
Entity Nom_de_lentit IS
Architecture Nom_de_larch OF
ENTITE
description des entres/sorties de la structure logique ( type : bit, bit_vector ) (direction : in, out ,inout .) } END Nom_de_lentit ;
ARCHITECTURE
58
Association Entit/Architecture
A une entit peuvent tre associes plusieurs architectures Exemple demi- additionneur bit : Plusieurs descriptions possibles du fonctionnement dun demi-additionneur
59
Entity additionneur is Port ( A: in bit ; B: in bit; Som : out bit ; Ret : out bit ); End additionneur;
Architecture flot_donnee of additionneur is Begin Som <= A xor B; Ret <= A and B; End flot_donnee;
60
Description comportementale
Architecture comportementale of additionneur is Begin P : process (A,B) begin If (A= 0 and B = 0) then som <= 0 ; Ret <= 0 ; elsif ( A= 0 and B= 1 ) then som <= 1 ; Ret <= 0 ; elsif (A= 1 and B= 0 ) then som <= 1 ; Ret <= 0 ; elseif (A= 1 and B= 1 ) then som <= 0 ; Ret <= 1 ; end if ; End process P; End comportementale ;
61
Description structurelle
Description vhdl dune porte XOR Description vhdl dune porte ET Description Vhdl du demi-additionneur base de ces composants
Entity ET is Port ( A: in bit ; B: in bit; S : out bit );
S : out bit
); End XOR2;
End ET;
Architecture ARCH_ETof ET is begin
S <= A and B;
End ARCH_ET ;
62
Description structurelle
Entity additionneur is Port ( A: in bit ; B: in bit; Som : out bit ; Ret : out bit ); End additionneur;
Architecture structurelle of additionneur is component XOR2 is Port ( A: in bit ; B: in bit; S : out bit ); End component XOR2; component ET is Port ( A: in bit ; B: in bit; S : out bit ); End component ET; begin C1 : XOR2 port map( A , B, Som); C2 : ET port map( A, B, Ret); End structurelle ;
63
Les composants
Lutilisation dun couple entit/architecture lintrieur dun autre passe par la dclaration et linstanciation dun composant Lutilisation des composants permet un codage hirarchique pour une conception descendante Linstantiation dun composant a pour effet dassocier les signaux effectifs (ceux de larchitecture appelante) aux signaux formels (ceux du composant). Elle ressemble un appel de fonction ou de procdure
64
Half adder
carry
cout
cin
Half adder
sum
result
ENTITY half_adder IS PORT (a,b: IN std_logic; sum,cout : OUT std_logic); END half_adder; ARCHITECTURE beh OF half_adder IS begin sum <= a XOR b; cout <= a AND b; end beh;
ENTITY OR_2 IS PORT(a,b: IN std_logic; c : OUT std_logic); END OR_2; ARCHITECTURE beh OF OR_2 IS begin c <= a OR b; end beh;
65
Permet de choisir une des architectures associer une entit pour utilisation lors de la synthse ou la simulation
67
Permet de regrouper les donnes communes plusieurs programmes vhdl Sauvegarde des constantes communes Sauvegarde de tous les composant dun projet donn
-- dclaration de la constante
Package body my_pack_body of my_pack is Constant Tp : time : = 27; -- Initialisation de la constante End my_pack_body;
Instructions concurrentes Sexcutent en parallle Lordre dcriture na pas de valeur Les valeurs de Som et Ret sont ractualiss en permanence chaque changement de A et B
Begin
Som <= A xor B; Ret <= A and B; End flot_donnee;
3 familles d Instructions concurrentes Les instructions daffectation S <= A and B; Les instructions conditionnelles du type affectation When condition else . With signal Select affectation when condition else ..
69
71
Instructions de gnration
Utilisable en mode concurrent (hors processus) Elle permet de gnrer plusieurs rpliques d un composant ou dquations
Forme gnrale :
73
Instructions squentielles
Les instructions squentielles sont cods { lintrieur dun process Deux process sont concurrents mais les instructions quils contiennent sont squentielles
Architecture arch2 of ET is Begin P : process (A,B) begin if (A= 1 and B= 1 ) then S <= 1 ; else S <= 0 ; end if ; End process P; End arch2;
74
Instructions squentielles/process
En VHDL les instructions dune architecture sont values en permanence et toutes simultanment. Pour avoir un fonctionnement squentiel il faut dfinir un processus.
75
Q: OUT std_logic ); end BASCULE_D; architecture ACH_BASCULE_D of BASCULE_D is begin P : process (CLK) begin if (CLK= 1 ) then Q <= D ; end if ; end process;
CLK
end ACH_BASCULE_D;
76
Instructions squentielles/process
Un process est suivi de la dclaration de certains signaux exp : process(A,B) A, B sont les signaux qui vont provoquer lexcution du process (liste de sensitivit) => le process ne sexcute que si au moins 1 des signaux constituant la liste de sensitivit a chang de valeur Instructions squentielles Linstruction If then else Linstruction for Linstruction case
77
78
Linstruction FOR
FOR parametre IN intervalle LOOP -- Instructions squentielles END LOOP;
Exemple
FOR i IN 0 to 3 LOOP if A=i then S <= B; end if ; END LOOP;
79
Linstruction CASE
CASE signal IS WHEN valeur1 => instructions squentielles; WHEN valeur2 => instructions squentielles;
..
WHEN OTHERS => instructions squentielles; END CASE; Instruction souvent utilise pour dcrire les machines dtats
80
81
Les ports dentres/sorties : Sont dfinis dans lentit (entity) 4 modes dentres/sorties possibles
IN : valeurs lues seulement pas daffectation OUT : valeurs affectes (criture seule) au port avec loprateur <= INOUT : valeurs affectes au port avec loprateur <= BUFFER : valeurs affectes ( lecture et criture) au port avec loprateur <=
82
Les signaux Dclars dans la zone de dclaration de larchitecture (locaux) ou dans un package (globaux) Exemple :
Architecture arch of ET is signal temp : bit := 1; --declaration et initialisation du signal begin temp <= A and B; S <= temp ; End arch;
83
Mis jour { la fin dun cycle de simulation Interprter lexcution temporelle des instructions suivantes :
A1 <= A2 ; A2<=A3; sachant quinitialement A1 := 5; A2 :=2 ; A3:=1;
Tracer lvolution des signaux par rapport { un signal dhorloge clk
Une affectation de signaux de N bits consiste placer un registre N bits entre ces deux signaux
84
Port ( A : in bit;
B : in bit ; S : out bit ; Cout : out bit); End test;
Architecture arch of test is signal temp : bit ; begin temp<= A and B; S <= temp ; Cout<= temp or B ; End arch;
85
Les constantes
Dclares avant lutilisation Dans larchitecture : locaux Dans un package : globaux Laffectation se fait avec loprateur := Architecture arch of test is constant volt : std_logic := 1 ; constant period : time := 20 ns ; begin . . End arch;
86
Les variables
L update des variables se fait de manire instantane contrairement aux signaux Affectation par := A1 := A2 ; A2:=A3; sachant quinitialement A1 := 5; A2 :=2 ; A3:=1; !! Attention : les variables peuvent ne pas tre synthtisables. Les variables sont dclars { lintrieur dun process Exemple P : process (A,B) variable A1, A2 : bit ; begin A1 := A2 ; End process P;
87
ABS ACCESS AFTER ALIAS ALL AND ARCHITECTURE ARRAY ASSERT ATTRIBUTE BEGIN BLOCK BODY BUFFER BUS CASE COMPONENT CONFIGURATION CONSTANT DISCONNECT DOWNTO ELSE ELSIF END ENTITY EXIT FILE FOR FUNCTION GENERATE GENERIC GUARDED IF IN INOUT IS LABEL LIBRARY LINKAGE LOOP MAP MOD NAND NEW NEXT NOR NOT NULL OF ON OPEN OR OTHERS OUT PACKAGE PORT PROCEDURE PROCESS RANGE RECORD REGISTER REM REPORT RETURN SELECT SEVERITY SIGNAL SUBTYPE THEN TO TRANSPORT TYPE UNITS UNTIL USE VARIABLE WAIT WHEN WHILE WITH XOR
88
ex.: signal val : integer range 0 to 15 implique que val ne peut prendre que les 16 valeurs de 0 15. Il sera donc cod sur 4 bits
natural : sous-type de integer, limit aux nombres >=0 positive : sous-type de integer, limit aux nombres >0 real : (non synthtisable pour les simus seulement) time : (non synthtisable pour les simus seulement) x := 20 ns;
std_logic et std_logic_vector( package std_logic_1164) : 9 tats possibles dont 4 synthtisables 0 : bas 1 : haut Z : haute impdance - : indiffrent Ex: signal s : std_logic; -- reprsente 1 bit signal bus : std_logic_vector( 7 downto 0); -- reprsente un vecteur (un bus) de 8 bits bus(7) reprsente le bit de poids fort et bus(0) le bit du poids faible signal toto : std_logic_vector( 0 to 3); -- reprsente un vecteur (un bus) de 4 bits toto(0) reprsente le bit de poids fort et toto(3) le bit du poids faible s <= 1; -- notez le simple cote bus <= "01-10ZZZ" ; -- notez le double cote
signal x :table; instanciation dun signal x de type table Tableau 2 dimensions type table is array (0 to 3, 7 downto 0) of bit; signal x :table; x(2,4)<='1'; Exemple : Instantiation dune mmoire ROM 16 x 8bits Type romtype is array ( 0 to 15) of std_logic_vector (7 downto 0); constant my_rom : romtype := ( "FF", AA",,EE");
91
Exemple 2 :
type montype is integer range 0 to 31; signal vala : montype;
92
93
Oprateurs arithmtiques (sur les types numriques : entiers, signs, non signs, flottant) :
Oprateurs de dcalage (sur les tableaux de bits, std_logic_vector, signed et unsigned) : sll, srl, sla, sra, rol, ror
94
Les bibliothques
use IEEE.STD_logic_1164.ALL;
Les modules VHDL analyss sont toujours stocks par dfaut dans la bibliothque WORK
Architecture
Dclaration de package Corps du package Configuation
Entit
Compilateur
bibliothque
Editeur de liens
95
La bibliothque std_logic_1164
Valeurs des signaux
std_logic et std_logic_vector
Valeur Interprtation
0 0 - Forc
library IEEE; -- librairie use IEEE.std_logic_1164.all;-- package ENTITY exemple1 IS PORT ( . ); END exemple1; ARCHITECTURE archlogic OF exemple1 IS BEGIN ..
1
U X Z W L H -
1 - Forc
Uninitialized (non-initialis) Inconnu - Forc Haute impdance Inconnu - Faible 0 - Faible 1 - Faible Dont Care
END archlogic;
96
La bibliothque numeric_std
Elle permet de faire de l'arithmtique cc2 avec des vecteurs : use ieee.numeric_std.all;
C'est aussi un vecteur, mais il reprsente un nombre sign ou non sign possibilits d'oprations arithmtiques ou relationnelles entre eux, mais aussi avec des integer
Elle dfinit deux types vecteurs : SIGNED et UNSIGNED : signal u: unsigned ( 3 downto 0); -- "1010" reprsentent 10 signal s: signed (3 downto 0); -- "1010" reprsentent -6
97
Changement de type
98
99
Environnement de simulation
Modelsim
100
Environnement de Synthse
Xilinx ISE
101