No więc kiedyś kolega drzasiek dumał nad powieszeniem ADC 8 bit na szynie EBI w xmega. Nie wiem czy to zrobił czy nie ale ja tak zrobiłem.
I niestety jestem nieco zawiedziony.
Przykładowo na wewn ADC da się wyciągnąć ok 6-8MSPS w 8bitowej rozdzielczości przy 48Mhz, nie jest to wcale zły wynik na adc w avr i bascom.
Problem jest w tym że DMA w połączeniu z szyną danych poprzez którą się łączę z ADC powinna chyba wycisnąć więcej niż pożal się boże 9MSPS któe wyciskam z zewn ADC na EBI. Bo tyle chyba udało mi się wydusić, i to przy kręceniu Cora na 50Mhz a fabrycznie powinno być 32Mhz (nie dzwońcie na policję). Może jest ekspert na sali od DMA? Może bez znaczenia dla języka wie czy da się wykombinować większą prędkość toczenia danych bo chyba tu jest problem w prędkości owego DMA. Może nie toczyć tablic bo inkrementacja adresów to też zabiera cenny czas.
ADC udaje ram bo przy każdym cyklu zegara który bierzemy z pinu ramu read enable otrzymujemy próbkę na szynie danych. Tak jakbyśmy wyciągali dane z array z zewn RAMu. array>array. Proste. Ale ponoć DMA miałobyć takie szybkie że niby 2x zegar, a ten marnuje masę cykli na przetoczenie. A szyna ustawiona na max, bez waitstait. Co prawda to blisko prędkości granicznej ADC1173 czyli 15MSPS ale szkoda nie wykorzystać tych 5-6MSPS.
Na obrazku widać po kolei 300 sampli.
Zrobiłem też żeby toczył ten sam bajt z ADC by nie inkrementował niepotrzebnie adresu źródła którego i tak nie potrzeba ale bez skutku.

I niestety jestem nieco zawiedziony.
Przykładowo na wewn ADC da się wyciągnąć ok 6-8MSPS w 8bitowej rozdzielczości przy 48Mhz, nie jest to wcale zły wynik na adc w avr i bascom.
Problem jest w tym że DMA w połączeniu z szyną danych poprzez którą się łączę z ADC powinna chyba wycisnąć więcej niż pożal się boże 9MSPS któe wyciskam z zewn ADC na EBI. Bo tyle chyba udało mi się wydusić, i to przy kręceniu Cora na 50Mhz a fabrycznie powinno być 32Mhz (nie dzwońcie na policję). Może jest ekspert na sali od DMA? Może bez znaczenia dla języka wie czy da się wykombinować większą prędkość toczenia danych bo chyba tu jest problem w prędkości owego DMA. Może nie toczyć tablic bo inkrementacja adresów to też zabiera cenny czas.
ADC udaje ram bo przy każdym cyklu zegara który bierzemy z pinu ramu read enable otrzymujemy próbkę na szynie danych. Tak jakbyśmy wyciągali dane z array z zewn RAMu. array>array. Proste. Ale ponoć DMA miałobyć takie szybkie że niby 2x zegar, a ten marnuje masę cykli na przetoczenie. A szyna ustawiona na max, bez waitstait. Co prawda to blisko prędkości granicznej ADC1173 czyli 15MSPS ale szkoda nie wykorzystać tych 5-6MSPS.
Kod: VB.net
Na obrazku widać po kolei 300 sampli.
Zrobiłem też żeby toczył ten sam bajt z ADC by nie inkrementował niepotrzebnie adresu źródła którego i tak nie potrzeba ale bez skutku.
