Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.53 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.std_logic_unsigned.all;
  4.  
  5. entity cu is
  6.     port (
  7.         iCLK        :  in std_logic;
  8.         iRST        :  in std_logic;
  9.         iZERO       :   in std_logic;
  10.         iSIGN       :  in std_logic;
  11.         iCARRY  :   in std_logic;
  12.         oREG_WE : out std_logic_vector(7 downto 0);
  13.         oMUXA_SEL: out std_logic_vector(3 downto 0);
  14.         oMUXB_SEL: out std_logic_vector(3 downto 0);
  15.         oALU_SEL    : out std_logic_vector(3 downto 0)
  16.     );
  17. end entity;
  18.  
  19. architecture Behavioral of cu is
  20.  
  21.     type tSTATE is (IDLE, S1, S2, S3, NOP);
  22.     signal sSTATE : tSTATE;
  23.     signal sNEXT  : tSTATE;
  24.    
  25.     signal sREG_WE      : std_logic_vector(7 downto 0);
  26.     signal sMUXA_SEL    : std_logic_vector(3 downto 0);
  27.     signal sMUXB_SEL    : std_logic_vector(3 downto 0);
  28.     signal sALU_SEL : std_logic_vector(3 downto 0);
  29.    
  30.    
  31. begin
  32.  
  33.     -- Reg
  34.     process(iCLK, iRST)begin
  35.         if(iRST='1')then
  36.             sSTATE <= IDLE;
  37.         elsif(iCLK'event and iCLK='1')then
  38.                
  39.             sSTATE <= sNEXT;
  40.            
  41.         end if;
  42.     end process;
  43.    
  44.     -- Funkcija prelaza
  45.     process(sSTATE)begin
  46.         case(sSTATE)is
  47.                 when IDLE   => sNEXT <= S1;
  48.                 when S1     => sNEXT <= S2;
  49.                 when S2         => sNEXT <= S3;
  50.                 when others => sNEXT <= NOP;
  51.             end case;
  52.     end process;
  53.    
  54.     -- Funckija izlaza
  55.     process(sSTATE)begin
  56.         case(sSTATE)is
  57.             when IDLE =>   
  58.                 sREG_WE         <= (others => '0');     --ovo su dozvozle za upis u registre
  59.                 sMUXA_SEL   <= (others => '0');     --nije nam vazno sta ce uci u multiplekser
  60.                 sMUXB_SEL   <= (others => '0');     --nije nam vazno al ipak iz registra R0 ce uci podatak
  61.                 sALU_SEL    <= (others => '0');    
  62.            
  63.             when S1      => -- R1<=R0+1
  64.                 sREG_WE         <= "00000010";
  65.                 sMUXA_SEL   <= "0000";              --to je R0 registar
  66.                 sMUXB_SEL   <= "0000";              --ovaj deo ni ne koristimo pa nam ni ne treba moglo je i ---- sve jedno
  67.                 sALU_SEL    <= "0100";              -- A+1
  68.                
  69.             when S2      => -- R2<=R0+R1
  70.                 sREG_WE         <= "00000100";      --tu upisujemo rez to je R2
  71.                 sMUXA_SEL   <= "0000";              --selektujemo R0
  72.                 sMUXB_SEL   <= "0001";              --selektujemo R1
  73.                 sALU_SEL    <= "0001";              -- A + B
  74.                
  75.             when S3      => -- R3<=R1+R2
  76.                 sREG_WE         <= "00001000";          --selektovali izlaz u R3
  77.                 sMUXA_SEL   <= "0001";              --Sel ulaz R1
  78.                 sMUXB_SEL   <= "0010";              --sel ulaz iz R2
  79.                 sALU_SEL    <= "0001";
  80.            
  81.             when others =>
  82.                 sREG_WE         <= (others => '0');    
  83.                 sMUXA_SEL   <= (others => '0');    
  84.                 sMUXB_SEL   <= (others => '0');    
  85.                 sALU_SEL    <= (others => '0');    
  86.        
  87.         end case;
  88.            
  89.     end process;
  90.    
  91.     oREG_WE         <= sREG_WE;
  92.     oMUXA_SEL   <= sMUXA_SEL;  
  93.     oMUXB_SEL   <= sMUXB_SEL;  
  94.     oALU_SEL        <= sALU_SEL;   
  95.    
  96.    
  97. end architecture;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement