RTV forum PL | NewsGroups PL

Tanio i skutecznie: logika programowalna do licznika z 24-bitowym wejściem kwadraturowym

Mała i tania logika programowalna do pro jektu licznika

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Tanio i skutecznie: logika programowalna do licznika z 24-bitowym wejściem kwadraturowym

Goto page 1, 2  Next

Sebastian Bialy
Guest

Fri Mar 14, 2008 6:56 pm   



Witam!

Zadanie:

a) licznik z wejściem kwadraturowym ok. 24 bity
b) rejestr równoległy do zapamiętania tego licznika na sygnał zboczem -
dwie sztuki
c) częstotliwośc zliczania impulsów - śjakieś 100kHz maks najlepiej więcej.

Przy takich prędkościach ciezko mi to zrobić na uC (na razie Atmega8@16
wyrabiała sie dla małych prędkości, ale niestety chce więcej). Szukam
jakiejś logiki programowalnej która spełni te powyższe założenia.

Chce:

a) coś w dip w ostateczności smd (musze zrobić najpierw prototyp).
b) z darmowymi narzedziami do projektowania (nie zalezy mi na wypasach,
wystarczy command-line)
c) programowalne w jakimś sensownym języku hdl
d) z programatorem na paru drutach z LPT

Czy ktoś może mi coś polecić ? Nie wiem nawet jak oszacować ilośc
rejestrów (licznik chyba nie może być szeregowy bo mogą być błędy w
zatrzaskiwaniu stanu). Może ktoś pomoże i skieruje mnie na właściwy trop
za czym się rozglądać?

__Maciek
Guest

Fri Mar 14, 2008 9:55 pm   



Fri, 14 Mar 2008 18:56:58 +0100 Sebastian Bialy <heby@poczta.onet.pl>
napisał:

Quote:
a) licznik z wejściem kwadraturowym ok. 24 bity
b) rejestr równoległy do zapamiętania tego licznika na sygnał zboczem -
dwie sztuki
c) częstotliwośc zliczania impulsów - śjakieś 100kHz maks najlepiej więcej.

Robiłem coś bardzo podobnego tylko że z trzema wejściami. Konwersję
sygnału kwadraturowego na CLK + UP/DOWN można zrobić za pomocą LS7084
- scalaczki do kupienia w Wobicie. Ma to ten plus że zawiera on
odpowiednie układy odkłócania sygnału - ważne jeżeli podłączasz
enkoder zamocowany na maszynie.


Quote:
jakiejś logiki programowalnej która spełni te powyższe założenia.
a) coś w dip w ostateczności smd (musze zrobić najpierw prototyp).

CPLD w DIP to chyba tylko w muzeum techniki znajdziesz Wink
Przecież jak masz CPLD i jakiegoś procka to możesz od razu robić
finalną wersję płytki - nawet jak wsad do CPLD ma jakiś błąd to
połączenia elektryczne nie wymagają zmiany - poprawiasz HDL/schemat,
kompilujesz, wgrywasz jeszcze raz i po ptokach. Tylko pamiętaj żeby
nie wybrać jako linii wejściowych i komunikacji z procesorem jakichś
linii specjalnych (od JTAGa np. Smile ) no i żeby wyprowadzić JTAGa.


Quote:
b) z darmowymi narzedziami do projektowania (nie zalezy mi na wypasach,
wystarczy command-line)

Xilinx ISE - dośc upierdliwe i nieprzyjemne środowisko ale da się
działać. Słowa które rzucałem pod adresem autorów tegoż przez pierwsze
kilka godzin używania raczej nie nadają się żeby je zacytować ;-)

Dużo fajniejszy (i bez porównania bardziej intuicyjny) jest Max++
Altery.


Quote:
rejestrów (licznik chyba nie może być szeregowy bo mogą być błędy w
zatrzaskiwaniu stanu). Może ktoś pomoże i skieruje mnie na właściwy trop
za czym się rozglądać?

