Hallo,
Ich würde mich sehr freuen, einen AVR-Kompatiblen Softprozessor für mein
Projekt benutzen zu können. Ich möchte diesen dann mit meinem
DDS-Generator Verbinden. Das ganze soll auf dem 3AN Entwicklungsboard
funktionieren. Mit Verilog habe ich einige Sachen geschafft, VHDL ist
mir noch gar nicht geläufig. Wahrscheinlich habe ich nur etwas dummes
übersehen und hoffe jemand hier kann mir einen Tip geben.
Ich habe folgendes probiert:
- VHDL-Module des Core mit "add a copy of a source" in ein neues Projekt
in ISE importiert.
- Benutze das top-level-Modul für den at90s2313, nachdem ich
herausgefunden habe, dass avr-gcc für den kleinen nicht verwendbar ist.
- Kleines Testprogramm bestehend aus
1 | DDRD=0xff;uin8_t count;while(1){PORTD=count++;_delay_ms(500);}
|
compiliert. Im Makefile als target at90s2313 und 50 MHz angegeben
- Hexdatei mit hex2rom von diesem site umgewandelt: ./hex2rom test.hex
ROM2313 10b16x > ROM2313.vhd
- ROM2313.vhd dem Projekt hinzugefügt
- Constraints file ucf clk mit 50 MHz Quelle verbunden, 8 LEDS, Reset_n
Testweise auf einen Schalter gegeben, alles andere auf nicht benutzte
Postensteckverbinder.
- Alles gut soweit, synthetisieren bis konfigurieren geht ohne Fehler.
Nun habe ich erst einmal ein Problem mit der Simulation. Die Simulation
hört bei 350ns einfach auf mit der Meldung "Simulation stopped", egal
was ich in den Process settings oder im Feld für die manuelle Eingabe
einstelle.
Ich habe das so gemacht:
1 | (...)
|
2 | initial begin
|
3 | Clk=0;
|
4 | Reset_n=0;
|
5 | ... andere =0 ..
|
6 | #10 Reset_n = 1;
|
7 | end
|
8 |
|
9 | always #10 Clk=!Clk;
|
10 | (...)
|
Wenn ich Reset sofort auf 1 setze und die Zeile mit der Zeitangabe
weglasse, läuft die Simulation weiter wie gewollt, aber funktioniert
nicht. (pc steht still) Wenn ich es so wie beschrieben mache, sehe ich
dass der Programmzähler heraufzählt, und Daten aus dem "ROM" kommen,
aber eben nicht was nach 350ns passiert. Der Port bleibt auf xxx
undefiniert. Auf dem FPGA läuft natürlich auch nichts.
Was habe ich mir da vermasselt, oder welcher wahrscheinlich naive Fehler
ist mir da unterlaufen?
Danke im Voraus für Eure Bemühungen!