Integracja interfejsu USB2.0 CY7C68013 z FPGA Cyclone: bootowanie i komunikacja

CY7C68013 i FPGA





Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: CY7C68013 i FPGA
Date: Sun, 27 Feb 2005 16:21:48 +0100


Witam,

chcialbym podlaczyc interfejs USB2.0 CY7C68013 (dalej
skrotowo zwany CY) do FPGA Cyclone. Bedzie on mial
dwa zadania do zrobienia:

a) bootowanie FPGA w trybie passive serial;
b) pelnienie roli sprzegu z komputerem.

Ad a: obraz konfiguracyjny dla FPGA bedzie pochodzil
z 16-megabitowej pamieci DataFlash Atmela (ile razy
mozna ja zapisywac?) lub zostanie pobrany przez USB.
Czy moge podlaczyc pin nSTATUS w FPGA do pinu
RESET w CY, by podczas bledu w konfiguracji FPGA
automatycznie zresetowalo mi CY? Po drugie: prawdziwa
zawartsc pamieci CY tez zostanie pobrana z DataFlash,
potrzeba wiec tylko malego EEPROMu z bootloaderem.
Czy pamiec 24LC04 moze zostac uzyta do tego celu?
Niestety PDF nic o niej nie wspomina, "przeskakujac"
rozmiary posrednie pamieci 24xx, a ja akurat mam 04.

Ad b: informacja ma plynac w obu kierunkach. Jesli FPGA
ma cos do wyslania, to zapisuje dane do FIFO w CY. Jezeli
CY cos odbierze, to ma o tym powiadomic FPGA, ktora
nastepnie przeniesie dane do SDRAMu. W jakim trybie
pracy CY najlepiej zrealizowac polaczenie: master synchroniczny,
slave synchroniczny, czy slave asynchroniczny? Moge
wygenerowac w FPGA zegar 32,5MHz dla IFCLOCK CY,
o ile jest taka potrzeba, ale troche szkoda mi PLLa. Z kolei
uzycie zegara 30MHz generowanego przez CY moze
spowodowac pewne problemy z synchronizacja w FPGA,
chyba, ze uzyje wewnetrznego RAMu M4K na FIFO do
dosynchronizowania transferu. Czy ktos ma moze jakis
sprawdzony przyklad podlaczenia CY do FPGA, bym nie
musial ponownie odkrywac kola?

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "Mister" <wojpieUsunTo_at_nospam_pocztaUsunTo.onetUsunTo.pl>
Subject: Re: CY7C68013 i FPGA
Date: Mon, 28 Feb 2005 00:01:25 +0100


Witam,

Czy moge podlaczyc pin nSTATUS w FPGA do pinu
RESET w CY, by podczas bledu w konfiguracji FPGA
automatycznie zresetowalo mi CY?
Czy takie rozwiązanie jest rozsądne? chyba nie. A co bedzie jak zresetuje ci
CY w czasie transmisji np USB?

Po drugie: prawdziwa
zawartsc pamieci CY tez zostanie pobrana z DataFlash,
potrzeba wiec tylko malego EEPROMu z bootloaderem.
Czy pamiec 24LC04 moze zostac uzyta do tego celu?
Niestety PDF nic o niej nie wspomina, "przeskakujac"
rozmiary posrednie pamieci 24xx, a ja akurat mam 04.

To zależy co chcesz trzymać w tej pamięci jezeli VID i PID to wystarczy a
czy bootloader tam się zmieści to musisz sprawdzić sam.


Ad b: informacja ma plynac w obu kierunkach. Jesli FPGA
ma cos do wyslania, to zapisuje dane do FIFO w CY. Jezeli
CY cos odbierze, to ma o tym powiadomic FPGA, ktora
nastepnie przeniesie dane do SDRAMu. W jakim trybie
pracy CY najlepiej zrealizowac polaczenie: master synchroniczny,
slave synchroniczny, czy slave asynchroniczny? Moge
wygenerowac w FPGA zegar 32,5MHz dla IFCLOCK CY,
o ile jest taka potrzeba, ale troche szkoda mi PLLa. Z kolei
uzycie zegara 30MHz generowanego przez CY moze
spowodowac pewne problemy z synchronizacja w FPGA,

Czym mniej domen zegarowych tym lepiej!!! IMHO najlepiej zostan przy tym
zegarze 32,5 z fpga.
Z powyższego zawsze preferuję interfejs synchroniczny, czy to ma byc master
czy slawe to już kwestia konkretnej aplikacji.

chyba, ze uzyje wewnetrznego RAMu M4K na FIFO do
dosynchronizowania transferu. Czy ktos ma moze jakis
sprawdzony przyklad podlaczenia CY do FPGA, bym nie
musial ponownie odkrywac kola?

