eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaVHDL - konwersja bin2bcd › Re: VHDL - konwersja bin2bcd
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!news2.arglkargh.de!news.mixmin.net!aioe.org!peer01.ams4!p
    eer.am4.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-
    exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTE
    D!not-for-mail
    Subject: Re: VHDL - konwersja bin2bcd
    Newsgroups: pl.misc.elektronika
    References: <5fcaa34b$0$523$65785112@news.neostrada.pl>
    From: Grzegorz Kurczyk <g...@c...usun.slupsk.pl>
    Date: Sun, 6 Dec 2020 00:42:31 +0100
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
    Thunderbird/68.10.0
    MIME-Version: 1.0
    In-Reply-To: <5fcaa34b$0$523$65785112@news.neostrada.pl>
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Language: pl-PL
    Content-Transfer-Encoding: 8bit
    Lines: 52
    Message-ID: <5fcc1ae7$0$559$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 46.170.136.234
    X-Trace: 1607211751 unt-rea-a-02.news.neostrada.pl 559 46.170.136.234:58532
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Bytes: 3397
    X-Received-Body-CRC: 3856645782
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:759861
    [ ukryj nagłówki ]

    W dniu 04.12.2020 o 21:59, Atlantis pisze:
    > W ramach poznawania podstaw VHDL-a na CPLD pracuję obecnie nad pewnym
    > projektem. O ile bez większego problemu udało mi się napisać większość
    > potrzebnych komponentów (dzielnik częstotliwości, licznik binarny,
    > sterownik wyświetlacza siedmiosegmentowego).
    > Niestety - wygląda na to, że utknąłem na zagadnieniu konwersji liczby
    > zakodowanej binarnie na kod BCD. Na wejściu komponentu mam siedmiobitowy
    > STD_LOGIC_VECTOR, przez ktory przekazuję wartość mieszczącą się między 0
    > i 99. Na wyjściu znajduje się ośmiobitowy STD_LOGIC_VECTOR. Jego starszy
    > półbajt ma mieścić liczbę dziesiątek, młodszy liczbę jedności.
    >
    > Wydawało mi się, że mogę to zrobić prosto, tak samo jak na
    > mikrokontrolerach - dziesiątki uzyskując za pomocą dzielenia przez 10, a
    > jednostki za sprawą operacji modulo 10.
    >
    > 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.
    Głównie "rzeźbię" w Verilogu, którego składnia bardzo przypomina język
    programowania C. Potrzebowałem trochę czasu aby przekonać zwoje mózgowe,
    że to co widzę na ekranie, to nie kolejno wykonywane linie programu
    tylko zbieranina połączonych ze sobą bramek i przerzutników.

    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.

    Mnożenie i dzielenie przez stałą będącą wielokrotnością potęgi dwójki
    nie wymaga praktycznie żadnych zasobów sprzętowych. To tylko kabelki :-)

    Ale możesz wykorzystać rozdzielność dzielenia względem odejmowania.
    Poszukaj algorytmów dzielenia na procesory typu Z80, 6502 itp.



    --
    Pozdrawiam
    Grzegorz

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: