readmemh dans Verilog et Xilinx

P

pratikjain

Guest
ive utilisé la déclaration suivante dans Verilog, mais je ne suis pas capable de synthétiser en utilisant Xilinx ISE 11 $ readmemh ("water.txt", mem_RGB); l'messeage erreur est comme suit Valeur 184 321 292 trouve à la ligne 1 n'est pas en hexadécimal dans l'appel d'$ tâche système readmemh. pls aider .. Je vous remercie.
 
$ Readmemh n'est pas synthesizeable. Il est utilisé pour la simulation ou le code de comportement seulement. rb
 
Si vous êtes intializing une mémoire, vous pouvez spécifier un fichier. Coe lorsque vous générez le cœur de la mémoire et la mémoire. Une fois mis en œuvre, la mise sous tension avec les valeurs dans le fichier. Coe. Consultez la documentation de Xilinx pour des informations sur comment faire cela.
 
pour les FPGA, readmemh est synthétisable. Xilinx a légèrement mieux que le soutien d'Altera. Xilinx permet à n'importe quel générique / constantes / littéral à être utilisé pour un nom de fichier, tandis que d'Altera permet uniquement codées en dur littéraux. Mais les deux XST et le soutien Quartus readmem. readmemh est simplement placé dans un premier début-fin de bloc. Je soupçonne la question est la largeur des données invalides ou tel. Je ne sais pas la déclaration de mem_RGB, ni la première ligne de "water.txt"
 
cela est en dehors de mon code. reg [08:00] mem_RGB [0:767]; fil [08:00] mem_Y [0:255]; reg [08:00] mem_WATERMARKED [0:255]; initiales commencent $ readmemh ("water.txt», mem_RGB); fin ive joint le fichier water.txt View attachment 54789
 
Encore une fois la déclaration initiale n'est pas synthétisable est si readmemh. Utilisez BlockRAM pour l'initialisation.
 
Encore une fois la déclaration initiale n'est pas synthétisable est si readmemh. Utilisez BlockRAM pour l'initialisation.
Non, ça fonctionne. Je l'ai utilisé plusieurs fois. Les deux Xilinx et Altera fournir la documentation qui montre comment l'utiliser. @ Prat: water.txt n'est pas dans le format correct. readmemh attend une point de données par ligne. vous avez tous les points de données sur la même ligne.
 
Non, ça fonctionne. Je l'ai utilisé plusieurs fois. Les deux Xilinx et Altera fournir la documentation qui montre comment l'utiliser.
Bon à savoir, il va rendre les choses faciles! Pouvez-vous s'il vous plaît poster des liens à ceux de la documentation?
 
il est dans les sections au sujet inférer béliers bloc. En outre, des outils d'Altera sont un peu dangereux en ce que dans certains cas, ils échoueront discrètement. Par exemple, certains cas d'utilisation de la RAM de bloc déduit de ne pas utiliser la ligne readmemh, mais ne sera pas montré aucune info / avertissement / erreur. Ironiquement, il devient plus facile à une mauvaise taille (largeur ou profondeur) les entrées dans le fichier readmem que ces conditions sont des avertissements et montrera que la RAM est initialisée dans la synthèse. http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_1/xst_v6s6.pdf Ceci est décrit dans les XST (13,1, v6s6) manuel de l'utilisateur sur les pages 86 et 221. Le manuel Quartus montre également comment utiliser readmem. Juste être sûr de lire les sections sur l'ensemble des questions HDL avec inférer les caractéristiques matérielles spécifiques, car ils peuvent être périphérique dépendant ou non-évidence ou de bénéficier des attributs supplémentaires synthétiseur. Par exemple, beaucoup de Xilinx non-tranche enregistre seulement ont réinitialise synchrone, le cas échéant réinitialiser tout. De même, RAM peut-être besoin d'enregistrer l'adresse, mais pourrait ne pas prévoir que le signal de retour inscrite sur le tissu. Si vous voulez voir quelque chose de vraiment intéressant, regardez l'exemple d'un port véritable double déduit bloc de RAM commence à la page 188 - il utilise VHDL de "variables partagées".
 
@ Permutent:: Merci une tonne ... ma synthèse est réussie: D
 

Welcome to EDABoard.com

Sponsor

Back
Top