50 likes | 140 Views
A léptetés műveletek (Shift Operators). Ãttekintés Példák. Ãttekintés. 6 különbözÅ‘ léptetési művelet van a VHDL-93 szabványban: sll Léptetés balra (shift left) (jobb oldali utolsó bit a ‘0’-t veszi fel) srl Léptetés jobbra (shift right) (bal oldali elsÅ‘ bit a ‘0’-t veszi fel)
E N D
A léptetés műveletek(Shift Operators) Áttekintés Példák
Áttekintés • 6 különböző léptetési művelet van a VHDL-93 szabványban: • sll Léptetés balra (shift left) (jobb oldali utolsó bit a ‘0’-t veszi fel) • srl Léptetés jobbra (shift right) (bal oldali első bit a ‘0’-t veszi fel) • rol Átforgatás balra (roll over left) • ror Átforgatás jobbra (roll over right) • sla Léptetés balra, megtartva a jobboldali végértéket (shift left, and keep value ‘right) • sra Léptetés jobbra, megtartva a baloldali végértéket (shift right, and keep value ‘left)
Példa Architecture behv of ex is begin a <= “01101”; q1 <= a sll 1; -- q1 = “11010” q2 <= a srl 3; -- q2 = “00001” q3 <= a rol 2; -- q3 = “10101” q4 <= a ror 1; -- q4 = “10110” q5 <= a sla 2; -- q5 = “10111” q6 <= a sra 1; -- q6 = “00110” end;
Léptetés művelet csomagbeli függvényekkel • Ha a szintézis eszköz nem támogatja a szabványbeli léptetés műveletet, akkor csomagban meghatározott függvénnyel lehet megvalósítani • Pl. az ieee.std_logic_unsigned csomagban a következő függvények találhatók: function shl (arg: std_logic_vector; count: std_logic_vector) return std_logic_vector; function shr (arg: std_logic_vector; count: std_logic_vector) return std_logic_vector; • Alkalmazási példa: q1 <= shl(data,”1”); -- Egyet léptet balra q2 <= shr(data,”101”); -- Ötöt léptet jobbra q3 <= shr(data, count); -- Count számút léptet jobbra
Léptetés művelet elkerülése • Készíthető VHDL kód léptetési művelet alkalmazása nélkül is, pl.: Architecture rtl of ex is; signal data: std_logic_vector(7 downto 0); begin process(clk, resetn) begin if resetn=‘0’ then q1<=(others=>‘1’); q2<=(others=>‘1’); elsif clk’event and clk=‘1’ then q1(6 downto 0)<=q1(7 downto 1); -- Egyet léptet jobbra q1(7)<=d_in; q2(7 downto 1)<=q2(6 downto 0); -- Egyet léptet balra q2(0)<=d_in; end if; end process; end;