Myślę że świetnie nadadzą się układy serii XC9500 albo XC2 Xilinxa i
te są chyba najtańsze. Dobre będą też EPM3xxx Altery.
Acha, rozmiar układu należy wybrać PO zaprojektowaniu (przynajmniej
wstępnym) wsadu do niego. Inaczej może się okazać żę zaprojektowałeś
płytkę pod układ w którym nie zmieści się to co chcesz w nim mieć.


--
__ __
/ \ Feel the energy of sound! / \
(| |) (| |)

Dumak
Guest

Fri Mar 14, 2008 9:55 pm   



Sebastian Bialy pisze:
Quote:
Witam!

Zadanie:

a) licznik z wejściem kwadraturowym ok. 24 bity
b) rejestr równoległy do zapamiętania tego licznika na sygnał zboczem -
dwie sztuki
c) częstotliwośc zliczania impulsów - śjakieś 100kHz maks najlepiej więcej.

Przy takich prędkościach ciezko mi to zrobić na uC (na razie Atmega8@16
wyrabiała sie dla małych prędkości, ale niestety chce więcej). Szukam
jakiejś logiki programowalnej która spełni te powyższe założenia.


Proponuję CPLD:

XC95144XL (ok. 30zł)
XC9572 (ok 12-13zł)

z tym że w tym drugim możesz się nie zmieścić.

Odnośnie prędkości to myślę że z 20MHz wyciągnie bez problemu.


Quote:
Chce:

a) coś w dip w ostateczności smd (musze zrobić najpierw prototyp).

Z DIP to ciężko będzie, ale od czego jest "termotransfer" :)

Quote:
b) z darmowymi narzedziami do projektowania (nie zalezy mi na wypasach,
wystarczy command-line)

Xilinx ISE - za darmo, i jest dosyć "wypaśny", tylko trochę zajmuje na
dysku. (instalka ok. 1GB)

Quote:
c) programowalne w jakimś sensownym języku hdl

w "Xilinx ISE" da się w takowym pisać.

Quote:
d) z programatorem na paru drutach z LPT

"Xilinx ISE" obsługuje coś takiego, może nie jest to parę drutów (bo
jeszcze są jakieś bufory) ale do zrobienia w kilka godzin.


Quote:

Czy ktoś może mi coś polecić ? Nie wiem nawet jak oszacować ilośc
rejestrów:

Tak mniej więcej:

Każde wy/we to jedna makrokomórka, każdy bit do zapamiętania to też
jedna makrokomórka.

czyli 24*3 to jest 72 + inne i/o, ale możliwe że wyjdzie coś mniej.

Najlepiej ściągnij sobie środowisko, zrób sobie projekt, pobaw się w
symulatorze, i zobacz ile ostatecznie Ci ten projekt wciągnie zasobów i
wtedy dobierz odpowiednią kość.


--
Pozdrawiam
Dumak
(usuń wszystkie '1' z adresu e-mail)

Dumak
Guest

Fri Mar 14, 2008 10:18 pm   



__Maciek pisze:
Quote:
Fri, 14 Mar 2008 18:56:58 +0100 Sebastian Bialy <heby@poczta.onet.pl
napisał:

a) licznik z wejściem kwadraturowym ok. 24 bity
b) rejestr równoległy do zapamiętania tego licznika na sygnał zboczem -
dwie sztuki
c) częstotliwośc zliczania impulsów - śjakieś 100kHz maks najlepiej więcej.

Robiłem coś bardzo podobnego tylko że z trzema wejściami. Konwersję
sygnału kwadraturowego na CLK + UP/DOWN można zrobić za pomocą LS7084
- scalaczki do kupienia w Wobicie. Ma to ten plus że zawiera on
odpowiednie układy odkłócania sygnału - ważne jeżeli podłączasz
enkoder zamocowany na maszynie.


Jeżeli do tej logiki programowalnej ma być podłączony enkoder to tak
łatwo się nie da. Tarcza enkodera lubi drgać, wtedy na jednej fazie masz
przebieg, a na drugiej nic. Pasowało by zrobić mechanizm który radzi
sobie z takim przypadkiem.

(...)
Quote:

b) z darmowymi narzedziami do projektowania (nie zalezy mi na wypasach,
wystarczy command-line)

