Hirdetés

2024. május 5., vasárnap

Gyorskeresés

Hozzászólások

(#29) CPT.Pirk


CPT.Pirk
Jómunkásember

Jár még erre valaki?

Van egy kis kérdésem a vhdl-el kapcsolatban. Bináris -> BCD átalakítás próbálok csinálni.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;

Bejön nekem egy std_logic_vectorban 16 bit bit, ezt beolvasom egy 20 bites vektorba úgy, hogy 4 darab nulla után jön a beolvasott érték, majd pedig eltolom balra 3-al az egészet. Ez eddig sima ügy.

..
INPUT: in std_logic_vector(15 downto 0));
..
signal bcd_0 : std_logic_vector( 0 to 19);
..
bcd_0 <= to_stdlogicvector(to_bitvector("0000" & INPUT) sll 3);

Ez után szét szeretném szedni 5 darab 4 bites vektorra, amiket 5 bites vektorokba helyezek el egy darab 0-t követően, ez is sima ügy.

bcd_1 <= "0" & bcd_0(16 to 19);
bcd_2 <= "0" & bcd_0(12 to 15);
bcd_3 <= "0" & bcd_0(8 to 11);
bcd_4 <= "0" & bcd_0(4 to 7);
bcd_5 <= "0" & bcd_0(0 to 3);

Viszont itt vagyok megakadva, mert itt kellene eldöntenem, hogy nagyobb-e 5-nél az 5 bites bináris érték, ha igen, akkor hozzá kell adni 3-at binárisan, majd pedig ezután ha a legelső bit 1-lesz, akkor a következő 5 bites csoporthoz kell hozzáadni 1-et, ez az átvitel. Ez után már csak vissza kellene írnom az értékeket, majd eltolni egyben az egész 20 bites vektort és kész is lenne.
Itt van a leírtaknál egyszerűbben szemléltetve az, amit meg szeretnék csinálni: [link]

Ha integert csinálok a vektorokból, akkor a 00101-ből 101 lesz, ami nem jó nekem.

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

Copyright © 2000-2024 PROHARDVER Informatikai Kft.