Multiplekser przełączający grupę linii

Tradycyjną elektroniką cyfrową bawiłem się tylko przez chwilę. Robiłem jakieś prostsze projekty (a raczej ćwiczenia), a potem przerzuciłem się na mikrokontrolery. Teraz jednak chciałbym wrócić do tego - głównie przy okazji FPGA, ale również bawiąc się w fizyczne konstruowanie czegoś ze scalaków.

Preferuję zdobywanie umiejętności przez realizowanie konkretnego, użytecznego projektu. W chwili obecnej chodzi mi po głowie sklecenie sterownika do wyświetlaczy nixie, który załatwiałby multipleksowanie poszczególnych wiświetlaczy (z wygaszaniem przed zapaleniem kolejnej cyfry), a dane otrzymywał z MCU szeregowo.

Na wejściu znajdowałby się więc zespół rejestrów przesuwnych z zatrzaskiem. W rejestrach trzymane byłyby po dwa półbajty BCD, przekazywane sekwencyjnie na wejście 74141. Potrzebny mi tutaj będzie jakiś multiplekser.

I teraz pierwsze pytanie, jakie mi się nasuwa. Istnieje jakiś układ scalony będący zespołem multiplekserów zdolnych przełączać zespół czterech wejść pomiędzy (co najmniej sześcioma) zespołami wyjść? Czy też jedyną opcją będzie wyrzeźbienie sobie tego z pojedynczych multiplekserów?

Reply to
Atlantis
Loading thread data ...

W dniu 08.02.2018 o 08:39, Atlantis pisze:

Ile masz wyświetlaczy? Robiłem takie sterowanie dla ośmiu wyświetlaczy w swojej pracy dyplomowej z czasów nauki w technikum. W wersji finalnej udało mi się zdobyć (a w tamtych czasach nie było to łatwe) cztery dwu-segmentowe wyświetlacze LED :-) Bałem się na nie krzywo patrzeć, żeby ich nie uszkodzić ;-) W sumie zmienił się tylko dekoder i stopnie mocy do sterowania anodami. Dla ośmiu wyświetlaczy zrobiłem to na:

  1. Dekoder BCD/LED 7447 1szt. (dla NIXE był to 74141)
  2. Demultiplexer 7442 1szt. (wybieranie anod)
  3. Multiplexer 74151 4szt. (wybieranie danych dla 7447)
  4. Licznik 7493 1szt. (adresy dla 74151 i 7442)
  5. 4xLatch 7475 8szt. (pamięć danych wejściowych)

do tego generator taktujący, trochę oporników i tranzystorów. Całość powinieneś zmieścić w jednym CPLD XC9572

Reply to
Grzegorz Kurczyk

W dniu 08.02.2018 o 08:39, Atlantis pisze:

3 sztuki 74153 :-)
Reply to
Grzegorz Kurczyk

Użytkownik "Atlantis" napisał w wiadomości grup dyskusyjnych:5a7bfeab$0$597$ snipped-for-privacy@news.neostrada.pl...

Chcesz multipleksowac wyswietlacze i dac jeden 74141 ? To po co tak - MCU sie pieknie wyrobi z obsluga kolejnych cyfr, potrzebujesz tylko wyprowadzic dane

-do sterowania 74141 - 4 bity,

-do wybierania lamp/cyfr - od 3 do 6 bitow - jesli nie chcesz dekodera liczb. albo i 2 bity - jesli zrobisz uklad wybierajacy kolejne lampy, a wystarczy mu impuls przelaczajacy na nastepna i reset do synchronizacji

-moze z 1 bit do wygaszania.

spokojnie sie zmiesci 8 bitowym rejestrze przesuwnym, jesli MCU ma za malo wolnych portow.

Czy chcesz dac 6 sztuk 74141, po jednym na lampe ?

Sa rozne kombinacje, ale raczej mniejsze. Tylko musisz dokladniej sformulowac co chcesz. Jak sie domyslam - 4 linie wyjsciowe (BCD do 141), ktore trzeba w komplecie podlaczac do jednego z 6 kompletow linii wejsciowych 4-ro bitowych.

Takie duze to raczej niepopularne, wiec zostaje dac 4 multipleksery

1-bitowe 8-mio wejsciowe (74153 o ile mnie skleroza nie myli)

Ewentualnie uklad magistralowy, czy jak kto woli "OR na drucie" -

4-bitowe bufory z wyjsciami trojstanowymi lub OC, wyjscia polaczone razem i podlaczone do wejsc 141, sygnalami OE aktywujesz tylko jeden z buforow.

Ale ...

-glowy nie dam, czy Nixie dobrze zniosa multipleksowanie, moze po prostu dac 6 szt 74141 i miec spokoj,

-to jest fajny projekt edukacyjny do FPGA czy CPLD, mozna pocwiczyc. A jesli to ma byc zwykly zegar, to moze nawet MCU wyeliminowac.

J.

Reply to
J.F.

W dniu 2018-02-08 o 08:39, Atlantis pisze:

Skłoniłeś mnie do historycznej dygresji która prowadzi do opisania rozwiązania, które uważam, za ciekawe a jest bezpośrednio związane z Twoim pytaniem.

W 1978r po I roku studiów miałem bardzo ciekawą praktykę - na uruchamianiu w Radmorze - co kilka dni inne, ciekawe urządzenia do rozczajenia jak działa i jak szukać w nim błędów produkcyjnych. Radmor robił dla milicji wojska i marynarki - bardzo dużo się nauczyłem. Totalnym kontrastem do niej była praktyka po IV roku w ośrodku obliczeniowym - nasze zadanie (konserwatorów) polegało na tym aby raz na tydzień odkurzyć wszystkie kółeczka z perforowanego papieru do drukarki. Na szczęście jednym z konserwatorów był łebski facet, który z nudów trochę usprawniał Odrę. On mi podsunął ciekawe rozwiązanie częstościomierza, które potem (w 1984r) zrealizowałem wykorzystując wyświetlacz lampowy (wszystkie cyfry w jednej bańce) który skądś mi się udało dostać.

Klasyczny częstośiomierz:

- 8 liczników

- 8 4-bitowych zatrzasków

- 4 multipleksery 8 na 1

- 1 dekoder BCD -> 7 segment

- 1 licznik do 8 przemiatający cyfry wyświetlacza pomijając układ bramkowania i sterowania daje to 22 scalaki. Scalaki TTL brały typowo około 20mA co daje już 440mA potrzebnego prądu na 5V.

Zrealizowane przeze mnie rozwiązanie:

- 8 liczników

- 4 8-bitowe rejestry przesuwne (zapętlone - na miejscu zapętlenia pojawiają się kolejne cyfry do wyświetlenia)

- 1 dekoder BCD -> 7 segment

- 1 licznik do 8 przemiatający cyfry wyświetlacza razem 14 scalaków - 280mA.

Układ sterujący się nieco bardziej komplikuje - chyba o 1 scalak więcej niż przy klasycznym rozwiązaniu. Sztuka polega na tym aby w odpowiednim momencie wtrzasnąć wynik do rejestrów przesuwnych i to mi się właśnie nie udało. W moim układzie jak się przełączało zakres częstotliwości to było prawdopodobieństwo 7/8, że częstościomierz pokazuje dobry wynik i

1/8, że cyfry będą przesunięte o 1. Długo szukałem, ale zrozumiałem i udało mi się go poprawić jedynie przecinając ścieżki i inaczej łącząc już obecne na płytce scalaki.

Schemat mam (mam nadzieję, że mam, bo jednak kilkadziesiąt lat i kilka przeprowadzek minęło) w domu (ołówkiem na papierze podaniowym), ale jeśli interesuje Cię to rozwiązanie to zapewne da się znaleźć schematy w sieci.

Podsumowując. Nie widzę sensu wynoszenia fragmentu sterowania poza procesor, kiedy on się sam wyrobi z całym tym sterowaniem. Jak już się bawić to zrobić wszystko bez procesora. P.G.

Reply to
Piotr Gałka

W dniu 08.02.2018 o 11:13, Piotr Gałka pisze:

W dzisiejszych czasach samo zastosowanie wyświetlacza NIXE jest teoretycznie i praktycznie bez sensu.

Ale w tym przypadku sensem jest wiedza :-) a przedstawiony przykład jedną ze ścieżek jej zdobycia. Przy okazji pielęgnujemy sentyment do "szklanej bańki" i tu doskonale rozumiem Kolegę Atlantisa :-)

Reply to
Grzegorz Kurczyk

Am 08.02.2018 um 08:39 schrieb Atlantis:

Możesz rzeźbić pojedynczo, a możesz zamiast wszelakich rejestrów przesuwnych i wiaderka 74141 czy innych multiplexerów wziąć jeden HV507 firmy Supertex. To 64 bitowy rejestr przesuwny z wyjściami równoległymi i wyjściami z Umax 320V. Jako, że toto ma 64 wyjścia, ma w sumie 80 nóżek, trochę może upierdliwe, ale eleganckie rozwiązanie ;-)

Waldek

Reply to
Waldemar

W dniu 08.02.2018 o 10:48, J.F. pisze:

Nixie zniosą bez problemu. Gorzej będą miały urządzenia pracujące w pobliżu bo takie "raptowne" przełączanie napięcia rzędu 100V troszku sieje w eterze ;-)