Xilinx ISE - dośc upierdliwe i nieprzyjemne środowisko ale da się
działać.

Xilinx ISE, nie jest takie straszne, owszem ma swoje "fimery", ale da
się w nim pracować.



--
Pozdrawiam
Dumak
(usuń wszystkie '1' z adresu e-mail)

Sebastian Bialy
Guest

Fri Mar 14, 2008 10:29 pm   



Marek Lewandowski wrote:
Quote:
cos ze 128-256 makrocel powinno obskoczyc.

Zapomniałem oczywiście o wyjściu ... przydał by się szeregowy rejestr z
taktowaniem jakimś zegarem. + 3x24 Smile czy więcej ... ?

Może rozwiązaniem jest mniejszy CPLD liczący powiedzmy w 8 bitach i
kontroler wolniej odczytujący pomiary i korygujący na żywo wewnątrzny
licznik 24 bit na podstawie odczytów z CPLD...

Dumak
Guest

Fri Mar 14, 2008 10:34 pm   



Sebastian Bialy pisze:
Quote:
Marek Lewandowski wrote:
cos ze 128-256 makrocel powinno obskoczyc.

Zapomniałem oczywiście o wyjściu ... przydał by się szeregowy rejestr z
taktowaniem jakimś zegarem. + 3x24 Smile czy więcej ... ?

Może rozwiązaniem jest mniejszy CPLD liczący powiedzmy w 8 bitach i
kontroler wolniej odczytujący pomiary i korygujący na żywo wewnątrzny
licznik 24 bit na podstawie odczytów z CPLD...

Dlaczego tego nie chcesz zrobić na procesorze? Przecież taki ARM7, czy
może nawet jakiś AVR sobie z tym poradzi bez większych problemów?

--
Pozdrawiam
Dumak
(usuń wszystkie '1' z adresu e-mail)

Marek Lewandowski
Guest

Fri Mar 14, 2008 10:41 pm   



On Mar 14, 6:56 pm, Sebastian Bialy <h...@poczta.onet.pl> wrote:

Quote:
a) licznik z wejściem kwadraturowym ok. 24 bity

24-32 makrocele

Quote:
b) rejestr równoległy do zapamiętania tego licznika na sygnał zboczem -
dwie sztuki

2x24 makrocele

Quote:
Przy takich prędkościach ciezko mi to zrobić na uC (na razie Atmega8@16
wyrabiała sie dla małych prędkości, ale niestety chce więcej). Szukam
jakiejś logiki programowalnej która spełni te powyższe założenia.

cos ze 128-256 makrocel powinno obskoczyc. Obejrzyj sobie Lattice'a,
maja bardzo fajne niskomocowe i tanie CPLD. Xilinx ma chore srodowisko
rozwojowe (webISP)... a Altera sie juz dawno nie bawilem :)

--
Marek
Quote:
Chce:

a) coś w dip w ostateczności smd (musze zrobić najpierw prototyp).
b) z darmowymi narzedziami do projektowania (nie zalezy mi na wypasach,
wystarczy command-line)
c) programowalne w jakimś sensownym języku hdl
d) z programatorem na paru drutach z LPT

Czy ktoś może mi coś polecić ? Nie wiem nawet jak oszacować ilośc
rejestrów (licznik chyba nie może być szeregowy bo mogą być błędy w
zatrzaskiwaniu stanu). Może ktoś pomoże i skieruje mnie na właściwy trop
za czym się rozglądać?


Pan_Tarej
Guest

Fri Mar 14, 2008 11:11 pm   



Quote:
Może rozwiązaniem jest mniejszy CPLD liczący powiedzmy w 8 bitach i
kontroler wolniej odczytujący pomiary i korygujący na żywo wewnątrzny
licznik 24 bit na podstawie odczytów z CPLD...

Dlaczego tego nie chcesz zrobić na procesorze? Przecież taki ARM7, czy
może nawet jakiś AVR sobie z tym poradzi bez większych problemów?