Ja generuję zegar 48 MHz z CY ale to inna bajka...

Pozdrawiam i życzę wytrwałości w zabawie z fpga;-)
Mister


Pozdrawiam
Piotr Wyderski




Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: CY7C68013 i FPGA
Date: Mon, 28 Feb 2005 00:17:08 +0100


Mister wrote:

Czy takie rozwiązanie jest rozsądne? chyba nie. A co
bedzie jak zresetuje ci CY w czasie transmisji np USB?

A w jaki sposob moze do tego dojsc? Albo sie FPGA nie
skonfiguruje wcale (i wowczas do zadnej transmisji nie
dojdzie), albo skonfiguruje sie poprawnie, ale po jakims
czasie dzialania zawiesi i samoczynnie zresetuje --
wowczas transmisja nie bedzie mogla byc kontynuowana,
bo dane sa produkowane/odbierane przez FPGA, ktora
wlasnie zdechla. :-) Ja widze kilka zalet takiego rozwiazania,
ale wole sie zapytac bardziej doswiadczonych.

To zależy co chcesz trzymać w tej pamięci jezeli VID i PID
to wystarczy a czy bootloader tam się zmieści to musisz
sprawdzić sam.

Bootloader kodu z innego ROMu sie zmiesci, chodzi o to,
czy moge taki uklad podlaczyc do CY -- w tabelce w PDF
go "przeskoczono". Ale mam jeszcze 128-bajtowe EEPROMY.

Czym mniej domen zegarowych tym lepiej!!!

Dlaczego? Obecnie chce miec co najmniej 2: zasadnicza,
na 65MHz, podwojona, 130MHz do szybkiego wykonywania
prostych, lecz czestych zadan i dostepu do SDRAMu. Do
tego musze miec komunikacje z CY na maksymalnie duzej
czestotliwosci oraz z kodekiem AC-97 na 24 z kawalkiem MHz.
Uklad ma speed grade 6, dla obecnie zaimplementowanej
czesci projektu Quartus daje prawie dwukrotny zapas fmax.

Pozdrawiam i życzę wytrwałości w zabawie z fpga;-)

Dziekuje. :-)

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: jerry1111 <pleaseJERRY1111nomorespam_at_nospam_wp.pl>
Subject: Re: CY7C68013 i FPGA
Date: Tue, 01 Mar 2005 18:48:45 +0000


Czy takie rozwiązanie jest rozsądne? chyba nie. A co
bedzie jak zresetuje ci CY w czasie transmisji np USB?


A w jaki sposob moze do tego dojsc? Albo sie FPGA nie
skonfiguruje wcale (i wowczas do zadnej transmisji nie
dojdzie),

Ale wtedy bedzie dawac 'w kolko' ten nConfig - nie bedzie
przeszkadzac od strony usb?

albo skonfiguruje sie poprawnie, ale po jakims
czasie dzialania zawiesi i samoczynnie zresetuje --

Jak sie zawiesi, to sie nie zresetuje samo.

wowczas transmisja nie bedzie mogla byc kontynuowana,
bo dane sa produkowane/odbierane przez FPGA, ktora
wlasnie zdechla. :-) Ja widze kilka zalet takiego rozwiazania,
ale wole sie zapytac bardziej doswiadczonych.

Jak zwykle - najciezszy temat se wybrales... resety, zwisy i
jak calosc ma wtedy dzialac. Ja bym sie nie przejmowal.
Powiem inaczej - jak mi by sie zawiesila FPGA (w sensie samoczynnej
zmiany konfiguracji) to 3/4 elektroniki poszloby z dymem.

Czym mniej domen zegarowych tym lepiej!!!

Ani lepiej ani gorzej. Jak sie ma wiecej niz jedna domene,
to po prostu trza uprawiac tworczosc na trzezwo.... znaczy
w takim przypadku ja preferuje po piffku.
Generalnie jak jest >1 domena to trza czesc zasobow stracic
na FIFO (IMHO jedyny pewny sposob pogodzenia dwoch czestotliwosci).

Dlaczego? Obecnie chce miec co najmniej 2: zasadnicza,
na 65MHz, podwojona, 130MHz do szybkiego wykonywania
prostych, lecz czestych zadan i dostepu do SDRAMu. Do
tego musze miec komunikacje z CY na maksymalnie duzej
czestotliwosci oraz z kodekiem AC-97 na 24 z kawalkiem MHz.
Uklad ma speed grade 6, dla obecnie zaimplementowanej
czesci projektu Quartus daje prawie dwukrotny zapas fmax.

Pewnie malo kto zwrocil uwage - ale jak masz kilka zegarow
i zadania podzielone miedzy zegary, to tak naprawde zyskujesz
na Fmax ktora jest pokazywana przez Q2. Czemu? Bo dany net zegarowy
jest mniejszy i ma mniejsze opoznienia/przesuniecia.


--
Jerry


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: CY7C68013 i FPGA
Date: Tue, 1 Mar 2005 21:18:00 +0100


jerry1111 wrote:

Ale wtedy bedzie dawac 'w kolko' ten nConfig
- nie bedzie przeszkadzac od strony usb?

Dopoki sie FPGA nie skonfiguruje, to zadne polaczenie USB
nie zostanie nawiazane, wiec przeszkadzac nie bedzie. Ale
to nie moj pomysl, w Cyclone Handbook jest napisane, ze
po wystapieniu bledu urzadznie konfugurujace powinno zostac
zresetowane. Wiem oczywiscie, ze ten reset niekoniecznie
nalezy traktowac doslownie, ale podpiecie nCONFIG do
RESET brzmi dosc ciekawie. Powazniejszym powodem jest
jednak ograniczona liczba pinow w CY -- zabraklo mi dokladnie
jednego, a chcialbym na nim zrobic migacz, ktory za pomoca
odpowiedniej sekwencji blyskow sygnalizowalby roznego
rodzaju awarie urzadzenia. Reszta pinow ma sluzyc do
zaprogramowania FPGA. Dziala to w sposob nastepujacy:

Do MCU i FPGA jest jednoczesnie podlaczona pamiec
szeregowa DataFlash 16Mbitow SPI:

DF.SO => FPGA.DATA, CY.PORT1
DF.SI => FPGA.ASDI, CY.PORT2
DF.SCLK => FPGA.DCLK, CY.PORT3
DF.CE => FPGA.jakis_pin, CY.PORT4
FPGA.nCONFIG => CY.PORT5
FPGA.nSTATUS => CY.PORT6
FPGA.nCE => CY.PORT7
FPGA.CONF_DONE => CY.PORT8

1. CY ustawia FPGA.nCE na 1 i laduje sobie potrzebne
dane z flashu. Sygnaly pojawiaja sie tez na DATA i DCLK
FPGA, ale poniewaz nCE=1, to FPGA je olewa.

2. CY wysyla do flashu komende "continuous array access mode"
i ustawia SCLK na 0, co wyprowadza pierwszy bit danych z flashu.

3. CY ustawia FPGA.nCE na 0 i zaczyna machac linia SCLK,
wpompowujac obraz konfiguracyjny do FPGA. Autoinkrementacja
wskaznika we flashu zapewnia ciagly wyplyw danych z pamieci.
Sztuczka: dane z flashu wychodza podczas zbocza opadajacego,
a do FPGA wchodza podczas narastajacego na linii SCLK, wiec
szyna SO=>DATA ma cala polowe okresu taktowania SCLK na
ustabilizowanie, a wiec nie ma hazardow i wyscigow.

4. Po wytaktowaniu odpowiedniej liczby bitow, albo otrzymania
informacji o bledzie konfiguracji FPGA CY sprawdza, czy proces
przebigl pomyslnie. Jesli nie, to probuje kilkukrotnie przekonfigurowac
FPGA. W razie niepowodzenia poddaje sie i zglasza blad.

5. Jesli sie udalo, to CY odlacza sie od szyn SI, SO i SCLK,
a kontrole nad flashem przejmuje FPGA. Od teraz linie
DATA, ASDI, DCLK oraz jakis_pin sluza do komunikacji
z flashem.

Troche to pokrecone, ale zaleta jest taka, ze 16Mb EPCS16 kosztuje
78 zl., a DataFlash o takiej samej pojemnosci zaledwie 19, a gdzies
programy dla NIOSa, wspolczynniki dla filtrow, bitmapki i byc moze
kilka alternatywnych obrazow konfiguracyjnych FPGA musze trzymac.

Jak zwykle - najciezszy temat se wybrales...

o)

Ani lepiej ani gorzej. Jak sie ma wiecej niz jedna domene,
to po prostu trza uprawiac tworczosc na trzezwo.... znaczy
w takim przypadku ja preferuje po piffku.

Generalnie jak jest >1 domena to trza czesc zasobow stracic
na FIFO (IMHO jedyny pewny sposob pogodzenia dwoch czestotliwosci).

Wolnych RAMow mam jeszcze 18, a te czestotliwosci nie sa tak do
konca rozne (za wyjatkiem taktowania TDMA), bo wytwarza je jeden
PLL. Ale przypomniales mi pytanie. Mam bazowy zegar clock_1x
oraz zrobiony z niego na PLLu clock_2x, o dwukrotnie wiekszej
czestotliwosci. Jest pewien szybki potokowy uklad liczacy, ktory
jest taktowany clock_2x. Ma on dwa wejscia, A i B. W taktach
nieparzystych bierze dane przez multiplekser z A, a w parzystych
w B. Jak to najlepiej zapisac? Mozna dac prosty licznik mod 2 sterujacy
multiplekserem, ale myslalem o wykorzystaniu do tego celu
sygnalu clock_1x, clock_2x przesuwajac w fazie o 1/2 jego
okresu wzgledem clock_1x, by w chwili rising_edge(clock_2x)
jego wartosc byla juz ustalona. Wolno tak zrobic?

Pozdrawiam
Piotr Wyderski



Poprzedni Następny
Wiadomość
Spis treści
From: "JA" <j_andrWYTNIJTO_at_nospam_freenet.de>
Subject: Re: CY7C68013 i FPGA
Date: 2 Mar 2005 09:48:18 +0100



"Piotr Wyderski"


ale myslalem o wykorzystaniu do tego celu
sygnalu clock_1x, clock_2x przesuwajac w fazie
o 1/2 jego okresu wzgledem clock_1x, by w chwili
rising_edge(clock_2x)jego wartosc byla juz ustalona.
Wolno tak zrobic?

wolno;
jedyne ograniczenie prawdopodobnie jest takie,
ze clock_1x nie moze byc wyjsciem z PLL;
w Stratix PLL moze sterowac jedynie port CLOCK
przerzutnikow, pamieci lub pin I/O;
podejrzewam, ze Cyclone ma w tym punkcie podobna
architekture;

   Piotr Wyderski

J.A


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: CY7C68013 i FPGA
Date: Wed, 2 Mar 2005 14:06:37 +0100


JA wrote:

wolno;
jedyne ograniczenie prawdopodobnie jest takie,
ze clock_1x nie moze byc wyjsciem z PLL;

Nie jest, to jest wejscie z zewnetrznego generatora, podlaczone
bezposrednio do jednej z globalnych sieci zegarowych.

No to jeszcze mam jedno pytanie: sygnal wychodzi
z podukladu pracujacego na 130MHz (clock_2x), jest
zatrzaskiwany w buforze pracujacym na 65MHz
(clock_1x), przechodzi przez kaskade filtrow calkujaco
-rozniczkujacych, tez na clock_1x i trafia do decymatora
o zmiennym stopniu decymacji. No i teraz probki
wychodza z niego z czestotliwoscia clock_1x/N (co N-ty
impuls clock_1x), po czym trafiaja do "DSP" osadzonego
w FPGA. Czy strobowanie takim podzielonym przez
licznik zbudowany z LE sygnalem nie bedzie dla FPGA
problemem, tj. czy nie wprowadzi jakichs gigantycznych
opoznien do ukladu? Jezeli probki trafialyby do FIFO, to
jeszcze niewielki problem, ale prawdopodobnie za
tym decymatorem bedzie jeszcze drugi blok
decymujaco-filtrujacy o stopniu M i to jego trzeba bedzie
taktowac sygnalem clock_1x/N. W druga strone (tzn.
DSP => blok interpolujaco-filtrujacy) nie przewiduje
problemow, bo to bedzie dzialalo podobnie jak wspomniane
wczesniej mostki synchroniczne.

Pozdrawiam
Piotr Wyderski



Poprzedni Następny
Wiadomość
Spis treści
From: "JA" <j_andrWYTNIJTO_at_nospam_freenet.de>
Subject: Re: CY7C68013 i FPGA
Date: 2 Mar 2005 15:16:12 +0100




"Piotr Wyderski":


jedyne ograniczenie prawdopodobnie jest takie,
ze clock_1x nie moze byc wyjsciem z PLL;

Nie jest, to jest wejscie z zewnetrznego generatora,
podlaczone bezposrednio do jednej z globalnych sieci
zegarowych.

tak tez zrozumialem Twoj opis;
napisalem o tym ograniczeniu architektonicznym,
bo zwykle praktyka jest taka, ze zewnetrzny zegar
wchodzi na PLL, ktory produkuje wszystkie
syg. zegarowe uzywane w logice, nawet jesli to jest 1x;
latwiej kontrolowac przesuniecia fazowe;

nawiasem mowiac Altera w swym IP DDR-RAM controller
wlasnie tak przelacza mux danych, sygnalem zegarowym;
co by bylo smiesznej, data strobe DQS zrobiony jest tak,
ze wejscia mux. przypiete sa na stale - jedno do LOW,
drugie do HIGH, a system clock to mux przelacza :)


No to jeszcze mam jedno pytanie: sygnal wychodzi
z podukladu pracujacego na 130MHz (clock_2x), jest
zatrzaskiwany w buforze pracujacym na 65MHz
(clock_1x),

