Advertisement
Guest User

EDA ASSIGNMENT

a guest
Nov 26th, 2014
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.06 KB | None | 0 0
  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.ALL;
  3. ENTITY source is
  4. port(i, reset: IN bit;
  5.      o: OUT bit_vector( 1 downto 0);
  6.      clk: IN bit);
  7.  
  8.  
  9. END ENTITY source;
  10. ARCHITECTURE fsm of source IS
  11. TYPE state_type IS(a, b, c, d);
  12. SIGNAL current_state, next_state: state_type;
  13. BEGIN
  14. CS: PROCESS (clk, reset) IS
  15. BEGIN
  16. IF reset = '1' THEN current_state <= a;
  17. ELSIF  clk = '1' AND clk'event THEN  current_state <= next_state;
  18. END IF;
  19. END PROCESS CS;
  20. Operation: PROCESS (current_state, i)
  21. BEGIN
  22. CASE current_state IS
  23. WHEN a =>
  24. IF i='1' THEN
  25. o <= "11";
  26. next_state <= b;
  27. ELSE
  28. o <="00";
  29. next_state <= a;
  30. END IF;
  31. WHEN b =>
  32. IF i='1' THEN
  33. o <= "01";
  34. next_state <= d;
  35. ELSE
  36. o <="10";
  37. next_state <= c;
  38. END IF;
  39. WHEN c =>
  40. IF i='1' THEN
  41. o <= "00";
  42. next_state <= b;
  43. ELSE
  44. o <="11";
  45. next_state <= a;
  46. END IF;
  47. WHEN d =>
  48. IF i='1' THEN
  49. o <= "10";
  50. next_state <= d;
  51. ELSE
  52. o <="01";
  53. next_state <= c;
  54. END IF;
  55. END CASE;
  56. END PROCESS Operation;
  57. END ARCHITECTURE fsm;
  58. ENTITY testbench IS
  59. END ENTITY testbench;
  60. ARCHITECTURE arch OF testbench IS
  61.  
  62. COMPONENT source
  63. PORT(i, reset: IN bit;
  64.      o: OUT bit_vector( 1 downto 0);
  65.      clk: IN bit);
  66. END COMPONENT source;
  67. FOR DUT: source USE ENTITY work.source(fsm);
  68. SIGNAL reset: bit;
  69. SIGNAL i : bit;
  70. SIGNAL clk:  bit;
  71. SIGNAL o: bit_vector( 1 downto 0);
  72. BEGIN
  73. DUT: source port map(i, Reset, O, Clk);
  74. SG: PROCESS IS
  75. BEGIN
  76. Reset <= '1';
  77. clk <='0';
  78. Wait FOR 20 ns;
  79.  
  80. i<='1';
  81. Wait FOR 20 ns;
  82. clk<='1';
  83. Wait FOR 20 ns;
  84. assert o= "11";
  85. REPORT "Reset error"
  86. SEVERITY warning;
  87.  
  88. clk <= '0';
  89. i <='0';
  90. WAIT FOR 20 ns;
  91.  
  92. clk<= '1';
  93. assert o="10"
  94. REPORT "Reset error"
  95. SEVERITY warning;
  96.  
  97.  
  98.  
  99. clk<='0';
  100. i<='0';
  101. WAIT FOR 20 ns;
  102.  
  103. clk<='1';
  104. assert o = "11";
  105. REPORT "Reset error"
  106. SEVERITY warning;
  107.  
  108.  
  109. clk<='0';
  110. i<='1';
  111. WAIT FOR 20 ns;
  112.  
  113.  
  114. clk<='1';
  115. assert o = "11";
  116. REPORT "Reset error"
  117. SEVERITY warning;
  118.  
  119. clk<='0';
  120. i<='1';
  121. WAIT FOR 20 ns;
  122.  
  123. clk <='1';
  124. assert o= "00";
  125. REPORT "Reset error"
  126. SEVERITY warning;
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140. END PROCESS SG;
  141. END ARCHITECTURE arch;
  142. --Name: Bassem Tarek Ahmed Mohamed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement