Schreiben/ Lesen von Daten in den SDRAM (DE1-SoC)

Gast #4997107
Lesenswert?

Hallo Leute,

Im Zuge eines Projektes will ich mit dem THDB-ADA und dem DE1-SoC Board 
einen Datenlogger zu realisieren.

Der Ablauf sei wie folgt:
Messung des Signals (THDB-ADA) --> Verarbeitung der Daten (DE1-SoC) --> 
Abspeichern der Daten im SDRAM oder im DDR3-RAM --> Anschließendes 
Schreiben der Daten auf eine microSD-Karte.
Eine weitere Variante wäre die Daten über Ethernet an einen PC mit 
MATLAB/SIMULINK zu streamen.

Momentaner Stand:
Das ADC-Board wurde schon angebunden und mit den maximalen 65MSPs 
ausgelesen (über eigens erzeugte PLL). Im Qsys habe ich einen SDRAM 
Controller angelegt und entsprechend konfiguriert.
Muss der Ablauf über FSM (Finite State Machine) für den SDRAM bzw. den 
DDR3RAM von mir noch implementiert werden oder kann man hier auf 
Methoden oder IPs im Qsys darauf zugreifen?

Ich habe schon ein Programm für das Schreiben bzw. das Lesen schon 
erstellt aber ich lese immer die falschen Werte aus.

Source Code:
process(CLK143)
    begin
      if rising_edge(CLK143) then      --write process
        --case BUFF_CTRL is
          --when st0=>------------write image to  SDRAM
            --if (SDRAM_WAIT='0')then
                SDRAM_WE_N<='0';
                SDRAM_RE_N<='1';
                --SDRAM_WRITEDATA<="1010101010101010";
                DRAM_DQ(15) <= '0';
                DRAM_DQ(14) <= '0';
                DRAM_DQ(13 downto 0) <= ADC_DB(13 downto 0);
                SDRAM_WRITEDATA<=DRAM_DQ;
                SDRAM_ADDR<=std_logic_vector(unsigned(SDRAM_ADDR)+1);

            --end if;

          --when st1=>-----------write from SDRAM to BUFFER
            SDRAM_WE_N<='1';
            --RAMWE1<=SDRAM_RDVAL;
            --SDRAM_RDVAL<='1';
            RAMWE1<='1';
            SDRAM_RE_N<='0';
            SDRAM_WAIT<='0';

               SDRAM_ADDR<=std_logic_vector(unsigned(SDRAM_ADDR)+1);
            RAMIN1<=SDRAM_READDATA(15 downto 0);


        --end case;
       end if;
  end process;




Bin dankbar für jeden nützlichen Post.

Greets,
Chris

P.S.: Bin leider ein Newbie mit VHDL und FPGA Programmierung und kenne 
mich nicht so gut, wie manch anderer in diesem Forum aus. ;)
Gast #4997361
Lesenswert?

Hallo Gustl Buheitel die Parameter wie z.B. Refresh wurden in der IP 
SDRAM Controller (in QSYS) eingestellt. Weiters wurde auch eine Dual 
Port Clock für den RAM konfiguriert. Aber das Schreiben und Lesen (FSM) 
müsste trotzdem von mir selber implementiert werden oder gibt es dazu 
Vorlagen?
Gast #4997410
Lesenswert?

Christoph1990 schrieb:
> Hallo Gustl Buheitel die Parameter wie z.B. Refresh wurden in der
> IP
> SDRAM Controller (in QSYS) eingestellt. Weiters wurde auch eine Dual
> Port Clock für den RAM konfiguriert. Aber das Schreiben und Lesen (FSM)
> müsste trotzdem von mir selber implementiert werden oder gibt es dazu
> Vorlagen?

Google mal nach "Hamster papilio SDRAM", der Code ist gut getestet, 
selbermachen lohnt wirklich nicht.
Selbiger Hamster hat auch noch einen bare metal UDP core im Rucksack, 
den man allenfalls für Sofort-Streaming der Daten über GigE (ohne SDRAM) 
nutzen kann, hier gabs auch mal wo nen Beitrag dazu.
Gast #4997565
Lesenswert?

So ganz plug'n'play ist es natürlich nicht, du musst schon die 
Datenblätter studieren und die Timings anpassen. Die cmd_-Leitungen sind 
dein Host-Interface, das musst du entsprechend an deine CPU oder 
Datenschaufel-Logik ranbacken.
Gast #5016556
Lesenswert?

ftp://ftp.altera.com/up/pub/Altera_Material/14.0/Tutorials/VHDL/DE1-SoC/ 
Using_the_SDRAM.pdf

Altera hat für viele Boards immer Using Guides, ich denke hier drin 
findet man alles, was man wissen muss. Timing, Clocks etc. ist alles 
beschrieben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren