Ú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)

Új hozzászólás Aktív témák