eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › VHDL - konwersja bin2bcd
Ilość wypowiedzi w tym wątku: 27

  • 11. Data: 2020-12-07 16:43:23
    Temat: Re: VHDL - konwersja bin2bcd
    Od: Atlantis <m...@w...pl>

    On 07.12.2020 10:04, Grzegorz Kurczyk wrote:

    > P.S. A może zamiast licznika binarnego zakoduj licznik BCD.
    > Coś na wzór UCY7490 :-)

    Jest szansa, że taki design zsyntetyzuje się w wydajny sposób?
    Potrzebuję kilku liczników, które będą liczyły do określonej wartości, a
    po jej przekroczeniu zresetują się i wygenerują sygnał przepełnienia.

    Na razie używam do tego liczników binarnych, których rozmiar ustalam za
    pomocą parametru generic dla konkretnej instancji. Licznik resetuje się
    po osiągnięciu konkretnej wartości. Wartość z wyjścia licznika
    przepuszczam przez konwerter bin2bcd i wyświetlam na wyświetlaczu 7 seg.

    Wzorując się na UCY7490 musiałbym dodać logikę, która obserwowałaby
    wyjścia i resetowała licznik po zaobserwowaniu konkretnej wartości BCD,
    składającej się na dwucyfrową liczbę dziesiętną.


  • 12. Data: 2020-12-07 18:00:25
    Temat: Re: VHDL - konwersja bin2bcd
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Grzegorz Kurczyk" napisał w wiadomości grup
    dyskusyjnych:5fcc1ae7$0$559$6...@n...neostrada.
    pl...
    W dniu 04.12.2020 o 21:59, Atlantis pisze:
    >> Napisałem więc coś następującego:
    >> bcdval(7 DOWNTO 4) <= binval/10;
    >> bcdval(7 DOWNTO 0) <= binval MOD 10;
    >
    >> Niestety, synteza kodu wywala się właśnie w tym miejscu, zwracając
    >> błąd:
    >> "Operator <DIVIDE> must have constnt operands or first operand must
    >> be power of 2".
    >
    >> Wygląda więc na to, że nie mogę w prosty sposób wykonać dzielenia
    >> dowolnej liczby przez inną dowolną liczbę.

    >VHDL (i Verilog) to nie języki programowania tylko języki opisu
    >sprzętu.
    >Musisz przestawić swój tok myslenia, co nie jest łatwe.

    Ale to nie oznacza, ze nie powinien umiec dzielenia zaprojektowac.

    >Wracając do Twojego problemu, to VHDL nie będzie próbował wykonać
    >dzielenia, tylko będzie próbował zsyntezować na zasobach CPLD układ
    >kombinacyjny realizujący zadaną funkcję dzielenia.
    >Dzielenie liczby przez stałą nie będącą wielokrotnością potęgi 2
    >będzie wymagać na tyle dużo zasobów, że przekracza to możliwości
    >typowego CPLD.

    No, ciekawe ... najprosciej byloby tabelke wpisac. Wygenerowac gdzies
    obok i tylko wpisac w zrodlo :)

    6 bitow wejsciowych, bo najmlodszy idzie bez zmian ... no tak, to moze
    byc w architekturze CPLD zabojcze.

    J.


  • 13. Data: 2020-12-07 18:11:47
    Temat: Re: VHDL - konwersja bin2bcd
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:5fce4d9b$0$499$6...@n...neostrada.
    pl...
    On 07.12.2020 10:04, Grzegorz Kurczyk wrote:
    >> P.S. A może zamiast licznika binarnego zakoduj licznik BCD.
    >> Coś na wzór UCY7490 :-)

    >Jest szansa, że taki design zsyntetyzuje się w wydajny sposób?

    Jak najbardziej - schemat 7490 nie jest najlepszy, ale 74192 nie jest
    skomplikowany.

    >Potrzebuję kilku liczników, które będą liczyły do określonej
    >wartości, a po jej przekroczeniu zresetują się i wygenerują sygnał
    >przepełnienia.

    >Na razie używam do tego liczników binarnych, których rozmiar ustalam
    >za pomocą parametru generic dla konkretnej instancji. Licznik
    >resetuje się po osiągnięciu konkretnej wartości. Wartość z wyjścia
    >licznika przepuszczam przez konwerter bin2bcd i wyświetlam na
    >wyświetlaczu 7 seg.

    >Wzorując się na UCY7490 musiałbym dodać logikę, która obserwowałaby
    >wyjścia i resetowała licznik po zaobserwowaniu konkretnej wartości
    >BCD, składającej się na dwucyfrową liczbę dziesiętną.

    Ale jakies nieokragle liczby, typu np 43 czy 56 ?
    Czy mozesz to podzielic na licznik do 10 i np do 6 na starszej cyfrze
    ?

    Takie liczenie w BCD do 43 ... no, ciekawe, schemat/wyrazenia sie
    komplikuja, przy pomocy pomocniczej bramki powinno pojsc w miare latwo
    ... tylko czy VHDL w CPLD sobie z tym poradzi ..

    J.



  • 14. Data: 2020-12-07 18:19:48
    Temat: Re: VHDL - konwersja bin2bcd
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Adam Górski" napisał w wiadomości grup
    dyskusyjnych:5fce1f78$0$510$6...@n...neostrada.
    pl...
    W dniu 04/12/2020 o 21:59, Atlantis pisze:
    >> Jak w takim razie powinien być zrealizowany taki konwerter?

    >https://www.digikey.com/eewiki/pages/viewpage.actio
    n?pageId=60030986

    Jesli dobrze rozumiem ... sam chcialem te metode zapronowac, ale ona
    jest "sekwencyjna".

    Wynik sie pojawi po kilku/nastu cyklach zegara, i trzeba ten zegar
    miec.

    Dla 2 cyfr dziesietnych ... moze da sie prosciej ukladem
    kombinacyjnym.

    J.




  • 15. Data: 2020-12-07 18:58:01
    Temat: Re: VHDL - konwersja bin2bcd
    Od: Atlantis <m...@w...pl>

    On 07.12.2020 18:11, J.F. wrote:

    > Ale jakies nieokragle liczby, typu np 43 czy 56 ?
    > Czy mozesz to podzielic na licznik do 10 i np do 6 na starszej cyfrze ?

    To ma być klasyczny zegar, który później chciałbym wzbogacić o funkcję
    synchronizacji z DCF77. Typowy projekt edukacyjny. ;)
    Dlatego też nie byłoby większego problemu ze zliczaniem sekund i minut -
    młodsza część zawsze liczy od 0 do 9, od 0 do 5.
    Bardziej problematyczny jest licznik. Zależy mi trynie 24 godzinnym,
    więc mamy do czynienia z kilkoma możliwościami:
    - Jeśli starsza cyfra wynosi 0 ub 1, młodsza liczy od 0 do 9.
    - Jeśli starsza cyfra wynosi 2, młodsza liczy od 0 do 3.

    Prościej mi było to zaimplementować w postaci licznika binarnego i
    tłumaczyć na BCD.

    BTW czy gdzieś w VHDL-u istnieje możliwość uzyskania czegoś na wzór
    kompilacji warunkowej z języków programowania? Mam na myśli coś takiego,
    że przekazuje przez generic określoną wartość i w zależności od niej
    tworzę (lub nie) pewne sygnały wewnątrz portu albo architektury.
    Pozwoliłoby mi to zawsze oszczędzić trochę zasobów, bo w chwili obecnej
    niektóre instancje posiadają wyprowadzone sygnały, które są zdefiniowane
    w komponencie, ale których te konkretne instancje nie potrzebują.


  • 16. Data: 2020-12-07 19:02:01
    Temat: Re: VHDL - konwersja bin2bcd
    Od: Atlantis <m...@w...pl>

    On 07.12.2020 02:48, Stachu Chebel wrote:

    > Nawet nie ma co porównywać. Przepuść sobie implementację tego co masz
    > zrobione na CPLD z ustawieniem na najprostszego Spartana-3 i popatrz na
    > raport wykorzystania zasobów. Nie ma najmniejszego problemu jeśli chodzi
    > o zaimplementowanie procesora w FPGA.

    Może w takim razie Xilinx produkował jakieś prostsze FPGA, które byłyby
    względnie kompatybilne pinowo ze swoimi starszymi układami CPLD?
    Konkretnie mam na myśli rodzinę CoolRunner w 100 pinowej wersji obudowy.
    Zdaję sobie sprawę z tego, że nie wszystko może pasować (bo chociażby
    pamięć trzeba podpiąć) ale gdyby piny zasilania, masy, Clk, Rst i JTAG
    były w tych samych miejscach, to znacznie prościej byłoby
    przeprojektować płytkę. :)


  • 17. Data: 2020-12-07 19:14:41
    Temat: Re: VHDL - konwersja bin2bcd
    Od: Grzegorz Kurczyk <g...@c...usun.slupsk.pl>

    W dniu 07.12.2020 o 18:58, Atlantis pisze:
    > On 07.12.2020 18:11, J.F. wrote:
    >
    >> Ale jakies nieokragle liczby, typu np 43 czy 56 ?
    >> Czy mozesz to podzielic na licznik do 10 i np do 6 na starszej cyfrze ?
    >
    > To ma być klasyczny zegar, który później chciałbym wzbogacić o funkcję
    > synchronizacji z DCF77. Typowy projekt edukacyjny. ;)
    > Dlatego też nie byłoby większego problemu ze zliczaniem sekund i minut -
    > młodsza część zawsze liczy od 0 do 9, od 0 do 5.
    > Bardziej problematyczny jest licznik. Zależy mi trynie 24 godzinnym,
    > więc mamy do czynienia z kilkoma możliwościami:
    > - Jeśli starsza cyfra wynosi 0 ub 1, młodsza liczy od 0 do 9.
    > - Jeśli starsza cyfra wynosi 2, młodsza liczy od 0 do 3.
    >
    > Prościej mi było to zaimplementować w postaci licznika binarnego i
    > tłumaczyć na BCD.


    Wręcz przeciwnie. Prościej zrobić asynchroniczne liczniki od 0 do 9 i od
    0 do 5 łącząc je w kaskadę. Licznik asynchroniczny 0..9 liczący w górę
    to cztery przerzutniki i jedna bramka AND
    Jaki to konkretnie CPLD? Xilinx?

    Coś mi się kojarzy, że w niektórych CPLD sygnały zegarowe wszystkich
    przerzutników są na stałe połaczone ze sobą co wyklucza licznik
    asynchroniczny. Z drugiej strony synchroniczny nie jest dużo bardziej
    skomplikowany




    > BTW czy gdzieś w VHDL-u istnieje możliwość uzyskania czegoś na wzór
    > kompilacji warunkowej z języków programowania? Mam na myśli coś takiego,
    > że przekazuje przez generic określoną wartość i w zależności od niej
    > tworzę (lub nie) pewne sygnały wewnątrz portu albo architektury.
    > Pozwoliłoby mi to zawsze oszczędzić trochę zasobów, bo w chwili obecnej
    > niektóre instancje posiadają wyprowadzone sygnały, które są zdefiniowane
    > w komponencie, ale których te konkretne instancje nie potrzebują.

    syntezer powinien automatycznie zredukować nieistniejące połaczenia
    redukując potrzebne zasoby


    --
    Pozdrawiam
    Grzegorz


  • 18. Data: 2020-12-07 19:47:19
    Temat: Re: VHDL - konwersja bin2bcd
    Od: Atlantis <m...@w...pl>

    On 07.12.2020 19:14, Grzegorz Kurczyk wrote:

    > Jaki to konkretnie CPLD? Xilinx?

    CoolRunner II, konkretnie XC2C128. Docelowo miał być XC2C256, ale pod
    ręką miałem tylko 128 w 100 pinowej wersji obudowy. W tej chwili nigdzie
    w polskich sklepach nie widzę wersji 256, a miejsce w układzie powoli
    się kończy. ;)


  • 19. Data: 2020-12-07 20:08:48
    Temat: Re: VHDL - konwersja bin2bcd
    Od: Grzegorz Kurczyk <g...@c...usun.slupsk.pl>

    W dniu 07.12.2020 o 19:47, Atlantis pisze:
    > On 07.12.2020 19:14, Grzegorz Kurczyk wrote:
    >
    >> Jaki to konkretnie CPLD? Xilinx?
    >
    > CoolRunner II, konkretnie XC2C128. Docelowo miał być XC2C256, ale pod
    > ręką miałem tylko 128 w 100 pinowej wersji obudowy. W tej chwili nigdzie
    > w polskich sklepach nie widzę wersji 256, a miejsce w układzie powoli
    > się kończy. ;)

    Jak oglądam budowę makroceli, to powinieneś bez problemu zbudować
    zarówno licznik synchroniczny jak i asynchroniczny.
    A co ciekawsze prawdopodobnie zajmie to tyle samo zasobów.
    Jeden bit licznika, to jedna makrocela.

    w Verilogu taki licznik synchroniczny to

    reg [3..0] licznik;
    always @(posedge clk)
    if(reset | (licznik = 9)) then
    licznik <= 0;
    else
    licznik <= licznik + 1;


    W przypadku zegara calkowicie nie widzę sensu robić licznika binarnego i
    konwertować do BCD. Łatwiej wszystko robić w BCD.

    --
    Pozdrawiam
    Grzegorz


  • 20. Data: 2020-12-07 20:21:27
    Temat: Re: VHDL - konwersja bin2bcd
    Od: Stachu Chebel <s...@g...com>

    poniedziałek, 7 grudnia 2020 o 19:02:03 UTC+1 Atlantis napisał(a):

    > Może w takim razie Xilinx produkował jakieś prostsze FPGA, które byłyby
    > względnie kompatybilne pinowo ze swoimi starszymi układami CPLD?
    > Konkretnie mam na myśli rodzinę CoolRunner w 100 pinowej wersji obudowy.
    > Zdaję sobie sprawę z tego, że nie wszystko może pasować (bo chociażby
    > pamięć trzeba podpiąć) ale gdyby piny zasilania, masy, Clk, Rst i JTAG
    > były w tych samych miejscach, to znacznie prościej byłoby
    > przeprojektować płytkę. :)

    FPGA i CPLD to dwie różne filozofie. Na żadną kompatybilność pinową nie ma
    co liczyć. Tylko przeprojektowanie PCB wchodzi w rachubę.
    A co do podpinania pamięci, to zależy ile jej potrzebujesz. Wszystkie obecnie
    produkowane FPGA mają na pokładzie pamięć BRAM, którą możesz konfigurować
    w dowolne bloki. Popatrz sobie w dataszity i oceń sam co się lepiej opłaca.
    Pamięć zewnętrzna lub wewnętrzna w FPGA. Wybór należy do Ciebie.

strony : 1 . [ 2 ] . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: