Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. library ieee;
  2.  
  3. use ieee.std_logic_1164.all;
  4.  
  5. entity shiftd is
  6. port (
  7. din : in std_logic; -- DATA IN
  8. en : in std_logic; -- CHIP ENABLE
  9. clk : in std_logic; -- CLOCK
  10. y : out std_logic_vector(7 downto 0); -- SHIFTER OUTPUT
  11. dirup : in std_logic); -- SHIFT DIRECTION
  12. end shiftd;
  13.  
  14. architecture shiftd_arch of shiftd is
  15.  
  16. --SIGNALS
  17. signal s_register : std_logic_vector (7 downto 0); --REGISTER CONTENTS
  18. begin
  19.  
  20. --PROCESS : SHIFT
  21. shift : process (clk)
  22. begin
  23. if rising_edge(clk) and en='1' then -- FULLY SYNCHRONOUS AND ENABLED
  24. if dirup='1' then
  25. for i in 7 downto 1 loop
  26. s_register(i) <= s_register(i-1); -- SHIFT ALL BITS UP 1
  27. end loop;
  28. s_register(0) <= din;
  29. elsif dirup='0' then
  30. for i in 0 to 6 loop
  31. s_register(i) <= s_register(i+1); -- SHIFT ALL BITS DOWN 1
  32. end loop;
  33. s_register(7) <= din; -- INSERT DATA BIT IN LSB
  34. else null;
  35. end if;
  36.  
  37. else null;
  38. end if;
  39. end process;
  40. y <= s_register; -- WRITE REGISTER CONTENTS TO OUTPUT
  41. end shiftd_arch;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement