Block RAM dans les FPGA Xilinx

X

xtcx

Guest
Dans un de mes projets utilisant des FPGA, j'ai obtenu plus de 98% pour occupation de portes logiques.Les lignes et les lignes de program.I jamais utilisé RAM bloc.Dans mon programme, je dois beaucoup de tableaux.Alors, j'ai essayé utilisant des pilons de bloc et configuré en tant que "lecture seule".J'ai donc été en mesure de stocker des données dans la mémoire ROM à un endroit addr utilisant l'éditeur de mémoire dans les outils de base fournis avec générateur de Xilinx ISE 8.2i.J'ai pu lire les données dans le programme très bien maintenant, mais te contraintes résultant des portes logiques n'était plus qu'à 97%. J'ai enlevé environ 7 tableaux de datas 8-bit avec la profondeur de 16.My programme est à 1800 lines.Perhaps le brisa mon impovement.Later expectations.No quand je réduire quelque 200 lignes de certains if-else déclarations contenues dans le programme, le ratio tombe à quelque 35%. Amazing encore surprising.So pourquoi enlever deux tableaux en utilisant la RAM ne sera pas réduire le ratio de contraintes ?....
Xilinx est ma version 7.1i (également essayé sur 8.2i)
FPGA - Spartan 3 (400K).
J'ai utilisé des blocs de RAM IPCORE program.Please fournir de l'aide ici

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />

.... Aucune raison RAM bloc ne réduit pas mes portes taille de l'emballage?.

<img src="http://www.edaboard.com/images/smiles/icon_question.gif" alt="Question" border="0" />
 
Etes-vous sûr Block RAM est en fait sythesized?Est-ce que cela soit vu en synthèse (ou dans le rapport de synthèse)?

 
Une possibilité est que vous auriez pu utiliser Distributed RAM pour votre tableaux.ISE cibles réparties en fonction de la RAM comme vous le code.Je pense que Spartan-3 peut stocker 16 bits de données dans une LUT.Ainsi, vos 7 tableaux de données 8 bits pourraient avoir consommé seulement 8 LUT.Ainsi, lorsque vous avez ciblé Brams, vous n'avez pas enregistré beaucoup

 
Dans mon opnion, le résultat est OK.
d'abord, un trop grand nombre à défaut d'autre va consommer beaucoup de ressources tranches,
Deuxièmement, la LUT peut être configuré de distribuer autant de RAM, et cette transformation est efficace, votre RAM 8x16 peut être implimented comme LUT.et 7 tableau ne consomment que LUT plusieurs, c'est pourquoi le rapport ne changent pas beaucoup

 
Vous devez écrire le code HDL ce
initiale

$ readmemb ( "blk_mem_ram.mif", MEM, 8'h00, 8'hff);always @ (CLK posedge) commencent

if (mem_rd_en) commencent

mem_data_out <= mem [mem_addr_out];

fin

if (mem_wr_en) commencent

MEM [mem_addr_in] <= mem_data_in;

fin

fin

et ISE saura que ce que vous voulez, c'est un bloc de mémoire vive, sinon, votre designe seront synthétisées dans la RAM distrbute.Et c'est mai d'utiliser tous vos portes logiques

 
Merci de vos réponses ... Tout d'abord je dois dire que j'ai utilisé de Xilinx générateur IP Core outil qui est venu avec ISE 8.2i Pack.J'ai choisi Block RAM IP et choisi mode lecture-écriture et entra dans la largeur et la profondeur et ensuite généré et RAM-file.Après cela, j'ai ajouté ce fichier à la partie structurelle en tant que composant de mon top-module.From mon programme que j'ai utilisé l'adr et des données dans les ports et données hors de Xilinx généré IP pour stocker ou récupérer les données.Je n'ai pas utilisé une syntaxe dans mon programme pour le bloc-RAM.Alors, je suppose, je n'étais pas Distributed RAM pour sûr.Aussi le programme fonctionne comme d'habitude.Mais le déplacement idéalement les données du tableau vers la mémoire RAM ne l'ai pas d'aide ... Mais pour certains de mes amis, ils ont réduit leur ratio de contraintes à certains de meilleure qualité en utilisant le bloc-ram pour leur project.My inconvénient est que j'ai utilisé trop de mot à dire sur quelque 40 à 50 drapeaux de vérification et de nombreuses stats IF-ELSE.Serait-ce un problème?.Faisant également référence à forfait ou fonctions pourraient aider à réduire les barrières d'utilisation?. S'il vous plaît aider

 

Welcome to EDABoard.com

Sponsor

Back
Top