Advertisement
iuliaa

Untitled

Dec 20th, 2021
845
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ENTITY uc IS
  2.     GENERIC (delay: TIME := 10 ns);
  3.     PORT(clock, reset: IN BIT;
  4.         start: IN BIT;
  5.         q1,q0,r,cnt: IN BIT;
  6.         --stop c7 c6 c5 c4 c3 c2 c1 c0
  7.         controls: OUT BIT_VECTOR(7 downto 0));
  8. END ENTITY;
  9. ARCHITECTURE funct OF uc IS
  10. TYPE stari IS (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10);
  11. SIGNAL afisare_stare: stari;
  12.  
  13. BEGIN
  14.  
  15. PROCESS (clock)
  16. VARIABLE stare: stari:=s0;
  17. VARIABLE concat: BIT_VECTOR(2 downto 0);
  18. BEGIN
  19.     IF clock='1' AND clock'EVENT THEN
  20.         CASE stare IS
  21.             WHEN s0 =>
  22.                 controls<="00000000";
  23.                 if start = '1' then
  24.                     stare:=s1;
  25.                 else stare:=s0;
  26.                 end if;
  27.             WHEN s1 =>
  28.                 controls<="00000001";
  29.                 stare:=s2;
  30.             WHEN s2 =>
  31.                 controls<="00000010";
  32.                 stare:=s3;
  33.             WHEN s3 =>
  34.                 controls<="00000000";
  35.                 concat(0):=r;
  36.                 concat(1):=q0;
  37.                 concat(2):=q1;
  38.                 --test conditions
  39.                 if concat = "001" or concat = "010" then
  40.                     stare:=s4;
  41.                 elsif concat = "101" or concat = "110" then
  42.                     stare:=s5;
  43.                 else
  44.                     stare:=s6;
  45.                 end if;
  46.             WHEN s4 =>
  47.                 controls<="00000100";
  48.                 stare:=s6;
  49.             WHEN s5 =>
  50.                 controls<="00001100";
  51.                 stare:=s6;
  52.             WHEN s6 =>
  53.                 controls<="00010000";
  54.                 stare:=s7;
  55.             WHEN s7 =>
  56.                 if cnt = '1' then
  57.                     stare:=s8;
  58.                 else
  59.                     stare:=s3;
  60.                 end if;
  61.             WHEN s8 =>
  62.                 controls<="00100000";
  63.                 stare:=s9;
  64.             WHEN s9 =>
  65.                 controls<="01000000";
  66.                 stare:=s10;
  67.             WHEN s10 =>
  68.                 controls<="10000000";
  69.                 --return to start
  70.                 stare:=s0;
  71.         END CASE;
  72.      END IF;
  73. END PROCESS;
  74. END ARCHITECTURE;
Advertisement
RAW Paste Data Copied
Advertisement