Wie kann ich Herstellerunabhängig Blockram in VHDL beschreiben? Leider muss ich die Frage nochmal anbringen. Da ich es nicht richtig sicher hin bekommen.
Gast
#4554951
http://vhdlguru.blogspot.de/2011/01/block-and-distributed-rams-on-xilinx.html Sollte von den meisten Synthesetools als Block-Ram erkannt werden
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Ich habe es fast genau so. Lediglich dass ich noch eine if Bedingung habe, welches RAM aktiv ist.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
Gast
#4555156
das ist ganz sicher nicht "fast genau so"... Du hast kein echtes 'write enable', da du ja in jedem Fall schreibst (entweder im if oder im else Zweig) und das in der Bedingung erst heraus kodierst. Zieh' mal die ganzen Multiplexer aus dem Prozess raus, so dass nur noch die BRAM Beschreibung von oben im Prozess steht. Dann muss das eigentlich bei allen mir bekannten Tools (X, A, L) funktionieren
Gast
#4556229
Was gibt es denn eigentlich für einen Vorteil, so ein RAm zu nehmen, statt einen fertigen Core?
Portierbarkeit. Denn sonst könnte man auch jedes einzelne Gatter und jedes Flipflop von Hand instantiieren und verdrahten...
Außerdem sind 5 Zeilen VHDL meiner Meinung nach besser und schneller lesbar als ein IP Core, den ich erst mit dem Core Editor öffnen muss. Revisionskontrolle mit SVN o.ä. ist auch besser machbar.
Es frisst auch jeder Simulator.
Lösung des Problems. So wandert es in den Blockram
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Gast
#4557130
Lothar M. schrieb: > Portierbarkeit. > Denn sonst könnte man auch jedes einzelne Gatter und jedes Flipflop von > Hand instantiieren und verdrahten... Ich mache die Block-Rams immer mit einem VHDL-Instanz rein. Copy und Paste. Geht bei Lattice und Xilinx gleichermassen.
fragi schrieb: > Geht bei Lattice und Xilinx gleichermassen. Aber eben nicht mit der selben Instantiierung... Und sogar vom selben Hersteller gibts je nach Familie unterschiedliche Templates.
Gast
#4559058
Wir haben uns für Blockrams einfach Wrapper gebaut. Dann kann man die im gesamten Design immer gleich instanziieren und wenn man mal den FPGA-Hersteller oder sogar nur die Familie innerhalb eines Herstellers wechseln sollte, gibt es genau eine Stelle (im Wrapper), wo man etwas ändern muss (anderen Blockram instanziieren). Damit erreicht man einen schönen Tradeoff zwischen Portierbarkeit und 'das Synthese-Tool macht, was ich will'.
mhm schrieb: > Damit erreicht man einen schönen Tradeoff Zudem kann man für den Simulator ein schnelles generisches VHDL-RAM verwenden, und muss nicht unbedingt ein herstellerspezifisches Modell mitsimulieren...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.