Tu się pospieram.
Zadanie jest jak najbardziej sprzętowe.
Do tego wymarzone dla PLD.
Owszem, można to zrobić na czymś z rodziny ARM i będzie to bajer.

Tylko brak elegancji...

Sebastian Bialy
Guest

Fri Mar 14, 2008 11:13 pm   



Dumak wrote:
Quote:
Dlaczego tego nie chcesz zrobić na procesorze? Przecież taki ARM7, czy
może nawet jakiś AVR sobie z tym poradzi bez większych problemów?

Mam to na AVR. Niestety podejrzewam że nie da się tego zrobić _TAK_
szybko jak chce. Muszę kręcić 24 bitowym licznikiem i jednocześnie
pilnować zboczy, przepisywać go do dwóch zapasów itd. W tym czasie lata
sobie komunikacja po RS485 a mi nie wolno zgubić jednego zbocza bo to
jest tragedia. Algorytm jest mocno zoptymalizowany (kręcenie licznikiem
8 bitów i korekta w osobnym "wątku" o większej elastyczności czasowej).
Mimo to szukam rozwiązania sprzętowego żeby zrobić to szybciej i może
się czegoś nauczyć przy okazji.

__Maciek
Guest

Fri Mar 14, 2008 11:57 pm   



Fri, 14 Mar 2008 22:18:03 +0100 Dumak <dumakpl1111@1111gmail.com>
napisał:

Quote:
Jeżeli do tej logiki programowalnej ma być podłączony enkoder to tak
łatwo się nie da. Tarcza enkodera lubi drgać, wtedy na jednej fazie masz
przebieg, a na drugiej nic. Pasowało by zrobić mechanizm który radzi
sobie z takim przypadkiem.

Właśnie m.in. żeby nie wpaść na czymś takim, zastosowałem do konwersji
gotowe scalaki - LS7084.

Ale każdy prawidłowo zrobiony układ do enkoderów powinien sobie radzić
z sytuacją którą opisałeś - w momencie takich drgań licznik będzie
przecież zliczał ("drgał") raz w górę raz w dół o jedną pozycję.
Przy danym stanie na jednej z faz zbocze narastające lub opadające na
drugiej powoduje odpowiednio zmniejszenie lub zwiększenie licznika.

Jeżeli mamy np. (potrzebny font o stałj szerokości):



A ___________________________________

_____ _____ _____
B _______ _____ _____ ___


n 36 37 36 37 36 37 36
(zawartość licznika - przykładowo)

