Hallo,
Ik heb een architectuur om te implementeren in een FPGA. Aangezien ik met dit slechts basis ervaring heb, had ik graag even feedback over mijn aanpak.
Een VGA cameraatje spuugt frames uit aan 30Hz. Deze worden opgevangen en gestuurd dmv een camera_controller. Deze camera controller zit op een bus die ook verbonden is met de softcore processor en de memory controller(interfacing extern FLASH-ROM en extern SRAM).
De camera controller controleert of de bus vrij is. Wanneer deze vrij is worden de pixels in het SRAM geheugen weggeschreven. Wanneer de bus bezet is (door de microprocessor), wordt de pixeldata gebufferd in een FIFO register.
Is dit een goede manier van werken? Of kan dit misschien handiger?
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Wat is het belangrijkste? Die CPU of de camera data?
Volgens mij gaat het fout als de camera data niet helemaal doorkomt. Die is dus het belangrijkste. Dus, volgens mij zou de CPU op de bus moeten wachten (of er ASAP afgekickt moeten worden) als er camera data beschikbaar is.
Nu kan het best zo zijn dat je het beste eerst 4x een byte kunt opsparen voordat je de CPU van de bus af knikkert (*). Dat moet je nog even uitpuzzelen wat handig is... DRAM kan vaak bursts. Dus dan zou het mischien handiger zijn om nog meer data op te sparen zodat je in 1x een hele burst kan doen. Maar goed jij hebt sram. Ik heb al een twaalf jaar geen sram datasheets zitten lezen.
(*) zeker als je bus 32 bits zou zijn....
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
verkeerde architectuur.
DPRAM gebruiken met gescheiden read en write inputs.
je camera mag clocken al hij wil. de processor kan het laatste pakket ondertussen afhaspelen. als je dan 2 of meerdere banken maakt kan je alterneren tussen de banken.
DMA is niet te doen. tijdens de access moet je processor stilliggen. met DPRAM heb je dat probleem niet.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Maar FE, hij heeft een externe SRAM. Dat zal niet Dual ported te krijgen zijn. Als je een voldoende dikke FPGA hebt, dan kan ik me goed voorstellen dat je gewoon intern dual ported RAM gebruikt.
Maar goed. Als FE zegt dat DMA tricky is, dan wil ik hem wel geloven.
Wat je eventueel kan doen, is de boel onder CPU controle naar de grote externe RAM schrijven: Je maakt een FIFO van bijvoorbeeld 128 bytes. Als je meer dan 96 bytes hebt, zorg je voor een interrupt, en laat je de CPU de data van de uitgang van de FIFO naar RAM lepelen.
En eigenlijk is dat maar een paar kleine stappen van de originele DMA architectuur af: CPU stopzetten en een aantal clocks het RAM aansturen om de data van de camera er in te pompen....
jovak
meten is weten, weten is meten, maar hoe kan je weten wat je allemaal moet meten en weten.
Op 16 januari 2009 11:05:42 schreef rew:
Maar FE, hij heeft een externe SRAM. Dat zal niet Dual ported te krijgen zijn. Als je een voldoende dikke FPGA hebt, dan kan ik me goed voorstellen dat je gewoon intern dual ported RAM gebruikt.....
Je kan in de FPGA een block maken dat Dual ported ram emuleert met een gewone SRAM als externe component. Het kost je alleen wat extra IO pinnen.
Wat je dan doet is buffers gebruiken om schrijfacties te bufferen en naar de ram te schrijven als die bus aan de beurt is.
Een soort van time sharing op de data- en adresbus.
Ik heb er op het net wel verilog en VHDL sources voor gezien.