spartan2- problem z petla DLL



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "epson" <kip1234_at_nospam_poczta.onet.pl>
Subject: spartan2- problem z petla DLL
Date: Tue, 5 Nov 2002 03:14:12 +0100


witam
do spartana mam podlaczony oscylator 80MHz.w ukladzie potrzebuje 2 sygnalow
o tej czestotliwosci ale jeden wzgledem drugiego maja byc przesuniete w
fazie o 90 stopni. podlaczylem wiec wejscie na petle DLL i przez bufory chce
wewnatrz ukladu kozystac z sygnalow CLK0 i CLK90. tak wiec zrobilem i w
symulacjach wszystko swietnie dziala. niestety w praktyce juz nie.na we
logiki jest przebieg z oscylatora a na wyjsciach chce wystawic te 2
przebiegi puszczone przez jakas logike(musza byc bramkowane bo to np sygn.
taktowania wpisu do pamieci we' ) i na wy juz nic nie ma:( gdy nie uzywam
petli DLL tylko na obydwa sygnaly(te zamiast clk0 i clk90) puszczam sygnal
zegarowy z we logiki to mam te przebiegi na wyjsciach , niestety nie
spelniaja wymagan takich jak potrzebuje(sygn WE' narasta dopiero ok1,5ns po
zmianie adresu a to juz pewnie bedzie siac krzakami w zapisie)
moze jakis glupi blad robie? moze komus z Was chce sie rzucic okiem na
fragmety kodu VHDLowego dotyczace petli DLL i ewentualnie szkrobnac pare
slow czy to dobrze zrobilem.

..
OSCCLK : in std_logic;
AD1CLK : out std_logic;
...
signal clk0,clk90,clkin,rst,CLK1: std_logic;
ATTRIBUTE CLKDV_DIVIDE : STRING ;
ATTRIBUTE DUTY_CYCLE_CORRECTION : STRING ;
ATTRIBUTE CLKDV_DIVIDE OF XLXI_49 : LABEL IS "2";
ATTRIBUTE DUTY_CYCLE_CORRECTION OF XLXI_49 : LABEL IS "TRUE";
...
XLXI_47 : BUFG
PORT MAP (I=>clk0, O=>clk1);
XLXI_48 : BUFG
PORT MAP (I=>clk90, O=>clk1p);
XLXI_49 : CLKDLL
GENERIC MAP ( CLKDV_DIVIDE => 2.000000 )
PORT MAP (CLKFB=>clk1, CLKIN=>clkin, RST=>rst, CLK0=>clk0,
CLK180=>open, CLK270=>open, CLK2X=>open, CLK90=>clk90, CLKDV=>open,
LOCKED=>open);
XLXI_51 : IBUFG
PORT MAP (I=>oscclk, O=>clkin);

...
dodam ,ze clk1 jest uzywany do maszyny stanow, bezposrednio wystawiany na
ad1clk i bramkowany jako sygnal WR' pamieci, natomiast clk1p uzywam do
inkrementowania licznika adresowego pamieci.
dodatkowo widze takie warningi(WebPack 4.3 SP3):
WARNING:NgdBuild:477 - clock net 'clk1' has non-clock connections
WARNING:NgdBuild:477 - clock net 'clk1p' has non-clock connections
WARNING:NgdBuild:478 - clock net 'clk1p' drives no clock pins

dzieki za pomoc
pozdrawiam
epson




Poprzedni Następny
Wiadomość
Spis treści
From: "Dziadek" <dziadek.l_at_nospam_wp.pl>
Subject: Re: spartan2- problem z petla DLL
Date: Tue, 5 Nov 2002 08:04:47 +0100


[ciach, bo długie]

Kod na oko wyglada OK, poza tym, ze atrybut CLKDV_DIVIDE jest zbedny, bo
przeciez nie korzystasz.
Prawdopodobnie cos namaciles w tej "logice. Zrob tak: dodaj na kazdym z
zegarow dwojke liczaca. wyprowadz wyjscia tych dwojek i sygnal LOCKED z DLL.
Jak dwojki beda sie przewracac, to znaczy ze DLL dziala, tylko dalej jest
cos zle. Poza tym obejrzyj *.ncd pod edytorem i zobacz, jak w rzeczywistosci
wygladaja polaczenia DLL i buforow. Ogladactwo pokazuje, jak zostal twoj kod
zrozumiany.
A poza tym... unikaj bramkowania zegarow, bo to jest proszenie sie o bęcka.
Lepiej pomnoz zegar przez 2 i potem zrob to synchronicznie.

Dz.




Poprzedni Następny
Wiadomość
Spis treści
From: "epson" <kip1234_at_nospam_poczta.onet.pl>
Subject: Re: spartan2- problem z petla DLL
Date: Tue, 5 Nov 2002 21:06:39 +0100



Użytkownik "Dziadek" <dziadek.l_at_nospam_wp.pl> napisał w wiadomości
news:aq7qet$mlf$1_at_nospam_news.tpi.pl...
[ciach, bo długie]

Kod na oko wyglada OK, poza tym, ze atrybut CLKDV_DIVIDE jest zbedny, bo
przeciez nie korzystasz.

Wiem, ale i tak domyslnie uklad uruchamia sie z podzielnikiem przez 2 na
wyjsciu clkdv, opis poprostu skopiowalem z tego co schematic(ECS)
wygenerowal.

Prawdopodobnie cos namaciles w tej "logice. Zrob tak: dodaj na kazdym z
zegarow dwojke liczaca. wyprowadz wyjscia tych dwojek i sygnal LOCKED z
DLL.
Jak dwojki beda sie przewracac, to znaczy ze DLL dziala, tylko dalej jest
cos zle. Poza tym obejrzyj *.ncd pod edytorem i zobacz, jak w
rzeczywistosci
wygladaja polaczenia DLL i buforow. Ogladactwo pokazuje, jak zostal twoj
kod
zrozumiany.

Ogladactwo to dobry sposob, nie wiem coprawda zabardzo jak podgladac plik
*.ncd, ale podgladnalem strukture w floorplanerze i... oczywiscie blad byl
trywialny. przy dopisywaniu petli dll cos sie chyba motalem(bylo juz dobrze
po polnocy) i wywalilem w constrainsach przypisanie padu do portu oscclk,
tak wiec umiejscowil mi sie on automatycznie na innym wolnym wejsciu GCLK :)

A poza tym... unikaj bramkowania zegarow, bo to jest proszenie sie o
bęcka.
Lepiej pomnoz zegar przez 2 i potem zrob to synchronicznie.

Gdybym tylko mogl to tak bym zrobil,ale z tego co sie kiedys bawilem w
testowanie spartana2 na wyzszych czestotliwosciach synchroniczne uklady
raczej juz nie dzialaja.ja uzywam kwarcu 80MHz i po podwojeniu na 160MHz
chyba nie dzialala by FSM.Tak wiec FSM u mnie chodzi na 80M i wystawia
odpowiednie sygnaly ktore bramkuja np sygn WE' dla wpisu do pamieci. Moze na
Virtexach 2 by to poszlo tak jak piszesz??


Dz.

dzieki serdeczne z odpowiedz, tak bym to pewnie na 2 dni to rzucil w kat bo
juz od 5 miesiecy dlubie w jednym urzadzeniu i jeszcze nie jest perfekcyjnie
i juz trace do niego cierpliwosc:)
pozdrawiam
epson