BTW właśnie polutowałem pierwszy raz płytkę rozpływem - wyszło cycuś.
Jak dorwę jakiś aparat to Wam pokażę zdjęcie, okazało się tylko że
(zgodnie z prawem Murphy'ego) zawiódł element najbardziej pewny i
niewymagający sprawdzenia - zamiast ATmegi128L dałem zwykłą, a w
układzie zasilanie jest 3,3V. Kuurrr........ :->

Jedyne pocieszenie w tym że właściwie narazie mogę całość pogonić na
5V, bo jeszcze nie zamontowałem jedynego elementu który wymaga
koniecznie 3,3V - modułu Bluetooth - wolałem nie ryzykować
rozpływowego lutowania go w warunkach "domowych".

Piecyk "lutowniczy", jakby kto był ciekaw - Severin TO2023 Smile kupiony
na Alledrogo za 60zł.


--
__ __
/ \ Feel the energy of sound! / \
(| |) (| |)

Sebastian Bialy
Guest

Sat Mar 15, 2008 12:05 am   



__Maciek wrote:
Quote:
BTW właśnie polutowałem pierwszy raz płytkę rozpływem - wyszło cycuś.

Opisz coś więcej o procesie, jakieś sprawozdanie Wink Z chęcią bym się
pobawił.

Marek Lewandowski
Guest

Sat Mar 15, 2008 5:41 am   



On Mar 14, 10:29 pm, Sebastian Bialy <h...@poczta.onet.pl> wrote:

Quote:
Zapomniałem oczywiście o wyjściu ... przydał by się szeregowy rejestr z
taktowaniem jakimś zegarem. + 3x24 Smile czy więcej ... ?

Jezeli te 2 rejestry pamietajace musza swoje wartosci wypluc tylko
raz, to mozesz z nich zrobic rejestry szer-row i wtedy dokladasz tylko
licznik 5 bit (5 makrocel) + pare makrocel na opierunek. Jesli one
maja byc odczytywalne w kazdym momencie, to teoretycznie 24b + 5b +
pare b na okolice, ale moze Ci sie zrobic powoli gesto w matrycy
polaczeniowej. Sprawdz - nie potrzebujesz ukladu fizycznie, zeby sie
dowiedziec, czy sie w niego zmiescisz.

Quote:
Może rozwiązaniem jest mniejszy CPLD liczący powiedzmy w 8 bitach i
kontroler wolniej odczytujący pomiary i korygujący na żywo wewnątrzny
licznik 24 bit na podstawie odczytów z CPLD...

Tez mozna, ale po co wtedy CPLD... To juz lepiej dedykowany licznik do
enkoderow + uC do komunikacji.

--
Marek Lewandowski

Marek Lewandowski
Guest

Sat Mar 15, 2008 5:41 am   



On Mar 14, 10:18 pm, Dumak <dumakpl1...@1111gmail.com> wrote:

Quote:
Jeżeli do tej logiki programowalnej ma być podłączony enkoder to tak
łatwo się nie da. Tarcza enkodera lubi drgać, wtedy na jednej fazie masz
  przebieg, a na drugiej nic. Pasowało by zrobić mechanizm który radzi
sobie z takim przypadkiem.

a w czym problem? Maksymalna f na enkoderze jest DANA w jego
parametrach, jesli enkoder drga szybciej, niz jego parametry
pozwalaja, to sie nie nadaje do zadania. c.o.d.
--
Marek Lewandowski

J.F.
Guest

Sat Mar 15, 2008 11:41 am   



On Fri, 14 Mar 2008 21:34:33 -0700 (PDT), Marek Lewandowski wrote:
Quote:
On Mar 14, 10:29 pm, Sebastian Bialy <h...@poczta.onet.pl> wrote:
Zapomniałem oczywiście o wyjściu ... przydał by się szeregowy rejestr z
taktowaniem jakimś zegarem. + 3x24 Smile czy więcej ... ?

Jezeli te 2 rejestry pamietajace musza swoje wartosci wypluc tylko
raz, to mozesz z nich zrobic rejestry szer-row i wtedy dokladasz tylko
licznik 5 bit (5 makrocel) + pare makrocel na opierunek.

Zazwyczaj najlepiej jak wypluwaniem steruje komputer, wiec licznik
odpada.

A jak rejestr ma pozostac nienaruszony - to szeregowe wypluwanie mozna
zrobic licznikiem i multiplekserem. MX tu bedzie musial byc
wielostopniowy, wiec zajmie kilka makrocel.

J.

J.F.
Guest

Sat Mar 15, 2008 12:33 pm   



On Fri, 14 Mar 2008 21:36:17 -0700 (PDT), Marek Lewandowski wrote:
Quote:
On Mar 14, 10:18 pm, Dumak <dumakpl1...@1111gmail.com> wrote:
Jeżeli do tej logiki programowalnej ma być podłączony enkoder to tak
łatwo się nie da. Tarcza enkodera lubi drgać, wtedy na jednej fazie masz
  przebieg, a na drugiej nic. Pasowało by zrobić mechanizm który radzi
sobie z takim przypadkiem.

a w czym problem? Maksymalna f na enkoderze jest DANA w jego
parametrach, jesli enkoder drga szybciej, niz jego parametry
pozwalaja, to sie nie nadaje do zadania. c.o.d.

Eee - jesli to jest drganie na jednym bicie to w czym problem ?

Scalak widzi powiedzmy 0, po chwili 1, a ze w miedzyczasie
byly cztery inne zmiany - kogo to interesuje. Wiekszej zmiany pozycji
nie bylo.

J.

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Tanio i skutecznie: logika programowalna do licznika z 24-bitowym wejściem kwadraturowym

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map