Вы находитесь на странице: 1из 33

Cours 12 : VHDL et Microprocesseurs

Ce cours touche sur deux sujets importants qui pourraient tre sur l'examen, mais certain qu'ils ne compteront pas pour trop de points... VHDL : langue de programmation pour le hardware Microprocesseurs : le design en hardware est dj faite, c'est vous d'crire le software

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

Pourquoi est-ce-qu'on apprend a ?


Je sais, je sais... C'est le dernier cours puis l'examen est bientot. Quand-mme on apprend la matire de ce cours pour les raisons suivantes : Il-y-a des questions l'examen sur la matire prsent aujourd'hui... :-( Vous allez apprendre et utiliser le VHDL dans d'autres cours, et Jeff a mis beaucoup d'effort vous donner la meilleur introduction possible au sujet. Vous allez apprendre et utiliser les microprocesseurs et microcontrleurs dans d'autres cours. L'introduction est moins bonne que celle pour le VHDL, mais au moins on discute le Playstation 2...
Jeff Dungen ELE 2300 Douzime cours Avril 2005

VHDL
Si vous avez lu le texte, vous avez probablement remarqu qu'il contient beaucoup de code VHDL. D'abord, c'est quoi le VHDL ??? : (Very High Speed Integrated Circuit) Hardware Description Language Language de programmation de circuits numriques Outil pour la synthse et simulation de circuits Toute a grace au DoD des tats-Unis. :-)

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

VHDL pour simulation


Regardez ce code VHDL 'hello world' :
entity HW_1 is end; architecture Behave of HW_1 is constant M : STRING := hello world; signal Ch : CHARACTER := ' '; begin process begin for i in M'RANGE loop Ch <= M(i); wait for 1 ns; end loop; wait; end process; end;

C'est pas mal comme le C/C++, Java, Pascal, etc...


Jeff Dungen ELE 2300 Douzime cours Avril 2005

VHDL pour simulation


Maintenant, oubliez-le !
entity HW_1 is end; architecture Behave of HW_1 is constant M : STRING := hello world; signal Ch : CHARACTER := ' '; begin process begin for i in M'RANGE loop Ch <= M(i); wait for 1 ns; end loop; wait; end process; end;

Votre temps est trop prcieux pour apprendre du code inutile comme a !
Jeff Dungen ELE 2300 Douzime cours Avril 2005

VHDL pour simulation


Mais Jeff, pourquoi tu nous montres quelque chose, puis tu nous dis de l'oublier ??? Bon, il est essentiel de noter que la langue VHDL est vaste, redondante et bizarre. La bureaucracie militaire est largement responsable pour ceci. C'est la mme chose pour Ada, la langue de programmation pour projets militaires. cause de ce fait, c'est super-important d'apprendre le VHDL comme il faut. C'est le but de ce mini-prsentation.

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

VHDL comme il faut


Aujourd'hui on apprendra comment synthser des circuits logiques. On laisse tomber la simulation. Il faut d'abord : Penser au systme et aux interconnections en termes de botes-noires. Visualiser le circuit AVANT de coder. S'en servir de la parallelisme naturelle des circuits logiques. Si vous n'apprenez qu'une chose aujourd'hui, apprenez les trois points ci-hauts !
Jeff Dungen ELE 2300 Douzime cours Avril 2005

tape 1 : Bote-noire
Disons qu'on veut coder un 'full-adder'. En premier on tablit les entres et sorties, puis on code cette botenoire (qui s'appelle un 'entity' en VHDL) :
(bote noire) entity fullAdder is port ( x, y, carryIn : in std_logic; sum, carryOut : out std_logic ); end fullAdder;

Ce code dcrit une bote-noire qui s'appelle fullAdder qui a trois entres (x, y, carryIn) de 1-bit chaque, et deux sorties (sum, carryOut) de 1-bit chaque.
Jeff Dungen ELE 2300 Douzime cours Avril 2005

tape 2 : Visualiser le circuit logique