ten uklad 130Mhz produkuje dane co drugi clock ?
czy masz 2 zestawy bufora 65MHz, pracujacych
na przeciwnych zboczach ?
bo inaczej nie rozumiem idei;


przechodzi przez kaskade filtrow calkujaco
-rozniczkujacych, tez na clock_1x i trafia do decymatora
o zmiennym stopniu decymacji. No i teraz probki
wychodza z niego z czestotliwoscia clock_1x/N (co N-ty
impuls clock_1x), po czym trafiaja do "DSP" osadzonego
w FPGA. Czy strobowanie takim podzielonym przez
licznik zbudowany z LE sygnalem nie bedzie dla FPGA
problemem, tj. czy nie wprowadzi jakichs gigantycznych
opoznien do ukladu?

moim zdaniem nie, czemu mialoby to wprowadzac
gigantyczne opoznienia ?
quartus widzac, ze port Q jakiegos Flip-Flopa jest
zegarem dla jakiejs czesci logiki, automatycznie
nada mu atrybut 'clock' i przypnie do sieci zegarowej,
o ile taka siec bedzie jeszcze wolna;
inna sprawa, za ja uzylbym prawdopodobnie licznika
do produkcji sygnalu 'write_enable', czy 'data_valid',
a clock bylby clock'iem;
moze nie bardzo rozumiem, co tam majstrujesz,
ale ja bym to, w generalnym zarysie, zrobil tak:
JESLI caly cykl przetwarzania danych zajmuje
N cykli zegara
JESLI poszczegolne bloki maja staly czas przetwarzania
to zrobilbym licznik modulo N,
wszystko pedzil jednym zegarem, a komparatory
z tego licznika mod.N produkowalyby sygnaly
'Mod_X_data_valid';

oczywiscie sposob synchronizacji blokow
pracujacych z rozna predkoscia zalezy od
projektu, to powyzej wcale nie musi byc dobrym
rozwiazaniem;

co to jest 'decymator', i to o ' zmiennym' stopniu
decymacji' ?

Piotr Wyderski

JA


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: CY7C68013 i FPGA
Date: Wed, 2 Mar 2005 20:38:45 +0100


JA wrote:

ten uklad 130Mhz produkuje dane co drugi clock ?
czy masz 2 zestawy bufora 65MHz, pracujacych
na przeciwnych zboczach ?
bo inaczej nie rozumiem idei;

Nie, uklad 130MHz pobiera dane i zwraca wynik w kazdym
clocku. To jest jeden wielki uklad przetwarzania potokowego.
Dane naplywaja z dwoch zrodel, ale za to z czestotliwoscia
65MHz. Dlatego chce je po kolei wrzucac do tego rotatora
-- co druga probka ze zrodla A, co druga ze zrodla B. Wyjscie
ukladu tez ma byc demultipleksowane i zwracac wyniki
naprzemiennie do kanalu A' i B'. dzieki temu zaoszczedze
ponad 1000 LE, bo tyle mniej wiecej kosztowalby drugi rotator.

moim zdaniem nie, czemu mialoby to wprowadzac
gigantyczne opoznienia ?

Ja nie wiem dlaczego i czy w ogole, chucham na zimne. ;-)

JESLI caly cykl przetwarzania danych zajmuje
N cykli zegara
JESLI poszczegolne bloki maja staly czas przetwarzania
to zrobilbym licznik modulo N,
wszystko pedzil jednym zegarem, a komparatory
z tego licznika mod.N produkowalyby sygnaly
'Mod_X_data_valid';

Nie wiedzialem, ze tak mozna. A takie liczniki juz sa, sluza
do ustalania stopnia decymacji i interpolacji w blokach CIC.

co to jest 'decymator'

Uklad do resamplingu strumienia danych wejsciowych metoda
decymacji, czyli przepuszczania dalej co N-tej probki. Dziala
tak, ze N-1 probek wyrzuca, a N-ta przepuszcza, i tak cyklicznie.
Na przyklad wchodzi sygnal sprobkowany przez bardzo szybki
przetwornik ADC z czestotliwoscia 65MHz, a ma wyjsc sygnal,
ktory odpowiadalby sprobkowaniu na czestotliwosci 8KHz. No
wiec trzeba zrobic resampling (+ roznego rodzaju filtrowanie
antyaliasingowe na filtrach IIR w architekturze CIC itp.).
Dane wyplywaja z decymatora N razy wolniej niz wplywaja,
a poniewaz N moge sobie w duzym zakresie ustawiac,
dalsze przetwarzanie wynikowego strumienia musze wyzwalac
strobem z licznika decymatora, a nie wiem -- bo dopiero
zaczalem z tymi ukladami zabawe -- czy FPGA dobrze znosza
takie sytuacje.

Interpolator dziala odwrotnie: bierze dwie probki i wstawia
miedzy nie N-1 zer, robiac resampling w kierunku wyzszych
czestotliwosci. Nie ma z nim problemu dlatego, ze wyplywajace
z niego dane sa dokladnie zsynchronzowane z clock_1x.

i to o ' zmiennym' stopniu decymacji' ?

Ustalanym przeze mnie on-line (w celu cyfrowego ksztaltowania
interesujacego mnie w danym momencie fragmentu widma). Stad
nie moge uzyc PLL do wytworzenia sobie odpowiednio wolniejszego
zegara -- beda po 4 niezalezne bloki interpolujace i decymujace.
Pozniej sygnal wynikowy trafia do mieszacza kwadraturowego,
a z niego juz na zewnatrz FPGA.

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "JA" <j_andr_smiec__at_nospam_freenet.de>
Subject: Re: CY7C68013 i FPGA
Date: Thu, 3 Mar 2005 00:56:21 +0100



"Piotr Wyderski":

ten uklad 130Mhz produkuje dane co drugi clock ?
czy masz 2 zestawy bufora 65MHz, pracujacych
na przeciwnych zboczach ?
bo inaczej nie rozumiem idei;

Nie,

mnie wyszlo, ze jednak tak ... :)

uklad 130MHz pobiera dane /.../
i zwracac wyniki naprzemiennie do kanalu A' i B'.

czyli 'po chlopsku' 130M robi na 2 bufory 65M;


moim zdaniem nie, czemu mialoby to wprowadzac
gigantyczne opoznienia ?

Ja nie wiem dlaczego i czy w ogole, chucham na zimne. ;-)

zamiast chuchac mozna sprawdzic;
napisz sobie kod, ktory ma dwa sumatory tych samych
danych 8 bitowych, wynik jednego sumatora jest zatrzaskiwany
slow_clk, ktory jest zewnetrznym zegarem, powiedzmy 30MHz,
wynik drugiego zapisywany zegarem div_clk, ktory otrzymujesz
dzielac przez 4 zewnetrzne 120MHz;
po kompilacji klikasz na biala kartke oznaczajaca 'new file',
z opcji wybierasz 'waveform editor' albo jakos podobnie,
wyskakuje edytor, dwuklikasz na lewe pole, wyskakuje 'node finder'
[pisze z pamieci ...] , tam w opcjach wybierasz 'all I/O' albo
'pins all', wybierasz wszystkie piny, pare razy OK i masz
edytor gotowy do pracy, teraz trzeba narysowac wejscia;
i ustawiasz czestotliwosc,
[jesli jest przypadkiem error: no input vektor lub podobnie,
trzeba w settings odnalezc symulator i w odpowiednie pole
wpisac stworzony file, przy okazji warto zahaczyc opcje
'overwrite input vector file';
jakis idiota wymyslil, ze najlepiej sie pracuje majac jedna
kartke do rysowania wejsc i druga do ogladania wynikow,
dopiero po protestach uzytkownikow Altera dodala opcje,
ze sie i edytuje i oglada w tym samym oknie]

porownujac wyjscia sumatorow widzisz jakie opoznienie
wprowadzil dzielnik czestotliwosci;

nie polecam [ale i nie zniechecam do] symulatora quartus'a
do powaznej symulacji powaznego projektu, ale do szybkiego
sprawdzenia koncepcji, a zwlaszcza do sprawdzenia timingu
jest nieoceniony, timing jest naprawde dokladny;
oczywiscie to samo mozna zrobic w Modelsim, jesli ktos woli;


Ustalanym przeze mnie on-line [...]

nie wiem, czy akurat w tej pracy Ci sie to przyda, ale wysoce
rekonfigurowalny system mozna uzyskac korzystajac z RAMu
w FPGA;
trzeba zadeklarowac odpowiednio duza i szeroka pamiec;
[powiedzmy 16x32];
zwykly licznik z RESET jako jej adres, kazdy bit z pamieci
to 'data_valid' albo inny 'control' dla innego modulu, co pozwala
zaprogramowac 'sekwencje' przeplywu danych miedzy modulami,
jeden z bitow zeruje licznik adresowy co pozwala ustawic
dlugosc cyklu;
mowiac inaczej masz do pewnego stopnia programowalna
FSM;
pamiec moze byc w latwy sposob ladowana on-line
z zewnatrz, na przyklad przez usb czy i2c;

Piotr Wyderski

J.A

Poprzedni Następny
Wiadomość
Spis treści
From: jerry1111 <pleaseJERRY1111nomorespam_at_nospam_wp.pl>
Subject: Re: CY7C68013 i FPGA
Date: Wed, 02 Mar 2005 11:30:13 +0000


4. Po wytaktowaniu odpowiedniej liczby bitow, albo otrzymania
informacji o bledzie konfiguracji FPGA CY sprawdza, czy proces
przebigl pomyslnie. Jesli nie, to probuje kilkukrotnie przekonfigurowac
FPGA. W razie niepowodzenia poddaje sie i zglasza blad.

Tutaj uwazaj - ja nie konfigurowalem Cyclonow inaczej
niz poprzez EPCS (automagicznie). Cos tam z tymi
konfiguracjami jest, ze potrzebuja iles bitow na poczatku oraz
iles bitow na koncu obrazu :-(
Moze dla Ciebie bezpieczniej jest wsadzic zwykly Flash rownolegly
8/16bitow i tak konfigurowac ustrojstwa? Interfejsik flash-altera
zapewni Ci epm3064 kosztujace circa $1.

Troche to pokrecone, ale zaleta jest taka, ze 16Mb EPCS16 kosztuje
78 zl., a DataFlash o takiej samej pojemnosci zaledwie 19, a gdzies
programy dla NIOSa, wspolczynniki dla filtrow, bitmapki i byc moze
kilka alternatywnych obrazow konfiguracyjnych FPGA musze trzymac.

Tym bardziej stawialbym na rownolegly zwykly flash.

Wolnych RAMow mam jeszcze 18, a te czestotliwosci nie sa tak do
konca rozne (za wyjatkiem taktowania TDMA), bo wytwarza je jeden
PLL. Ale przypomniales mi pytanie. Mam bazowy zegar clock_1x
oraz zrobiony z niego na PLLu clock_2x, o dwukrotnie wiekszej
czestotliwosci. Jest pewien szybki potokowy uklad liczacy, ktory
jest taktowany clock_2x. Ma on dwa wejscia, A i B. W taktach
nieparzystych bierze dane przez multiplekser z A, a w parzystych
w B. Jak to najlepiej zapisac? Mozna dac prosty licznik mod 2 sterujacy
multiplekserem, ale myslalem o wykorzystaniu do tego celu
sygnalu clock_1x, clock_2x przesuwajac w fazie o 1/2 jego
okresu wzgledem clock_1x, by w chwili rising_edge(clock_2x)
jego wartosc byla juz ustalona. Wolno tak zrobic?

Niby wolno (w sensie ze sie skompiluje) ale cholera wie czy to
bedzie poprawnie (znaczy tak jak Ty chcesz) dzialac.
Ja bym byl mocno ostrozny przy tak synchronizowanych zegarach...
Spytaj sie lepiej kogos bardziej doswiadczonego (bo ja wszystkie
miedzyzegarowe synchronizacje robilem przez FIFO z lenistwa)


--
Jerry


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: CY7C68013 i FPGA
Date: Wed, 2 Mar 2005 13:48:46 +0100


jerry1111 wrote:

Tutaj uwazaj - ja nie konfigurowalem Cyclonow inaczej
niz poprzez EPCS (automagicznie). Cos tam z tymi
konfiguracjami jest, ze potrzebuja iles bitow na poczatku oraz
iles bitow na koncu obrazu :-(

A to jest maly problem, moge je dorzucic -- przeciez
wtaktowaniem danych do FPGA i tak zajmuje sie MCU.

Interfejsik flash-altera zapewni Ci epm3064 kosztujace circa $1

No to pewnie w detalu 20$, wiec bedzie to zamiana siekierki na kijek,
do tego bede musial sie nauczyc CPLD, ktorych wczesniej nie
stosowalem (tylko male GALe). Troche szkoda, bo mam flasze
16Mbit rownolegle w szufladzie...

Troche to pokrecone, ale zaleta jest taka, ze 16Mb EPCS16 kosztuje
78 zl., a DataFlash o takiej samej pojemnosci zaledwie 19, a gdzies
programy dla NIOSa, wspolczynniki dla filtrow, bitmapki i byc moze
kilka alternatywnych obrazow konfiguracyjnych FPGA musze trzymac.

Tym bardziej stawialbym na rownolegly zwykly flash.

Dlaczego, bo kompletnie nie rozumiem jakie to ma zalety?

Ja bym byl mocno ostrozny przy tak synchronizowanych zegarach...

Ostrozny rowniez bede, tylko chcialbym sie dowiedziec, czy to
w ogole ma szanse zadzialac. Szczegolnie, ze takich mostkow
synchronicznych ja chce miec co najmniej kilka. A opowiesci
Quartusa traktuje z przymruzeniem oka, bo opowiada bajki, m.in.,
ze uklad, ktory obawialem sie, czy pojdzie na 65MHz po przepisaniu
do postaci potokowej wedlug niego ma fmax. 373MHz. O Czerwonym
Kapturku jeszcze nie opowiadal...

Spytaj sie lepiej kogos bardziej doswiadczonego

comp.arch.fpga? Tam Xilinxowcy siedza. :-(

Pozdrawiam
Piotr Wyderski



Poprzedni Następny
Wiadomość
Spis treści
From: "JA" <j_andrWYTNIJTO_at_nospam_freenet.de>
Subject: Re: CY7C68013 i FPGA
Date: 2 Mar 2005 16:00:36 +0100




"Piotr Wyderski":


[...]
A opowiesci Quartusa traktuje z przymruzeniem oka,
bo opowiada bajki, m.in., ze uklad, ktory obawialem sie,
czy pojdzie na 65MHz po przepisaniu do postaci potokowej
wedlug niego ma fmax. 373MHz. O Czerwonym Kapturku
jeszcze nie opowiadal...

szczerze mowiac nie wierze, ze quartus opowiada bajki,
raczej jest pesymistyczny w szacowaniu fmax;

nacisnales ikonke z zegarkiem i pojawilo sie okno
z czyms przypominajacym predkosciomierz w aucie ?
na gorze tego okna jest pole z nazwa sygnalu, ktorego
dotyczy wartosc na 'predkosciomierzu', upewnij sie,
ze jest tam clock o ktory Ci chodzi ;)


   Piotr Wyderski

J.A



--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: jerry1111 <pleaseJERRY1111nomorespam_at_nospam_wp.pl>
Subject: Re: CY7C68013 i FPGA
Date: Thu, 03 Mar 2005 09:47:16 +0000


Piotr Wyderski wrote:
jerry1111 wrote:
Interfejsik flash-altera zapewni Ci epm3064 kosztujace circa $1


No to pewnie w detalu 20$,

W detalu $1 :-)
Obsluguje go Quartus - gotowe designy z bootloaderem sa gdzies
na sieci - a jak nie to Ci wysle i juz.

> wiec bedzie to zamiana siekierki na kijek,
do tego bede musial sie nauczyc CPLD

Nie zauwazysz roznicy miedzy fpga i cpld :-)

