-
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
Następne wpisy z tego wątku
- 07.12.20 02:48 Stachu Chebel
- 07.12.20 10:04 Grzegorz Kurczyk
- 07.12.20 10:08 Grzegorz Kurczyk
- 07.12.20 13:26 Adam Górski
- 07.12.20 16:43 Atlantis
- 07.12.20 18:00 J.F.
- 07.12.20 18:11 J.F.
- 07.12.20 18:19 J.F.
- 07.12.20 18:58 Atlantis
- 07.12.20 19:02 Atlantis
- 07.12.20 19:14 Grzegorz Kurczyk
- 07.12.20 19:47 Atlantis
- 07.12.20 20:08 Grzegorz Kurczyk
- 07.12.20 20:21 Stachu Chebel
- 07.12.20 20:59 J.F.
Najnowsze wątki z tej grupy
- Odbiornik ADS-B i wzmacniacze
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
Najnowsze wątki
- 2025-07-27 Jest porozumienie w sprawie umowy handlowej UE-USA
- 2025-07-27 Dziwne... :)
- 2025-07-27 Czy to jeszcze dziala
- 2025-07-27 Fotele firmy RECARO Aircraft Seating ze Świebodzina dla nowych samolotów LOT
- 2025-07-27 Fotele firmy RECARO Aircraft Seating ze Świebodzina dla nowych samolotów LOT
- 2025-07-26 Elektrownia Siersza w kolejce do zaorania
- 2025-07-26 Odkryte w Polsce złoża ropy i gazu powodują nerwowość u Niemców
- 2025-07-26 Odbiornik ADS-B i wzmacniacze
- 2025-07-26 Next.Gazeta informuje, że od 2029 roku (lub 2030 roku) cyfrowe euro stanie się prawnym środkiem płatniczym w całej UE
- 2025-07-26 Warszawa => Head of Technology <=
- 2025-07-26 Warszawa => Strategic Account Manager <=
- 2025-07-26 Mołdawia. Demokratura zastępuje demokrację.
- 2025-07-26 Prawicowa influencerka Candace Owens zapowiada walkę do końca ,,dla całego świata" [z parą prezydencką Macron]
- 2025-07-26 Next.Gazeta informuje, że od 2029 roku (lub 2030 roku) cyfrowe euro stanie się prawnym środkiem płatniczym w całej UE
- 2025-07-26 Ukraińscy kibice [w trakcie meczu] wzywali do zabijania Serbów