Advertisement
alien1337

Untitled

Jan 20th, 2020
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.46 KB | None | 0 0
  1. architecture Behavioral of cu is
  2.  
  3.     type STATES is (S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,NOP);
  4.     signal sSTATE,sNEXT_STATE : STATES;
  5.  
  6. begin
  7.  
  8.     process(iCLK,iRST) begin
  9.         if(iRST='1') then
  10.             sSTATE <= S0;
  11.         elsif(rising_edge(iCLK)) then
  12.             sSTATE <= sNEXT_STATE;
  13.         end if;
  14.     end process;
  15.    
  16.     process(sSTATE,iZERO) begin
  17.         case(sSTATE) is
  18.             when S0 => sNEXT_STATE<=S1;
  19.             when S1 => sNEXT_STATE<=S2;
  20.             when S2 => sNEXT_STATE<=S3;
  21.             when S3 => sNEXT_STATE<=S4;
  22.             when S4 =>
  23.                 if(iZERO='1') then
  24.                     sNEXT_STATE<=NOP;
  25.                 else   
  26.                     sNEXT_STATE<=S5;
  27.                 end if;
  28.             when S5 => sNEXT_STATE<=S6;
  29.             when S6 =>
  30.                 if(iZERO='1') then
  31.                     sNEXT_STATE<=S9;
  32.                 else   
  33.                     sNEXT_STATE<=S7;
  34.                 end if;
  35.             when S7 => sNEXT_STATE<=S8;
  36.             when S8 => sNEXT_STATE<=S6;
  37.             when S9 => sNEXT_STATE<=S10;
  38.             when S10 => sNEXT_STATE<=S11;
  39.             when S11 => sNEXT_STATE<=S4;
  40.             when others => sNEXT_STATE<=NOP;
  41.         end case;
  42.     end process;
  43.  
  44.     process(sSTATE) begin
  45.    
  46.         case(sSTATE) is
  47.             when S0 =>
  48.                 oREG_WE<="00000001";
  49.                 oALU_SEL<="0010";
  50.                 oMUXA_SEL<="0001";
  51.                 oMUXB_SEL<="0001";
  52.             when S1 =>
  53.                 oREG_WE<="00000010";
  54.                 oALU_SEL<="0000";
  55.                 oMUXA_SEL<="1000";
  56.                 oMUXB_SEL<="----";
  57.             when S2 =>
  58.                 oREG_WE<="00000100";
  59.                 oALU_SEL<="0111";
  60.                 oMUXA_SEL<="0001";
  61.                 oMUXB_SEL<="----";
  62.             when S3 =>
  63.                 oREG_WE<="00001000";
  64.                 oALU_SEL<="0010";
  65.                 oMUXA_SEL<="0001";
  66.                 oMUXB_SEL<="0001";
  67.             when S4 =>
  68.                 oREG_WE<="00000000";
  69.                 oALU_SEL<="0000";
  70.                 oMUXA_SEL<="0010";
  71.                 oMUXB_SEL<="----";
  72.             when S5 =>
  73.                 oREG_WE<="00001000";
  74.                 oALU_SEL<="0010";
  75.                 oMUXA_SEL<="0001";
  76.                 oMUXB_SEL<="0001";
  77.             when S6 =>
  78.                 oREG_WE<="00000000";
  79.                 oALU_SEL<="0010";
  80.                 oMUXA_SEL<="0000";
  81.                 oMUXB_SEL<="0010";
  82.             when S7 =>
  83.                 oREG_WE<="00001000";
  84.                 oALU_SEL<="0001";
  85.                 oMUXA_SEL<="0011";
  86.                 oMUXB_SEL<="0001";
  87.             when S8 =>
  88.                 oREG_WE<="00000001";
  89.                 oALU_SEL<="0110";
  90.                 oMUXA_SEL<="0000";
  91.                 oMUXB_SEL<="----";
  92.             when S9 =>
  93.                 oREG_WE<="00000001";
  94.                 oALU_SEL<="0010";
  95.                 oMUXA_SEL<="0001";
  96.                 oMUXB_SEL<="0001";
  97.             when S10 =>
  98.                 oREG_WE<="00000100";
  99.                 oALU_SEL<="0111";
  100.                 oMUXA_SEL<="0010";
  101.                 oMUXB_SEL<="----";
  102.             when S11 =>
  103.                 oREG_WE<="00000010";
  104.                 oALU_SEL<="0000";
  105.                 oMUXA_SEL<="0011";
  106.                 oMUXB_SEL<="----";
  107.             when others=>
  108.                 oREG_WE<="--------";
  109.                 oALU_SEL<="----";
  110.                 oMUXA_SEL<="----";
  111.                 oMUXB_SEL<="----";
  112.    
  113.         end case;
  114.     end process;
  115.    
  116. end architecture;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement