Advertisement
Mihailo21

B

Dec 2nd, 2023
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.02 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.std_logic_unsigned.all;
  4.  
  5. entity zadatakB is
  6.     Port ( iCLK    : in  std_logic;
  7.            iRST    : in  std_logic;
  8.            iEN     : in  std_logic;
  9.               iDATA  : in std_logic_vector(7 downto 0);
  10.               iLOAD   : in std_logic;
  11.               oCODE  : out std_logic_vector(2 downto 0);
  12.               oCNTG   : out std_logic_vector(3 downto 0);
  13.               oCNTS   : out std_logic_vector(3 downto 0)
  14.              );
  15. end entity;
  16.  
  17. architecture Behavioral of zadatakB is
  18.  
  19.     signal sCOMP : std_logic_vector(7 downto 0);
  20.     signal sROR  : std_logic_vector(7 downto 0);
  21.     signal sENG  : std_logic;
  22.     signal sENS  : std_logic;
  23.     signal sCODE : std_logic_vector(2 downto 0);
  24.     signal sCNTG : std_logic_vector(3 downto 0);
  25.     signal sCNTS : std_logic_vector(3 downto 0);
  26.  
  27. begin
  28.    
  29.     --komplementer
  30.     sCOMP <= not(iDATA) + 1;
  31.    
  32.     --rotirajuci registar
  33.     process (iCLK) begin
  34.         if (rising_edge(iCLK)) then
  35.             if (iRST = '1') then
  36.                 sROR <= (others => '0');
  37.             else
  38.                 if (iLOAD = '1') then
  39.                     sROR <= sCOMP;
  40.                 elsif (iEN = '1') then
  41.                     sROR <= sROR(6 downto 0) & sROR(7);
  42.                 end if;
  43.             end if;
  44.         end if;
  45.     end process;
  46.    
  47.     --prioritetni koder
  48.     sCODE <= "111" when sROR(7) = '1' else
  49.                 "110" when sROR(6) = '1' else
  50.                 "101" when sROR(5) = '1' else
  51.                 "100" when sROR(4) = '1' else
  52.                 "011" when sROR(3) = '1' else
  53.                 "010" when sROR(2) = '1' else
  54.                 "001" when sROR(1) = '1' else
  55.                 "000";
  56.    
  57.     oCODE <= sCODE;
  58.    
  59.     --komparator
  60.     --pokusaj sa ifom
  61.     sENG <= '1' when sROR > 5 else '0';
  62.     sENS <= not(sENG);
  63.    
  64.     --brojac vecih
  65.     process (iCLK) begin
  66.         if (rising_edge(iCLK)) then
  67.             if (iRST = '1') then
  68.                 sCNTG <= (others => '0');
  69.             elsif (sENG = '1') then
  70.                 sCNTG <= sCNTG + 1;
  71.             end if;
  72.         end if;
  73.     end process;
  74.    
  75.     --brojac manjih
  76.     process (iCLK) begin
  77.         if (rising_edge(iCLK)) then
  78.             if (iRST = '1') then
  79.                 sCNTS <= (others => '0');
  80.             elsif (sENS = '1') then
  81.                 sCNTS <= sCNTS + 1;
  82.             end if;
  83.         end if;
  84.     end process;
  85.    
  86.     oCNTG <= sCNTG;
  87.     oCNTS <= sCNTS;
  88.  
  89. end Behavioral;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement