Outils pour utilisateurs

Outils du site


docquartus

Ceci est une ancienne révision du document !


Description du problème

L'utilisation des fichiers HEX avec quartus 9.0 pose de gros problèmes:

  1. quartus perd les réglages de “Read or Write hex file…” ce qui oblige à quitter quartus, effacer db et incremental db, ( bug connu: https://www.altera.com/support/support-resources/knowledge-base/solutions/rd11302011_28.html ) rouvrir quartus, refaire toute la synthèse…. et cela après avoir perdu du temps à diagnostiquer le problème.
  1. Altera déconseille l'usage des fichiers hex importés ( http://quartushelp.altera.com/14.1/mergedProjects/reference/glossary/def_hexfile.htm ): Important: Due to the complexity of the Hexadecimal (Intel-Format) File type, Altera recommends that you use the Quartus II Memory Editor to create .hex files.

Nous allons donc générer des fichiers MIF

Pour effacer les db, il est apparament possible de le faire sans quitter quartus: p23 de https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/qts/archives/quartusii_handbook_archive_130.pdf

To clean the project database and remove all prior compilation results, follow these steps:
1.   Click  Project > Clean Project
2.   Select All revisions to remove the databases for all revisions of the current project, or specify a Revision name to remove only that revision’s database. 
3.   Click OK . A message indicates when the database is clean.

Pour désactiver la compilation incrementale: (p 73 de https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/manual/tclscriptrefmnl.pdf)

  1. -incremental_compilation=<off|full_incremental_compilation>

Outils de conversion de fichier de contenus mémoire: SRecord

Linux

Installation depuis les paquets:

sudo apt-get install srecord

ou depuis les sources

wget http://freefr.dl.sourceforge.net/project/srecord/srecord/1.64/srecord-1.64.tar.gz
tar xvf srecord-1.64.tar.gz 
cd srecord-1.64/
./configure 
make
./bin/srec_info  etc....

Windows

Documentation

Ouvrir le fichier reference.pdf : http://srecord.sourceforge.net/srecord-1.64.pdf

Applications aux fichiers mémoire de l'automate IUT GEII

Utilisation de l'outils

Mémoire programme

Le fichier programme est vu comme 256 cases de 8 bits (option -intel pour spécifier le format):

srec_info  ./contenu_mem_prog.hex -intel  
  Format: Intel Hexadecimal (MCS-86)
  Data:   0000 - 00FF

Conversion en MIF, pour spécifier taille des données sur 16 bits:

srec_cat  contenu_mem_prog.hex -intel -fill 0x00 0x00 0xFF -Output  contenu_mem_prog.mif -Memory_Initialization_File 8
contenu_mem_prog.mif
-- http://srecord.sourceforge.net/
--
-- Generated automatically by srec_cat -o --mif
--
DEPTH = 256;
WIDTH = 8;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT BEGIN
0000: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17;
0018: 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F;
0030: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47;
0048: 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F;
0060: 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77;
0078: 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F;
0090: 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7;
00A8: A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF;
00C0: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7;
00D8: D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF;
00F0: F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF;
END;

Mémoire microcode

Le fichier microcode est vu comme 512 cases de 8 bits: (option guess pour trouver le format intel tout seul si possible…)

srec_info contenu_mem_code.hex --guess
  Format: Intel Hexadecimal (MCS-86)
  Data:   0000 - 0009
      0010 - 0019
      0020 - 0029
      0030 - 0039
      0040 - 0049
      0050 - 0059
      0060 - 0069
      0070 - 0079
      0080 - 0089
      0090 - 0097
      00A0 - 00A9
      00B0 - 00B7
      00C0 - 00C7
      00D0 - 00D7
      00E0 - 00E7
      00F0 - 00F7
      0100 - 0107
      0110 - 0117
      0120 - 0129
      0130 - 0137
      0140 - 0149
      0150 - 0157
      0160 - 0167
      0170 - 017D
      0180 - 0187
      0190 - 0199
      01A0 - 01FF

Conversion en MIF, pour spécifier taille des données sur 16 bits:

srec_cat  contenu_mem_code.hex -intel -fill 0x00 0x00 0x1FF -Output  contenu_mem_code.mif -Memory_Initialization_File 16

pour régénerer le fichier db à partir du .hex

srec_cat  contenu_mem_code.hex -intel   -Output  contenu_mem_code.asm -ASM  

utiliser le filtre fill qui permet de remplir les trous et donc d'éviter des org dans le fichier généré…

srec_cat  contenu_mem_code.hex -intel -fill 0x00 0x00 0x1FF -Output  contenu_mem_code.asm -ASM 

Pour générer des fichier vhdl:

srec_cat  contenu_mem_code.hex -intel -fill 0x00 0x00 0x1FF  -o contenu_mem_code.vhd -VHdl 2
srec_cat  contenu_mem_prog.hex -intel    -o contenu_mem_code.vhd -VHdl 1

Pour découper en 2 fichiers codant chacun soit les octets pairs soit les impairs: (Splitting an Image: If you have a 16-bit data bus, but you are using two 8-bit EPROMs to hold your firmware, you can generate the even and odd images by using the −SPlit filter. Assuming your firmware is in the firmware.hex file, use the following: )

srec_cat contenu_mem_code.hex -intel -split 2 0 -o firmware.even.mif -MIF  
srec_cat contenu_mem_code.hex -intel -split 2 1 -o firmware.odd.mif -MIF  

−SPlit multiple [ offset [ width ] ] This filter may be used to split the input into a subset of the data, and compress the address range so as to leave no gaps. This useful for wide data buses and memory striping. The multiple is the bytes multiple to split over, the offset is the byte offset into this range (defaults to 0), the width is the number of bytes to extract (defaults to 1) within the multiple. In order to leave no gaps, the output addresses are (width / multiple) times the input addresses.

−Un_SPlit multiple [ offset [ width ] ] This filter may be used to reverse the effects of the split filter. The arguments are identical. Note that the address range is expanded (multiple / width) times, leaving holes between the stripes.

gère aussi le format -C‐Array [ identifier ][ -option… ] pour générer des tableaux de constantes

                −HEX_Dump

super exemples:

http://srecord.sourceforge.net/man/man1/srec_examples.html
https://www-alt.gsi.de/documents/DOC-2012-Mar-2-1.pdf

Ancien contenu de la page

fichier quartus.exe version ancienne pour support Flex10k et simulateur graphique

expliquer les comptes etudiants, NE PAS TRAVAILLER SUR LEUR HOME, sinon impossible de récuperer les fichiers pour le binome

récuperer projets (travail et platine) expliquer l'imbrication → copier sur leur dossier, zipper le dossier à chaque fin de seance pour créer des composants: dans le projet/dossier travail

 creer un fichier composant (nom du fichier=nom du composant)
 sauver dans le dossier travail (.tdf)
 regler top level entity
 compiler
(regler le dossier de librairie et ajouter les fichiers au projet)
 
 corriger erreur
 creer un fichier simulation (.vwf)
 generer les stimuli
 lancer la simu et valider/corriger/recompiler
 une fois validé, créer le composant: file ->create ahdl include file (.inc)

une fois le test en simu réalisé, on fait le test sur site (maquette ou platine)

  ouvrir le projet platine
  analyse du composant platine....tdf   expliquer les liens avec la maquette
  ajouter les fichiers/ librairie
  régler TOUJOURS en top level entity le composant platine (connexion aux broches du boitier) 
        on pourra faire des copies de sauvegarde des differents composants platines en changeant le nom, mais le nom du fichier platine en cours de developpent doit correspondre à celui du composant platine
  instancier le composant à tester dans le fichier platine et établir les connexions
  compiler /    corriger les erreurs
  telecharger sur la carte mémoire
  test sur la maquette
docquartus.1447196360.txt.gz · Dernière modification : 2015/11/10 23:59 de bvandepo