embedded AVR in FPGA - Performance

Gast #418128
Lesenswert?

Hallo, hat jemand hier schonmal  einen AVR-Core in einem FPGA
realisiert? Ich hätte gerne mal vorab so ein paar Aussagen zur
Performance, also ob man mit einem, sagen wir mal, 60MHz FPGA einen
8MHz Core emulieren kann.

So in etwa bräuchte ich es: Habe eine AVR-Software auf einem Board, das
etwas High-Speed-Anbindung kriegen soll. Die Idee ist, einen Core zu
nehmen, die benötigte digitale Hardware einzuprogrammieren und so die
vorhandene Software direkt nutzen zu können. (Altes System soll
weiterleben, Software wird für beide in einem Rutsch gepflegt)
Gast #418132
Lesenswert?

Ok. zum pAVR findet man 'Autumn 2005: bugs discovered. Changed status
from "Stable" to "Alpha".' Ich denke, da müssen ein paar
Betatester dahinter um das stabil zu kriegen.

Der andere scheint mir ausgebauter. Mal sehen ...
Gast #418133
Lesenswert?

Hab' jetzt nicht ganz kapiert, wieso jetzt FPGA eingesetzt werden soll
:-o Altes System soll doch ersetzt werden, die Software willst Du aber
weiterverwenden?

Ich denke, das ist kontraproduktiv - die Zeit, die Du mit einem
FPGA-AVR Core verbringen wirst, um es stabil zu bekommen, kannst Du
entweder in neue Software (Pico/Paco/Micro-Blaze, NIOS oder sonstiges)
investieren. Oder Du nimmst halt doch den AVR Chip als solches... Und
wenn Du High-Speed brauchst, dann nimmst Du eben ARM7/9 oder wie auch
immer.

Will damit sagen, dass es meistens nicht lohnt, altes System
"aufzurüsten", "aufzubohren"

Kest
Gast #418136
Lesenswert?

Mein avr im FPGA schafft auf Virtex4-10 etwa 75 Mhz und auf Virtex2
ebenso 75 Mhz (welcher speed Grade weiß ich im Moment nicht).
Startan3-4 kommt aus Place&Route mit etwa 45-50 Mhz.
Es handelt sich um eine "in etwa Atmega128" kompatible version.
Also inkl aller mul-Befehle aber ohne break, spm,sleep,wdr.

Die Frequenzen beziehen sich auf Versionen mit einigen Timern und 2
seriellen Schnittstellen sowie Wrapper für FTDI 245. Wobei zusätzliche
Peripherie bis jetzt kaum Einfluß auf den kritischen Pfad hatte.

Alle Befehle brauchen gleich oder weniger Zyklen (andi, sbiw,call) als
beim Original. Keine weiteren Pipelinestufen. Program und Daten in
BlockRAM
Gast #418138
Lesenswert?

Da ich ziemlich rücksichtlos auf Speed optimiert habe, kann ich mit dem
Logikverbrauch nicht sonderlich glänzen.
Exakte Werte für Spartan3 hab ich nicht greifbar, da ich nur für
Virtex2 und Virtex4 ein Board besitzte und Spartan3 nur mal vor einiger
Zeit aus Neugier synthetisiert habe. Der größte Unterschied war
allerdings der Geschwindigkeitsabfall.

- der reine Kern mit SPI und FTDI-Wrapper liegt bei ~ 800 Slices
(1450Luts)
- mit zusätzlich Timer0/Timer1  ~ 1200 Slices (2100Luts)
- mit zusätzlich USART0/USART1  ~ 1600 Slices (2600Luts)

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