stosowalem (tylko male GALe). Troche szkoda, bo mam flasze
16Mbit rownolegle w szufladzie...

no wlasnie!

Tym bardziej stawialbym na rownolegly zwykly flash.


Dlaczego, bo kompletnie nie rozumiem jakie to ma zalety?

Chcesz miec kilka roznych 'wsadow' do Cyclona.
Po prostu w trakcie resetu wciskasz odpowiedni guzik
(ktory np: zwiera ktorys gorny bit adresu flasha) i masz
inny 'wsad'.

Ostrozny rowniez bede, tylko chcialbym sie dowiedziec, czy to
w ogole ma szanse zadzialac.

Zadzialac ma szanse - najwyzej bedzie wolne.

Szczegolnie, ze takich mostkow
synchronicznych ja chce miec co najmniej kilka. A opowiesci
Quartusa traktuje z przymruzeniem oka, bo opowiada bajki, m.in.,
ze uklad, ktory obawialem sie, czy pojdzie na 65MHz po przepisaniu
do postaci potokowej wedlug niego ma fmax. 373MHz. O Czerwonym
Kapturku jeszcze nie opowiadal...

Jesli Q2 tak mowi, znaczy tak jest. Upewnij sie tylko czy
sluchales 'opowiesci' o interesujacym Cie zegarze, bo AFAIR jak
masz wiecej niz jeden zegar w ukladzie to Quartus nie podaje
po prostu Fmax, tylko siakies opoznienia (nie pamietam, a teraz
nie sprawdze).

Spytaj sie lepiej kogos bardziej doswiadczonego


comp.arch.fpga? Tam Xilinxowcy siedza. :-(

Ano siedza, cholery......
Wiesz co - nie obawiaj sie tak Quartusa, bo ten program to bardziej
niedoszacuje niz przeszacuje. Ja tam dla tego programu wierze :-)


--
Jerry


Poprzedni Następny
Wiadomość
Spis treści
From: "M.S." <nicramus_at_nospam_gazeta.pl>
Subject: Re: CY7C68013 i FPGA
Date: Fri, 4 Mar 2005 08:58:14 +0100



Interfejsik flash-altera zapewni Ci epm3064 kosztujace circa $1


No to pewnie w detalu 20$,

W detalu $1 :-)

Prosba, zdradz nazwe tego detalisty, bede potrzebowal MAX3000A w najblizszym
czasie.

Pozdrawiam
M.S.