i o ten efekt edukacyjny właśnie chodzi :-) żeby nie zaczynać po akademicku od sprzętowej implementacji transformaty Fouriera ;-) :-)

Reply to
Grzegorz Kurczyk

Am 08.02.2018 um 11:54 schrieb Grzegorz Kurczyk:

są procesory "motylki" do FFT ;-)

Waldek

Reply to
Waldemar

Wiem, że większość MCU spokojnie się wyrobi. Już tego próbowałem z AVR-ami. Ale już na przykład w przypadku takiego ESP8266 tak dobrze nie jest. Użytkownik ma do dyspozycji tylko jeden hardware'owy timer (timery programowe dostępne w SDK nie nadają się do multipleksowania wyświetlacza) a pinów jest za mało. Z poziomu funkcji obsługi przerwania od timera nie da się wykonać transmisji I2C (za mało czasu, zadziała watchdog) a ustawianie flagi i robienie transmisji w głównej pętli spowoduje za duży jutter. W gre wchodziłyby więc tylko jakieś szybkie rejestry przesuwne obsługiwane w przerwaniu. To ja już wolę sobie zbudować (czy to fizycznie, czy w CPLD/FPGA) jakiś hardware, który zajmie się sama obsługą wyświetlaczy. Wiem, że to trochę sztuka dla sztuki i równie dobrze mógłbym to zrobić na dodatkowym mikrokontrolerze, ale to ma być projekt edukacyjny. Programować MCU już jako-tako umiem, a z elektroniki cyfrowej chciałbym sobie zrobić powtórkę.

Nie. Pomysł jest taki, żeby mieć jeden 74141 i multipleksować poszczególne lampy. Na wejścia 74141 podawałbym przez ten multiplekser (zestaw multiplekserów) kolejne półbajty trzymane w rejestrach przesuwnych na wejściu. Osobny układ zapalałby kolejne lampy. Myślę też, że konieczne byłoby zastosowanie jakiegoś licznika i komparatora, który w pewnym momencie gasiłby lampę (coś w rodzaju PWM, celem uniknięcia efektu "duszków"). Jeszcze tego dokładnie nie rozrysowałem, mam tylko ogólny pomysł.

To był właśnie mój oryginalny pomysł. Liczyłem po prostu na to, że może istnieje coś takiego w jednym scalaku.

Już robiłem jeden zegar nixie z multipleksowanym wyświetlaczem. Działa w porządku. Trzeba tylko pamiętać o wygaszeniu na chwilę jednej lampy przed zapaleniem następnej - nixie potrzebują trochę czasu, żeby zgasnąć.

Właśnie zależy mi na synchronizacji z NTP. :)

Reply to
Atlantis

W dniu 2018-02-08 o 12:30, Atlantis pisze:

To sobie zrób multipleksowanie na drucie - potrzebujesz do tego rejestry z 3-stanowym wyjściem.

Pozdrawiam

DD

Reply to
Dariusz Dorochowicz

Nie wiem jakie tam ograniczenia, ale I2C nie jest sprzetowe ? IMO - wystarczyloby jeden bajt wyslac. A jak nie, to jest masa szybszych rejestrow.

No niestety - ekonomia przemawia za dodatkowym MCU ... ale mozna doliczyc zdobyte kwalifikacje :-)

8*4+4 = 40 nog, moze i jest, ale malo popularne.

Zdecydowanie zachecam do zrobienia tego w MCU/FPGA/CPLD, bo inaczej ... duzo scalakow, a zysku edukacyjnego zadnego.

Mozesz sie przymierzyc do CPLD czysto teoretycznie ... sie okaze, ze sie nie da zrobic, bo zasobow zabraknie, to tez sie czegos nauczysz :-)

Ewentualnie, ten tego ... podlaczyc ekran AMOLED i zaprogramowac kolor i wyglad nixie :-)

J.

Reply to
J.F.

W dniu 08.02.2018 o 08:39, Atlantis pisze:

Zrób to na FPGA. Kod na multiplekser do wyświetlaczy jest chyba w co drugim podręczniku do programowania FPGA.

Reply to
Mario

Użytkownik "Dariusz Dorochowicz" napisał w wiadomości grup dyskusyjnych:5a7c3875$0$577$ snipped-for-privacy@news.neostrada.pl... W dniu 2018-02-08 o 12:30, Atlantis pisze:

Mozna, ale jak znajdzie rejestry przesuwne ze sterowaniem OE na wyjsciach po 4 bity, to wyjdzie zgrabnie. Jak nie znajdzie i trzeba bedzie dodatkowe bufory ... to zdecydowanie jest projekt na CPLD/FPGA.

Oczywiscie ktos juz na to wpadl

formatting link

J.

Reply to
J.F.

ESP8266 nie ma sprzętowego I2C. Ten moduł jest dość ubogi, jeśli chodzi o peryferia. Lepiej to wygląda w nowej wersji - ESP32.

