Projet Architecture Seance 2

De Ensiwiki
Aller à : navigation, rechercher
AttentionCette page est maintenue uniquement par les enseignants. Afin de ne pas perturber le déroulement des cours, elle n'a pas vocation à être modifiée par les élèves. Mais si vous avez des modifications à proposer, merci d'en discuter ou d'envoyer un e-mail aux auteurs de la page (cf. historique)

Laptop.png  Première Année  Puce.png  Matériel 

Présentation de la séance

Le but de cette séance est de mettre en place le squelette du processeur RISC 16 bits que l'on va concevoir pendant le projet. Cette séance est détaillée pour vous aider à démarrer : par la suite, il vous appartiendra d'identifier les objectifs de chaque séance en fonction du cahier des charges et des divers schémas fournis en annexe.

Il s'agira notamment de prévoir les modifications à apporter à votre circuit pour respecter le cahier des charges, mais également de proposer un protocole de test permettant de valider les modifications apportées au cours de la séance.

Vous devez initialement récupérer les sources fournies pour construire votre projet.

On fourni aussi quelques briques de base dont vous pouvez vous inspirer.

Construction de la partie contrôle

En utilisant comme point de départ le fichier automate.vhd donné dans les sources, créer un fichier FSM.vhd décrivant la machine d'état qui contrôle le processeur.

Pour la séance 2, le graphe de contrôle du processeur peut être représenté par la figure suivante :

GrapheSeance2.png

Construction de la partie opérative

La figure ci-dessous représente un sous-ensemble de la partie opérative du RISC suffisant aux exigeances de la séance 2 et que vous devez implanter dans un fichier PO.vhd :

POSeance2.jpg

Conseil : de façon générale pendant tout le projet, on recommande de construire le processeur de façon modulaire, c'est à dire par exemple en créant un composant reg16b.vhd implantant un registre 16 bits et en l'instanciant autant de fois que nécessaire dans la PO. La construction for .. generate peut vous éviter des copier-coller fastidieux, par exemple :

component reg16b
  port (d  : in std_logic_vector(15 downto 0);
        clk: in std_logic;
        clr: in std_logic;
        ce : in std_logic;
        q  : out std_logic_vector(15 downto 0));
end component;
...
type arrayof16b is array (integer range <>) of std_logic_vector(15 downto 0);
signal sR: arrayof16b(7 downto 0);
signal ce: std_logic_vector(7 downto 0);
...
bcl_reg: for ix in sR'Range generate
  reg: reg16b port map (din, clk, '0', ce(ix), sR(ix));
end generate;

Construction du processeur

En instanciant les parties contrôle et opérative précédemment décrites, construire dans le fichier processeur.vhd le processeur simplifié de cette séance 2, dont le schéma est fourni ci-dessous :

ProcesseurSeance2.png

Construction d'un environnement primitif pour le processeur

Il s'agit maintenant d'intégrer le processeur dans un environnement minimal qui nous permettra d'en tester le fonctionnement. La figure ci-dessous décrit cet environnement :

ProcesseurAndCoSeance2.png

Construisez cet environnement en utilisant le processeur précédemment décrit et le fichier ROMPROG.vhd fourni.

Initialisez ensuite le contenu de la ROM avec les instructions :

in %r0
out %r0
reset

et testez que cela fonctionne en simulation.

Enfin, intégrez le fichier de contraintes contraintes.ucf contenu dans l'archive au projet et générez le bitstream que vous programmerez sur la carte FPGA.