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. ;)
Nein das musst Du nicht machen und vor allem auch nicht so. SDRAM ist kompliziert und braucht Refresh, das will man nicht selber bauen. Ich kenne mich da auch nicht aus, aber es gibt bestimmt eine IP als RAM Controller mit schöner Schnittstelle.
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?
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.
@Strubi: kann dies auch beim DE1-SoC verwendet werden, habe leider keine Information über den eingesetzten SDRAM gefunden? Weiter werden sind die cmd Ports nicht auf dem Board vorhanden.
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.
Ok das mit den Anpassungen habe ich schon fast vermutet, die cmd ports haben mich nur ein wenig verwirrt. Danke für die Info, werde es mal versuchen ;)
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.
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.