Guten Tag, im Rahmen einer Projektarbeit an meiner Hochschule soll ich einen Softcore erweitern und testen. Die Erweiterung soll in VHDL stattfinden, also nach Möglichkeit keine weitere Hardware. Bei dem Softcore handelt es sich um den Leon3 (http://www.gaisler.com/), welcher auf einem Altera DE2-Board implementiert wurde. Leider habe ich keine richtige Idee, wie ich den Softcore sinnvoll erweitern könnte. Das ganze sollte auch nicht zu umfangreich werden, aber halt schon die korrekte Funktionsweise des Cores zeigen. Also am besten wäre eine Erweiterung in VHDL die dann mit einem Programm in C gesteuert werden kann. Wenn jemand eine Idee hätte wäre ich sehr dankbar!
Soll der Core selbst erweitert werden (zB. ein neuer Befehl) oder "nur" eine drangehängte Peripherie (zB. Spezial-UART, Timer, etc.)? Für beides gibts eigentlich genügend Möglichkeiten. Als Befehl zB. irgendetwas aus einem Algorithmus, was sonst in C mehrere Takte braucht. Im Dunstkreis der FFT gibts so einiges (Bits spiegeln für die Adressierung, Butterfly/Radix2 in Integer)...
Auch da ist genügend Spielwiese vorhanden. Maximal simpel (auch aus SW-Sicht) wären GPIOs, die könnte man auch mit Interrupts bei Pegelwechsel versehen. So eine I2C-Schnittstelle in HW ist auch praktisch, aber schon etwas komplexer, wenn sie die CPU tatsächlich entlasten soll. Hängt halt auch alles etwas davon ab, was man so ans Board anschliessen kann/darf...
Der Aufwand soll so gering wie möglich gehalten werden, daher nach Möglichkeit keine externe Hardware. Habe vielleicht an eine A/D Wandler gedacht der den Wert auf den vorhandenen LEDs ausgibt? So etwas müsste doch relativ "schnell" realisierbar sein oder nicht?
Bernd schrieb: > Habe vielleicht an eine A/D Wandler gedacht der den Wert auf den > vorhandenen LEDs ausgibt? So etwas müsste doch relativ "schnell" > realisierbar sein oder nicht? Du meinst ein ADC Interface oder? Ein ganzen ADC synthetisieren geht meines wissen ohne weiteres nicht!
Bernd schrieb: > Habe vielleicht an eine A/D Wandler gedacht der den Wert auf den > vorhandenen LEDs ausgibt? Überleg nochmal... Für einen AD-Wandler brauchst du 1. einen Wandler 2. ein Interface, das den Wandler einliest. Du kannst 2. machen, z.B. über ein SPI-Interface, das dann vom Leon angesprochen wird. Das wäre eine hübsche Projektarbeit... > So etwas müsste doch relativ "schnell" realisierbar sein oder nicht? Kannst du schon "relativ" gut mit VHDL umgehen? Ich wäre damit in einem Tag fertig. Du wirst länger brauchen... Etwas anderes wäre z.B. ein Coprozessor, der Zufallszahlen in Hardware sortiert, das hat nicht jeder... ;-) http://www.lothar-miller.de/s9y/archives/78-Bubblesort.html
Lothar Miller schrieb: > Kannst du schon "relativ" gut mit VHDL umgehen? Ich wäre damit in einem > Tag fertig. Du wirst länger brauchen... Hatte bisher nur eine Vorlesung mit VHDL und ein paar begleitende Übungsaufgaben dazu. Also quasi nur Grundlagen. Das mit dem SPI-Interface klingt ganz gut. Werde mich in der Richtung mal weiter schlau machen, danke!
Lothar Miller schrieb: > Etwas anderes wäre z.B. ein Coprozessor, der Zufallszahlen in Hardware > sortiert, das hat nicht jeder... ;-) Andere, ähnliche Idee von mir: eine Unit, die dir echten Zufall erzeugt, auf welchen du dann über ein Register zugreifen kannst. Quasi wie in neuen Intel Prozessoren. Das ist recht übersichtlich zu implementieren. Und guten Zufall braucht man eigentlich immer :)
> Hatte bisher nur eine Vorlesung mit VHDL und ein paar begleitende > Übungsaufgaben dazu. Also quasi nur Grundlagen. Nur mal zu freidrehen und mitschreiben. Ein Vorlesung in VHDL und dann am LEON3 fummeln. Der LEON ist kein Softcore mit einfachem Einstieg. Dort was in VHDL Fummeln ist nicht so ohne. Du musst die Bussignale und das dazugehörige Timing kennen. Dort läuft der AHB-Bus die Spezifikation solltest du dir dann reinziehen. Das ist auch mindestens eine weitere Vorlesung. Im Leon sind bereits einfach Peripherie-Bussysteme realisiert. Nutze einfach SPI und reduziere das Problem auf eine Softwareintegration.
Lothar Miller schrieb: > Wie "echt" ist denn dieser Zufall bei Intel? Soweit ich weiß, wird der Ausgang einer Zufallsquelle genutzt, um an einem FF durch Setup/Hold Verletzungen metastabile Zustände zu erzeugen. Der Ausgang des FF wird glaube IMHO mit 3GHz abgetaktet. Danach schließen sich diverse Nachbearbeitungen an. Die ursprüngliche Zufallsquelle wird wohl sowas wie ein Ringoszillator sein. Siehe: http://www.hotchips.org/wp-content/uploads/hc_archives/hc23/HC23.18.2-security/HC23.18.210-Random-Numbers-Cox-Intel-e.pdf Mit solchen Teilen haben wir hier auch schon diverse Tests gemacht, damit lässt sich auch auf FPGAs relativ zuverlässig recht hochratig Zufall erzeugen.
Meine Untersuchungen mit Metastabilität als Zufallsquelle waren eher enttäuschend und/weil von aussen beeinflussbar (Spannung, Temperatur, EMV...)
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.