Maintenant, il faut remplir la bote-noire. En premier, on visualise le circuit logique, puis on l'crit en code :
(implmentation de la bote noire) architecture example of fullAdder is begin

end example;

Ce code dcrit un implmentation de la bote-noire du fullAdder. Cet implmentation s'appelle example.


Jeff Dungen ELE 2300 Douzime cours Avril 2005

tape 3 : Penser parallelisme


Finalement, on complte le code en se servant de la parallelisme naturelle du circuit logique :

architecture example begin sum <= x xor y xor carryOut <= (x and (x and (y and end example;

of fullAdder is carryIn; y) or carryIn) or carryIn);

Ce code dcrit la logique pour les deux sorties. Ces sorties seront toujours dtermines en parallle.
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Finalement, toute ensemble


library ieee; use ieee.std_logic_1164.all; entity fullAdder is port ( x, y, carryIn : in std_logic; sum, carryOut : out std_logic ); end fullAdder; architecture example begin sum <= x xor y xor carryOut <= (x and (x and (y and end example; of fullAdder is carryIn; y) or carryIn) or carryIn);

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

VHDL, c'est pas si pire


Ce qu'on vient de voir est intuitif et faile comprendre. Mais le code pour des circuits plus complxes devient vite confusant et ambigu. On prsente d'abord, tape par tape, des exemples plus complxes, en l'esprance que le syntaxe devient moins gnant...
for i in 7 downto 0 generate FA:fullAdder port map(x(0), ...) subtype A is NATURAL range 7 downto 0

Si vous avez des questions, demandez-les ! Certain que vous n'tes pas seul !
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Le full-adder deux bits


Il-y-a mille-et-un moyens de coder un full-adder deux bits. On commence avec l'approche 'force-brute'.
entity twoBitfullAdder is port ( x, y : in std_logic_vector(1 downto 0); carryIn : in std_logic; sum : out std_logic_vector(1 downto 0); carryOut : out std_logic ); end fullAdder;

(deux bits)

Ce fois-ci, on utilise des std_logic_vector pour representer des bus (donnes plusieurs bits).

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

Le full-adder deux bits


On pense au circuit puis on code :
architecture example1 of twoBitfullAdder is signal carryTemp: std_logic; begin sum(0) <= x(0) xor y(0) xor carryIn; carryTemp <= (x(0) and y(0)) or (x(0) and carryIn) or (y(0) and carryIn); sum(1) <= x(1) xor y(1) xor carryTemp; carryOut <= (x(1) and y(1)) or (x(1) and carryTemp) or (y(1) and carryTemp); end example1;

On utilise un signal pour representer la connection interne.


Jeff Dungen ELE 2300 Douzime cours Avril 2005

Le full-adder deux bits


On pourrait aussi penser au circuit comme tant deux botes-noires :
architecture example2 of twoBitfullAdder is signal carryTemp: std_logic; begin adder0: fullAdder port map(x(0), y(0), carryIn, sum(0), carryTemp); adder1: fullAdder port map(x(1), y(1), carryTemp, sum(1), carryOut); end example2;

adder0

adder1

On utilise un port map pour indiquer les connections externes et internes des deux botes-noires.
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Le full-adder deux bits


On pourrait aussi utiliser l'itration :
architecture example3 of twoBitfullAdder is signal carryTemp: std_logic_vector(1 downto 0); begin Iteration: for i in 1 downto 0 generate firstBit: if i = 0 generate adder: fullAdder port map(x(0), y(0), carryIn, sum(0), carryTemp(0)); end generate; otherBits: if i /= 0 generate adder: fullAdder port map(x(i), y(i), carryTemp(i-1), sum(i), carryTemp(1)); end generate; end generate; carryOut <= carryTemp(1); end example3; ELE 2300 Douzime cours Avril 2005

firstBit

otherBits

Jeff Dungen

Attention ! Caution! Achtung!


Ce n'est vraiment pas une exaggration qu'il-y-a mille-et-un moyens de coder un full-adder deux bits ! Le texte prsente aussi des moyens qui ressemblent plutt de code C/C++ qu'un implmentation de circuit logique. Rsistez la temptation d'utiliser ces mthodes ! Les circuits logiques et les codes squentiels ne sont pas amis ! Les codes squentiels empchent trop failement la parallelisme naturelle du hardware. Les raccourcis sont pour les gurus de VHDL. Ne faites rien avant de comprendre ce que vous faites !
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Bascule D (circuit synchrone)


Uh oh, qu'est-ce-qu'arrive pour les circuits synchrones qui ragissent selon une horloge ??? Enfin, c'est pas si pire non-plus. On examine la bascule D :
entity basculeD is port ( d, clock : in std_logic; q, qBar : out std_logic ); end basculeD;

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

Bascule D (circuit synchrone)


Bon, on pourrait coder le circuit, mais pour les circuits synchrones, on utilise de prfrence la table de sorties suivantes : Clk Q(t+1) x Q(t) D
architecture example of basculeD is begin process(clock) begin if clock'event and clock = '1' then q <= d; qBar <= not d; end if; end process; end example;

process(clock) : executez ce bloc de code si clock change de valeur clock'event : vrai si clock vient de changer de valeur
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Machine tat synchrone


Voici l'exemple le plus complxe qu'on verra dans ce cours :
reset entity machineAEtat is port ( i, resetBar, clock : in std_logic; z : out std_logic ); end machineAEtat;

OFF / 0
i=0 i=1

ON / 1 Wow ! Que c'est complxe ! :-p

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

Machine tat synchrone


reset architecture example of machineAEtat is type stateType is (OFF, ON); signal state: stateType; begin process(resetBar, clock) begin if resetBar = 0 then state <= OFF; elsif clock'event and clock = '1' then case state is when OFF => if i = '0' then state <= OFF; else state <= ON; end if; when ON => if i = '0' then state <= OFF; else state <= ON; end if; end case; end if; end process; z <= '0' when state = OFF else '1'; end example; ELE 2300 Douzime cours Avril 2005

OFF / 0
i=0 i=1

ON / 1

Jeff Dungen

Fini le VHDL
Ceci complte la mini-prsentation sur le VHDL. Si jamais vous utilisez le VHDL, achetez en premier un bon livre sur le VHDL (attention, il-y-a des 'crappy' livres aussi !). a vaut vraiment le cot. N'oubliez jamais : Bote-noire Circuit Parallelisme Les kits de FPGA avec environnement de dveloppement en VHDL (ou Verilog) sont peu coteux. Vous pouvez vous amuser pendant toute l't pour seulement 100 $. :-)
http://www.altera.com/products/devkits/altera/kit-max7k_quickstart.html Quartus II Web Edition (gratuit) Jeff Dungen ELE 2300 Douzime cours Avril 2005

Les FPGA
On a dj discut les FPGA. C'est possible de programmer un FPGA avec du VHDL synthtis (compil). Enfin c'est normalement le but des FPGA : Les FPGA sont parfaits pour implmenter de complxes circuits logiques pour des applications o il n'existe pas encore un chip 'off-the-shelf'. D'abord, ils sont trs flexibles, mais aussi coteux !

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

Les microprocesseurs
Par contre, on n'a pas tellement touch aux microprocesseurs. Un microprocesseur est un chip polyvalent comme un FPGA, mais o les circuits logiques sont inchangeables. Un microprocessleur est controll par du software (logiciel). FPGA : design implment en hardware Microprocesseur : design implment en software Mme si un microprocesseur est inflexible au point de vue du hardware, c'est quand mme puissant et flexible en software.
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Les microprocesseurs
Comparons-donc un microprocesseur et un FPGA : Mmoire Instructions Entres Microprocesseur Sorties Entres FPGA Sorties