Jak duże projekty w takim razie można zmieścić w CPLD? Załóżmy, że mowa o czymś w rodzaju XC9572XLVQ64. Rozumiem, że te układy mogą się nie nadawać do odtworzenia Z80, SID-a z Commodore 64 albo zaprojektowania własnego MCU. Jednak tutaj mowa o (relatywnie prostym) sterowniku, który robiony na płytce mógłby się zmieścić w kilku-kilkunastu scalakach. Faktycznie CPLD mają aż tak skromne zasoby?

Reply to
Atlantis

W dniu 2018-02-08 o 13:06, J.F. pisze:

Ba. Można np dodać poczwórny muultiplekser - coś tam jest gotowego. To znacznie mniej niż multipleksowanie wszystkiego i proste do zrobienia.

Pozdrawiam

DD

Reply to
Dariusz Dorochowicz

To moze i lepiej - bedzie mozna uzyc szybsze uklady :-) Nie ma jakiegos portu szeregowego z zegarem ?

Oni tego juz dawno nie robia, i przetrwaly tylko jakies szczatkowe opisy

formatting link
Jest w ogole do tego jakis program, ktory jeszcze dziala ?

Jesli dobrze rozumiem, to potrzebujesz:

-24-bitowego rejestru przesuwajacego,

-24-bitowego rejestru buforowego,

-licznika multipleksujacego 6 cyfr ... 3 bity, a moze 6, jesli wygodniej bedzie zrobic pierscieniowo,

-multipleksera ... ktory tu zajmie 4 makrocele ... jak dobrze pojdzie.

-licznika do odliczania roznych faz, zeby np najpierw wygasic, potem zmienic, potem wyswietlic ... i dluzej wyswietlac niz sie zmienialo. Powiedzmy ze 4 bity licznika.

wychodzi mi 62 rejestry, a ten uklad ma 72 ... moze starczyc. Ale:

-ma je w 4 blokach po 18, same rejestry rozciagna sie na 4 bloki, trzeba bedzie dzielic ... moze sie da, moze zabraknie.

-starczy PT (produkt term) i polaczen do realizacji wszystkich funkcji, albo nie starczy.

-potrzebujesz 3 zegarow - jeden do danych z 8266, drugi przepisujacy miedzy rejestrami, trzeci do multipleksowania. Moze sie uda 2, jesli uzyjemy jeden z 8266 do obu funkcji. Trzy zegary w tej kosci sa, plus mozliwosc indywidualnych. Powinno starczyc.

Wiec na oko ... mniej wiecej wejdzie. Ale tylko na oko. I zajmie całą kosc. I stad rada - sprobowac zaprojektowac i zobaczyc czy wcisnie, czy powie ze za malo zasobow :-) Z80 to zdecydowanie na czyms innym :-)

W razie czego mozna pomyslec. Chodzi po glowie, zeby np zrezygnowac z tego rejestru przesuwajacego, zrobic licznik bitow wejsciowych, i w miare ich nadchodzenia zmieniac tylko jeden bit w rejestrze buforowym. 5 bitow zamiast 24 ... z ryzykiem, ze PT zabraknie :-)

J.

Reply to
J.F.

Ewentualnie myślę, czy wceśniej nie "potrenować" sobie na nieco prostszym przykładzie - zegarku Nixie (po prostu wykonałbym zmodyfikowaną wersję już istniejącego projektu). W zegarze poszczególne cyfry są prezentowane na zespołach czterech LED-ów. Zespoły również są multipleksowane. Założenie jest więc podobne (24 bitowy zespół rejestrów przesuwnych na wejściu, dalej cztery multipleksery (po jednym na każdy bit). Multiplekser byłby sterowany z licznika binarnego. Teraz zastanawiam się jeszcze jak zrealizować sterowanie zapalaniem zespołów kolejnych diod.

Czy istnieje może jakiś konwerter binarno-dekadowy, który na wejściu brałby wartość binarną z licznika, ustalając stan wysoki na wskazanym wyjściu? To pozwoliłoby mi także łatwo resetować licznik, bez potrzeby stosowania komparatora - po prostu linia 6 resetowałaby licznik.

Reply to
Atlantis

W dniu 09.02.2018 o 08:35, Atlantis pisze:

Jest:-) z tą różnicą, że wystawia na wybranym wyjściu stan niski (wyjście OC). Używasz już go do sterowania katod w Nixie ;-)

Reply to
Grzegorz Kurczyk

W dniu 09.02.2018 o 08:35, Atlantis pisze:

do ilu ma zliczać ten licznik? Bo czasem w roli komparatora wystarczy jedna bramka.

Reply to
Grzegorz Kurczyk

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.