Új hozzászólás Aktív témák
-
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)