Il peut prendre des milliers d'instructions avant qu'un microprocesseur achve ce qu'un FPGA peut faire presque instantanment !
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Instructions
Il-y-a trois niveaux d'instruction (langue de programmation, assembleur, code machine) : z = 13 + 69; MOVEQ(D0,$13) MOVEQ(D1,$69) ADD(D0,D1) Pour super-geeks 0111000000001101 0111001001000101 1101000010000001 Aaaaah !!!

Pour geeks

Normalement on code dans une langue de programmation haute-niveau comme Java ou C++. Mais parfois c'est ncssaire de coder en assembleur. ELE4302 ?
Jeff Dungen ELE 2300 Douzime cours Avril 2005

D'un seul bit 128 bits


Le nombre de bits d'un microprocesseur indique la largeur de donnes sur laquelles il peut oprer.

MC14500 : 1-bit Voir Cours 11 et Polycopi Ch. 7


Jeff Dungen

Playstation 2 : 128-bit Jouez au Gran Turismo 4

ELE 2300 Douzime cours

Avril 2005

Microcontrleurs
Un microcontrleur est simplement un microprocesseur avec des priphriques sur le mme chip. Exemples de priphriques : Convertisseur analogique / numrique (ADC) Convertisseur numrique / analogique (DAC) UART (Universal Asynchronous Receiver Transmitter) PWM (Pulse Width Modulator) etc... Les microcontrleurs sont partout ! Vous pouvez galement acheter ou construire votre propre kit de microcontrleur pour beaucoup moins que 100 $.
Jeff Dungen ELE 2300 Douzime cours Avril 2005

DSP Digital Signal Processor


Un DSP est semblable un microXXXeur, mais il est optimis pour faire des calculs et manipulations mathmatiques complxes et spcialiss. Les DSPs fonctionnent souvent en temps rel et d'abord ils sont souvent optimiss pour la vitesse. Applications : Tlphones cellulaires numriques Cartes de son, vido Modems etc...
Jeff Dungen ELE 2300 Douzime cours Avril 2005

MicroXXXeurs vs. FPGAs


Dans le monde actuel, on peut dire que plus quelque chose est 'cheap', plus on l'utilise. C'est dire que les microcontrleurs de 4-bits sont beaucoup plus rpandus que ceux de 8-bits et de 16-bits. C'est dire aussi que les microXXXeurs en gnral sont plus rpandus que les FPGAs.
Moins cher Plus rpandu Plus cher Moins rpandu

Pendant votre formation, vous allez apprendre et apprcier comment choisir le chip le moins couteux pour implmenter l'application donne. Puis vous allez vous amuser le programmer. :-)
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Merci, bonne chance, au revoir !


Bon, aprs que Monsieur T. vous donne le sommaire une dernire fois, le cours est termin ! Je veux vous remercier pour tant patient avec moi, ma manque de vocabulaire franaise, et mes exemples bizarres. J'espre que vous avez appris beaucoup, tout en vous amusant. :-) Je vous souhaite bonne chance sur l'examen. Devenez matres en machines tat synchrones et asynchrones et vous aurez de trs bonnes notes. Sinon, trouvez Olivier et moi aprs l'examen, et achetez-nous plusieurs bires... :-p
Jeff Dungen ELE 2300 Douzime cours Avril 2005

Sommaire (par Monsieur T)


Bote-noire, circuit, parallelisme ! FPGA = hardware, flexible, couteux MicroXXXeur = software, cheap DSP = mathmatiques hard-core tudiez fort jeunes ingnieurs ! I pity the fool who has to take this course again ! EXAMEN FINAL : samedi le 30 avril de 13h30 16h en B-418

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

On s'amuse bien faire les devoirs


Lecture courant : VHDL partout au texte Lecture venir : N / A Exercices : Machines tat !!! (rponses sur le site web du cours) Lecture optionelle : N / A Monsieur T sait si vous avez fait vos devoirs !!!

Jeff Dungen

ELE 2300 Douzime cours

Avril 2005

Оценить