Mała i tania logika programowalna do pro

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ć?

Reply to
Sebastian Bialy
Loading thread data ...

Fri, 14 Mar 2008 18:56:58 +0100 Sebastian Bialy snipped-for-privacy@poczta.onet.pl>

napisał:

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.

CPLD w DIP to chyba tylko w muzeum techniki znajdziesz ;-) 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. :-) ) no i żeby wyprowadzić JTAGa.

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.

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ć.

Reply to
__Maciek

Sebastian Bialy pisze:

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.

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

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

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

"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.

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ść.

Reply to
Dumak

24-32 makrocele

2x24 makrocele

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 :)

Reply to
Marek Lewandowski

__Maciek pisze:

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.

(...)

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

Reply to
Dumak

Zapomniałem oczywiście o wyjściu ... przydał by się szeregowy rejestr z taktowaniem jakimś zegarem. + 3x24 :) 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...

Reply to
Sebastian Bialy

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?

Reply to
Dumak

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...

Reply to
Pan_Tarej

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.
Reply to
Sebastian Bialy

Fri, 14 Mar 2008 22:18:03 +0100 Dumak snipped-for-privacy@1111gmail.com napisał:

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 :-) kupiony na Alledrogo za 60zł.

Reply to
__Maciek

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

Reply to
Sebastian Bialy

A ja polecę jeszcze XC3032XL, XC3064XL ,XC30128XL itd. - to jest rodzina XPLA3 (oznaczana też CoolRunner ileśtam), też CPLD, niewiele droższe, mają mniej makrocel względem XC, co może być utrudnieniem, ale za to bardziej "elastyczną" logikę... kiedyś robiłem jakiś układ, to do XC9572 (72 makrocele) się nie mieścił, a do XC3064 (64 makrocele) wszedł :)... no i do tego XC30xx mają mały pobór prądu - w spoczynku ZERO :)... no ale to zależy od Ciebie :)...

Osobiście - polecam Ci taki styl zabawy:

1) wyiberz firmę - np. Xilinx :) 2) wybierz rodzinę CPLD - np XC95xx albo XC30xx 3) zacznij pisać - to jest zwykły licznik z rejestrami - łatwo to przesymulować!! :)... 4) jak coś, to wróc do 2 albo do 3

Dzięki temu jeszcze przed zakupem będziesz mógł się zorientować czego potrzebujesz!! :)... po prostu opiszesz ładnie swój układ i zobaczysz, do czego się mieści :)...

Aha - jedna uwaga!! W przypadku tych CPLD dużo zależy od przypisania pinów do określonoych sygnałów!! Więc albo zostawiasz to programowi, a potem męczysz się z PCB ;), albo przypisujesz na sztywno, a program męczy się tym sam ;D... I tu właśnie te XPLA3 są lepsze :)...

No nic, to tyle uwag, mam nadzieję, że się przydadzą :)...

Pozdrawiam Konop

Reply to
Konop

podziel zadania na dwa AVR... taniej niz CPLD nie bedzie, zachowasz pelna elastycznosc...

Reply to
PAndy

Jak ? Żeby zrobić licznik z takimi funkcjami to wyobrażam sobie że wezmę

3 sztuki: licznik główny i dwa liczniki z zatrzymywaniem. Nie zmienia to faktu że troche to upirdliwe podpinać wszystkie 3 do RS485 i do jednego enkodera. Elegancko jest mieć jeden atmega i na razie tak mam. jeśli nie wpadnę na pomysł z optymalizacją algorytmu to niestety będę musiał coś wymyśleć.

PS. A co z 74193 :) Nie nadał by się? Do tego rejestr 8 bit x2 do zatrzaskiwania. A atmega odczytuje sobie wszystkie równolegle i powiększa pojemność w software... Niestety o ile sobie przypominam był częsciowo szeregvowy więc miałbym kłopot z zatrzaskiwaniem wyniku.

Reply to
Sebastian Bialy

No to rozgladnij sie za XMega, mozna ja popedzac do 32MHz, architektura ta sama wiec nie bedzie problemu z przeniesieniem programu, a dodatkowe features moze ci go istotnie przyspiesza.

Reply to
T.M.F.

I koniec koncow powiedziabys - dajcie mi jakies PLD.

J.

Reply to
J.F.

Sat, 15 Mar 2008 00:05:15 +0100 Sebastian Bialy snipped-for-privacy@poczta.onet.pl>

napisał:

Hmmm, a co tu sprawozdawać? ;-) No dobra, naklepię jakiś w miarę szczegółowy opis w wolnej chwili.

Reply to
__Maciek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.