Changes between Version 6 and Version 7 of MOCCA-TP3-2020


Ignore:
Timestamp:
Oct 22, 2020, 9:47:34 PM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MOCCA-TP3-2020

    v6 v7  
    66
    77Dans ce TME, vous devez écrire le modèle VHDL du circuit CORDIC à partir d'une description de l'algorithme en décrit en C.
    8 - Le circuit réalise la rotation d'un vecteur (x,y) par un un angle a.
     8- Le circuit réalise la rotation d'un vecteur (x,y) par un angle a.
    99- Le circuit prend en entrée
    1010  - les coordonnées x_p et y_p qui sont des nombres entiers signés de -127 à +127.
    1111  - L'angle a_p est exprimé en radian et il est représenté par un nombre en virgule fixe **non** signé 3-7.
    1212    - À l'intérieur du circuit, c'est un nombre en virgule fixe 1-8-7.
    13     - Mais à l'interface, j'ai choisi une représentation non signée 3-7 (port a_p) pour avoir des angles entre 0 et presque 8 radians.
     13    - Mais, à l'interface, j'ai choisi une représentation non signée 3-7 (port a_p) pour avoir des angles entre 0 et presque 8 radians.
    1414    La conversion se fait dans le circuit en recopiant les 10 bits de a_p dans les 10 bits de poids faible d'un registre de 16 bits représentant l'angle, puis en complétant avec des `0`à gauche.
    1515    C'est un choix pour réduire le nombre de broches, mais vous pouvez faire un choix plus "propre" en codant l'angle en 1-3-7 et faire une conversion avec extension du signe.
     
    2020== Fichiers fournis
    2121
     22- **Spécification de haut niveau**\\\\
     23  La spécification de haut niveau (non RTL) est donnée dans un programme C.\\
     24  C'est ce programme qui sert de référence pour le modèle RTL.\\\\
     25  - [attachment:cercle.c] : contient deux fonctions qui calculent un cercle en faisant tourner
     26    vecteur (127,0).
     27    La première fonction utilise les fonctions `sin()` et `cos()`, la seconde utilise l'algorithme
     28    cordic(). Les deux fonctions produisent un fichier .dat avec les coordonnées que gnuplot peut
     29    afficher. \\\\
     30  - [attachment:Makefile] : compile et execute cercle.c puis lance gnuplot pour afficher les deux cercles.
     31
     32- **Modèle VHDL 1 core**\\\\
     33  Vous allez modéliser le circuit, mais comme ce n’est pas si simple (ça prend du temps), je vous donne
     34  un fichier vhdl incomplet, qui va vous aidez (en principe).
     35  Dans ce fichier, j'ai fait des choix que vous êtes libres de changer, mais vous devez avoir en tête
     36  que ce modèle 1 core, sera découpé en deux parties la semaine prochaine : une partie contrôle et
     37  une partie chemin de données. Le modèle que je vous propose me semble assez simple à couper.\\\\
     38  Parmi les choix qui peuvent faire débat, il y a la description de l'automate. J'utilise un codage
     39  One-Hot parce que je trouve que c'est lisible et c'est très efficace (en fait tous les circuits que
     40  auxquels j'ai participé ont utilisé cette approche...).\\\\
     41  Je ne vous donne pas de patterns. Je vous conseille de créer un ''test benchs'' qui produit et
     42  consomme des données et que vous devez connecter à votre circuit. Si vous n'y arrivez pas, je vous
     43  donnerai de quoi valider le circuit la semaine prochaine.\\\\
     44  - [attachment:cercle_cor.vhd]
     45
    2246 
    2347