Forum: FPGA, VHDL & Co. Microsemi RAM Wizard


von Artata (Gast)


Angehängte Dateien:

Lesenswert?

Ich schlage mich gerade mit einem relativ neuen für mich FPGA von 
Microsemi(Actel). Im Projekt wird ein Dual-Port RAm benötigt. RAM habe 
ich mir via Wizard generieren lassen, der mehrere 4k9 RAMs 
zusammenfassen soll. Die RAM Config ist im Anhang zu sehen. Leider 
funktionierte das Ganze nicht auf Anhieb. Beim durchschauen der Log's 
sind mir folgende Warnings aufgefallen:
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTA2 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTA3 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTA4 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTA5 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTA6 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTA7 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTA8 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTB2 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTB3 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTB4 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTB5 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTB6 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTB7 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C3_DOUTB8 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTA2 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTA3 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTA4 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTA5 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTA6 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTA7 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTA8 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTB2 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTB3 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTB4 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTB5 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTB6 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTB7 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C1_DOUTB8 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTA2 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTA3 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTA4 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTA5 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTA6 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTA7 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTA8 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTB2 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTB3 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTB4 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTB5 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTB6 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTB7 drives no load.
Warning: CMP201: Net CFP_REG_16BIT/RAM_16BIT_R0C7_DOUTB8 drives no load.
usw.
Es scheint so als würde der FPGA diese Leitungen nicht treiben. Beim 
Googlen bin ich auf folgendes gestroßen:
http://alice.physi.uni-heidelberg.de/viewvc/trd/pretrigger/vhdl/PIMDDL/trunk/REPORTS/actel_compile_A3PE1500.log?revision=4717&pathrev=4740

Dort sind exakt die gleiche Warnungen zu sehen. Hat jemand Erfahrung mit 
dem Microsemi IGLOO und desssen RAM? Woran kann es liegen? In meinem 
Design ist alles richtig angeschlossen. Ich habe noch einen 8bit breiten 
RAM, da kommt die Fehlermeldung dass DOUTA8 und DOUTB8 nicht 
angeschlossen sind, was bei 8-Bit und einem 9bit breiten RAM (4k9) 
völlig ok ist.

von Ottmar (Gast)


Lesenswert?

Microsemi ist an der Stelle etwas geschwätzig und meldet jeden 
unbenutzten RAM output. Die CMP201 Meldungen können in der Regel 
ignoriert werden.

Mutmaßung: Der Generator erzeugt einfach acht 4K9 RAM's parallel und 
benutzt jedesmal nur 2 bit. Dies ist die schnellste implementierung da 
keine zusätzlich Logik notwendig ist (siehe auch Optimierungsziel im 
Generator).

von Artata (Gast)


Lesenswert?

Ok, das leuchtet ein. Eine andere Sache stelle ich aber fest und habe 
bis jetzt keine Idee woran das liegt. Nach dem Reset lese ich von einer 
RAm Adresse und bekomme "FF" raus. Dann schreibe ich auf die Adresse und 
beim Lesen bekomme ich auch den geschriebenen wert ausgelesen. Ändere 
ich die Adresse und lese, bekomme ich immer den zuletzt geschriebenen 
Wert. Das ganze ist unabhängig von der Gewählten Adresse. Am RAM Ausgang 
liegt immer der zuletzt geschriebene Wert an und nicht der erwartete.

write to addr 1 val 0xaa
read from addr 1 -> 0xaa

write to addr 2 val 0xee
read from addr 2 -> 0xee

read from addr 1 -> 0xee
read from addr 1 -> 0xee

Es sieht für mich so aus, dass immer nur auf eine Adresse geschrieben 
wird oder am Output (was nicht sein darf) immer der zuletzt geschrieben 
Wert ausgegeben wird und RAM den Output nur nach Schreiben updaten tut. 
Hat jemand schon mal erfolgreich RAM Ansteuerung hinbekommne?

von Artata (Gast)


Lesenswert?

Funktioniert! Das Problem saß wie immer vor dem PC :(
Habe die RW Leitung falsch betrieben: R: 0 W: 1 was natürlich andersrum 
angesteuert werden soll :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.