Académique Documents
Professionnel Documents
Culture Documents
BOUSSETTA Hichem
FEHRI Bilel
Elves 2me anne
(Option SISY)
Introduction
Le but de ce projet est dexploiter le FPGA Spartan 3 de Xilinx pour faire des applications
basiques dentre sortie (module UART) pour passer par la suite des architectures
relativement complexes rassemblant plusieurs composants quil faut synchroniser et grer
laccs la mmoire.
I.
Architectures
Dans cette partie, nous allons prsenter et dcrire les architectures des units que nous
avons conues et expliquer les dmarches que nous avons adoptes pour y parvenir.
Trame srie
1
Bit de start
8 bits
Bit de stop
1.1-
Cette unit reoit des donnes parallles (en provenance dune mmoire par
exemple), et elle est charge de les transmettre en srie un un selon un dbit
fix de 9600 bauds soit 9600 bits/s. Cette entit aura, donc, besoin dun registre
de dcalage pour extraire successivement les bits dun mot. Ce registre doit tre
cadenc par une horloge de frquence gale au baud rate. Il devient, ainsi,
Cette unit est cadence par une horloge (clk). Elle dcale les donnes parallles
en entre et met les bits une frquence gale au dbit de transmission. Le
signal Go donne le signal de dpart lunit pour lenvoi des donnes. Lunit
de contrle control_sm dtient les informations sur ltat de lunit et dcide des
traitements quelle va effectuer. Lentit compteurs rassemble les compteurs
dont on a besoin pour chronomtrer le fonctionnement de lunit. Certains sont
utiliss pour faire le dcompte le nombre de cycles dhorloge quil faut pour
conditionner lenvoi des donnes une priode bien dtermine et compter le
nombre de bits transmettre.
1.2-
Unit de rception
Le rle de cette unit est de dceler larrive dune trame transmise sur un
support srie et dy extraire les 8 bits recherchs. Cette unit ressemble lunit
dmission et comporte elle, aussi, une entit de contrle qui dtecte le bit de
start pour dclencher le processus de mise en parallle des donnes. Lentit de
contrle synchronise le fonctionnement des autres composants savoir le
registre de dcalage et les compteurs. Loctet obtenu est stock dans un buffer
jusqu ce quil soit lu par dautres composants.
Le schma-bloc dcrivant cette unit est donn dans la figure ci-contre.
II.
Implantation
Cette partie est consacre la description des techniques utilises pour la ralisation
des units voques prcdemment et explicitera leur fonctionnement laide de
machines dtats et quelques exemples de code VHDL.
Avant de donner limplantation des units, il est ncessaire davoir un aperu sur les
caractristiques de la carte FPGA utilise.
Caractristiques
Le module TX permet de transmettre une donne sur 8 bits sur la liaison srie suivant
un protocole impos. La vitesse de transmission est de 9600 bauds (bits par secondes)
pour une horloge du FPGA de 50 Mhz. Chaque bit prend, donc, 104 s pour tre
transmis. La priode de lhorloge tant de 20 ns, il faut 5200 tops dhorloge pour
transmettre un bit. On utilisera pour cela deux compteurs : un compteur modulo 16 et
un compteur modulo 325. On obtient ainsi un compteur global de 16*325 = 5200. Une
machine dtat contrle le transfert en grant les diffrents modules, dont le module
de dcalage qui permet de transformer linformation parallle en information srie. Le
schma dcrivant cette architecture est reprsent dans la figure 2.
Compteur modulo 16
Trs semblable au compteur prcdent, ce compteur sincrmente lorsque le signal
top_325 est 1. Arriv 15, le processus envoie le signal fin_bit_tmp au compteur
modulo 10 ainsi qu la machine dtat du systme.
Le signal fin_bit est utilis pour notifi la machine de contrle de la fin du dcompte
des 5200 tops dhorloge.
Le compteur de bits (modulo 10)
Contrairement aux compteurs prcdents, ce compteur possde une remise zro
synchrone contrle par la machine dtat du systme via le signal rst_cpt_bit.
Lorsque rst_cpt_bit est ltat bas, le compteur sincrmente lorsque fin_bit_tmp
est gal 1.
Action
Dcalage du registre de sortie
Mmorisation de la valeur sur la sortie
Chargement de la donne entrante
11
Remise 1 du registre
Tableau 1 : Actions de lentit de dcalage
La donne parallle a envoyer se trouve sur le bus din compos de 8 bits. Pour pouvoir
mettre une premire valeur, il faut en premier lieu charger la valeur de din en rajoutant les
bits de Start et de Stop propres la liaison srie dans un registre que nous appellerons reg.
La valeur de sortie sera le bit 0 du registre. Comme la valeur doit rester sur le fil pendant un
temps dpendant de la vitesse de communication, une mmorisation est effectue lorsque
la commande cmd est 01.
Attd_bit : Cet tat effectue un reset du compteur de bit modulo 10. Le module
attend ensuite que le compteur modulo 16 soit revenu zro (indiqu par le signal
fin_bit) pour passer ltat suivant et pour librer le compteur.
Chargement : Une fois le systme prt, lentit dcalage charge la valeur de la
donne parallle din dans le registre reg grce la commande cmd 10. Une fois la
valeur charge, la machine dtat rentre dans une boucle jusqu' ce que les 10 bits de
linformation soient transmis.
Mmorisation : Ltat attend que la valeur mise sur sout soit finie de transmettre.
Ceci est indiqu par le signal fin_bit.
Dcalage : Le dcalage de la donne parallle est effectu grce la commande
00. Si tous les bits sont transmis, la machine dtat retourne dans ltat Attente
sinon, elle recommence la boucle Mmorisation/Dcalage.
A la fin de lexcution, la machine dtat fait un dernier dcalage avant de retourner
dans ltat attente. Cependant, ce dcalage ne gnre aucune erreur sur le signal de
sortie car ce niveau tous les bits de reg sont 1.
On observe sur le chronogramme de simulation suivant le passage de ltat dcalage
ltat attente.
1.2-
III.
Simulation
La simulation est une tape importante pour un design en VHDL car elle tablit des
chronogrammes permettant de suivre les signaux chaque coup dhorloge et de vrifier
le bon fonctionnement du design.
Pour simuler une entit en VHDL, on ralise une entit fictive appele TestBench qui est
une sorte de plateforme de test permettant de stimuler les entres de lentit tester.
Le code suivant (TestBench de lunit dmission) donne un aperu sur la faon de
raliser un TestBench.
ENTITY conv_parallel_serie_tb IS
END conv_parallel_serie_tb;
ARCHITECTURE behavior OF conv_parallel_serie_tb IS
COMPONENT conv_parallel_serie
PORT(
clk : IN std_logic;
raz : IN std_logic;
go : IN std_logic;
din : IN std_logic_vector(7 downto 0);
sout : OUT std_logic
);
END COMPONENT;
SIGNAL clk : std_logic;
SIGNAL raz : std_logic;
SIGNAL go : std_logic;
SIGNAL din : std_logic_vector(7 downto 0);
SIGNAL sout : std_logic;
constant demi_periode : time := 10 ns;
BEGIN
uut: conv_parallel_serie PORT MAP(
clk => clk,
raz => raz,
go => go,
din => din,
sout => sout
);
clock:process
begin
clk <= '1';
wait for demi_periode;
clk <= '0';
wait for demi_periode;
end process;
raz <= '1', '0' after 2*demi_periode;
go <= '0', '1' after 4*demi_periode, '0' after 6*demi_periode;
din <= "01110110";
END;
Aprs une simulation sur une dure suffisante, on obtient les rsultats suivants :
Cette figure met en vidence limportance de la simulation car on voit clairement larrive
des octets de donnes sur le signal data_in et on vrifie que les signaux de contrle de la
mmoire ont les valeurs quil faut pour y crire la donne (bien quon ait commis lerreur de
laisser le chip select de la premire SRAM toujours 1). On remarque, aussi, que ladresse
sincrmente aprs la lecture de deux octets.
Conclusion
Au cours de ce projet, nous avons fait limplantation en VHDL de circuits basiques, savoir le
module UART dmission et de rception srie. Nous avions pu galement raliser un circuit
dcriture dans la mmoire, tel que les octets sont affichs sur 8 LEDs. Cependant, nous
navions pas pu valider larchitecture de laffichage sur cran VGA pour des raisons qui sont
probablement dues la difficult de synchronisation entre les diverses entits qui coexistent
ainsi que les difficults pour tester le design en entier.