2017-03-08 5 views
1

Je voudrais connaître la différence dans l'utilisation de Reg et Mem à Burin, et comment je peux décider de ces derniers à choisir dans des scénarios communs. Je suppose que Mem est la meilleure idée lors du stockage d'une grande quantité de données, car il serait stocker les données dans la SRAM au lieu d'utiliser les bascules dans les tranches FPGA, correct?magasin un vecteur de bits flipflops au lieu de la mémoire - Chisel

Si je souhaite implémenter un fichier de registre volumineux (10x taille habituelle), est-il préférable d'utiliser Mem puis de Reg?

Répondre

2

Il existe plusieurs différences. Le point que vous avez à propos de l'utilisation de SRAM par rapport aux flops est en quelque sorte la différence de surface. En fait, la plupart des fournisseurs de FPGA supportent l'idée d'implémenter la mémoire en tant que mémoire de bloc ou en tant que flops. Fonctionnellement, ils seraient les mêmes. En raison de la façon dont la plupart des fournisseurs de FPGA implémentent leurs technologies, si vous utilisez un petit fragment d'une seule RAM de bloc, vous utilisez essentiellement la totalité de cette RAM à bloc unique. Disons que votre appareil dispose de 10 blocs de RAM. An vous implémentez 10 minuscules mémoires, chacune seulement octet large disons ... Vous utiliserez toutes les 10 RAM de bloc! Ce n'est pas bon. Si les tables de mémoire que vous avez sont petites, implémentez-les comme des flops et enregistrez la RAM du bloc pour les gros morceaux. Pour votre propre question, où vous suggérez mem est meilleur pour les grandes données, c'est pourquoi c'est vrai.

Le prochain problème est le timing. Il s'avère que le timing de la mémoire FPGA peut parfois être lent par rapport aux Flops. En d'autres termes, si vous aviez un buffer que vous aviez implémenté en mémoire et que vous découvriez que vous ne pouviez pas faire tourner le design à 300Mhz, vous pourriez changer le buffer pour utiliser les flops et vous pourriez faire sortir la vitesse supplémentaire vous à 300Mhz.

Il existe également des différences de routage. Selon votre conception, vous pourriez trouver que toute votre mémoire dans un quadrant d'une puce est utilisée et donc maintenant la conception essaie d'atteindre dans un autre quadrant pour obtenir plus de RAM de bloc, provoquant ainsi votre logique à étaler. Cela pourrait se manifester aussi comme un mauvais timing. Si vous autorisez une partie de la mémoire à s'exécuter en tant que flops, vous pouvez voir votre motif se remettre en forme dans un quadrant car il n'a pas besoin de s'étirer pour les ressources supplémentaires.

Voici quelques-unes des choses auxquelles je pense lorsque je choisis de la mémoire vive par rapport à Flops.