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.
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).
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.