Forum: FPGA, VHDL & Co. Verbinden von NIOS II Softcore mit SRAM-Verilog Modul


von Rene Gärtner (Gast)


Lesenswert?

Hallo,

Ich arbeite auf einem NEEK von Altera (Nios II Evaluation Board) auf ihm 
ist ein Cyclone III FPGA mit 25k Zellen. aktuell arbeite ich an meiner 
Diplomarbeit und bekomme den folgenden Teil einfach nicht hin.

ich habe ein SRAM Modul das in Verilog geschrieben und angesprochen 
wird, zudem habe ich einen NIOSII Softcore als Block im SOPC Builder mit 
DDRAM erstellt. und im SOPC Builder das externe SRAM Modul mit AvalonMM 
Slave verbunden.

In den SRAM werden Bilddaten geschrieben, diese sind 768*239 Pixel groß 
und ein Pixel ist 24 Bit breit.

Nun möchte ich mit dem NIOS II Softcore Daten vom SRAM auslesen und 
weiterverarbeiten.

wie kann ich die Daten vom SRAM zB in den DDRAM transferieren. Oder gibt 
es eine möglichkeit die Daten irgendwo für beide zugänglich zu machen.

die Einbindung von einem Avalon MM Interface für das Modul in dem der 
SRAM ist habe ich schon probiert, doch bekomme ich da die Menge an Daten 
nicht anständig syncronisiert und daher auch nicht übertragen.


Übertragen werden soll der Inhalt dieses Speichers nach einem kompletten 
Durchlauf, BURST_LENGTH ist 24, mRGB sind 24 bit RGB Werte und m1RGB1
Das SRAM Modul sieht als Schnittstelle so aus :


SSRAM_Control_2Port  mine  (
//  HOST Side
.REF_CLK( CLK50),
.RESET_N( SYSTEM_RESET_n),
//  FIFO Write Side 1
.WR1_DATA( mRGB ),  // Write-Input: RGB-Werte

.WR1(( TV_DVAL  ), // Syn Signal des Displays
.WR1_ADDR(0),
.WR1_MAX_ADDR( 768 * 239),
.WR1_LENGTH( BURST_LENGTH ),
.WR1_LOAD(  ((!TD_Stable )||(!FVAL ))  ), //load signal
.WR1_CLR (  !DLY0  ),
.WR1_CLK( HC_TD_27MHZ ),
//  FIFO Read Side 1
.RD1_DATA(m1RGB),
.RD1(  R_TR  ),  //readenable
.RD1_ADDR (32 ),
.RD1_MAX_ADDR( 768 * 239 ),
.RD1_LENGTH( BURST_LENGTH  ),
.RD1_LOAD(!oVGA_V_BLANK ),
.RD1_CLR (!DLY0),
.RD1_CLK( Memory_OUT_CLK ),
//SSRAM SIDE
.FLASH_SRAM_A (FLASH_SRAM_A),
.FLASH_SRAM_DQ(FLASH_SRAM_DQ),
.SRAM_ADSC_N(SRAM_ADSC_N),
.SRAM_CE1_N(SRAM_CE1_N),
.SRAM_CLK (SRAM_CLK),
.SRAM_OE_N(SRAM_OE_N),
.SRAM_WE_N(SRAM_WE_N),
.SRAM_BE_N(SRAM_BE_N));

Wenn ihr um zu helfen noch die interne Struktur benötigt poste ich die 
gerne auch noch

Mit Hilfesuchenden Grüßen
René Gärtner

von SeriousSam (Gast)


Lesenswert?

Was heisst nicht anständig synchronisiert?

von Rene Gärtner (Gast)


Lesenswert?

das heißt das die Daten die ich über die Avalon MM Pipeline mittels 
IORD32 in c++ in der Software von dem VerilogModul auslese alle müll 
sind und ich nicht weiß wie ich das ändern kann.

das Avalon Interface ist so definiert:

always@ (posedge CLK25)
 begin : AVALON_INTERFACE
  nextData<=1'b0;
    if(MYWRITE == 1'b1)
    begin
    case(MYADDR)
    SCREENSHOT: screenshotreg <= MYWRITEDATA[0];
    GRAYSCALE : mgrayreg <= MYWRITEDATA[0];
    TRESH : mtreshreg <= MYWRITEDATA[0];
    default:;
  endcase
  end
  else if(MYREAD == 1'b1 )
  begin
    nextData<=1'b1;
    case(MYADDR)
    RGB_ADDR:MYREADDATA <= {8'h00,testrgb_data};
    default: MYREADDATA <= 32'hEE11FF22;
    endcase
  end
end


hier bekomme ich die Snchronisation mit dem SRAM vermutlich nicht 
korrekt hin. wie ich das genau machen kann weiß ich leider auch nicht.

Ich möchte hier vorallem wissen wie ich die Daten vom SRAM das in einem 
Verilogmodul angesprochen wird und dort Bilddaten gespeichert werden, 
von dem NIOSII Softcore der im SOPC Builder erstellt wurde und als Block 
integriert ist zugänglich zu machen.

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.