Advertisement
Guest User

Untitled

a guest
May 27th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3.  
  4. entity fsm1 is
  5.  
  6. port
  7. (
  8. -- Input ports
  9. clk : in std_logic;
  10. reset : in std_logic ;
  11.  
  12.  
  13. -- Output ports
  14. s_out : out std_logic
  15.  
  16. );
  17. end fsm1;
  18.  
  19. -- najlakse da jedno stanje ima 1 jedinicu , 1 flip flop je on 0001 , 0010,0100,1000 lakse za kodovanje
  20.  
  21. architecture fsm1_bh of fsm1 is
  22. type state_type is (s0,s1,s2,s3,s4,s5,s6,s7);
  23. signal state_reg,next_state:state_type; --state_reg je trenutno
  24.  
  25.  
  26. begin
  27.  
  28. --sekvencijalni proces promene trenutnog stanja
  29. state_transition: process (clk,reset) is
  30. begin
  31.  
  32. if(reset='1')then --asinhroni reset
  33.  
  34. state_reg<=s0;
  35.  
  36. elsif (clk'event and clk='1') then -- ili rising_edge(clk)
  37. state_reg<=next_state;
  38. end if;
  39.  
  40. end process state_transition;
  41.  
  42.  
  43. --kombinacioni ulazni proces, ulazi su samo clk i reset pa ovde nema dodatnog komb ulaza vec samo trenutno stanje
  44. next_state_logic: process(state_reg) is
  45. begin
  46. case (state_reg)is
  47. when s0=>
  48. next_state<=s1;
  49. when s1=>
  50. next_state<=s2;
  51. when s2=>
  52. next_state<=s3;
  53. when s3=>
  54. next_state<=s4;
  55. when s4=>
  56. next_state<=s5;
  57. when s5=>
  58. next_state<=s6;
  59. when s6=>
  60. next_state<=s7;
  61. when s7=>
  62. next_state<=s0;
  63. end case;
  64.  
  65.  
  66. end process next_state_logic;
  67.  
  68. -- izlazni komb proces
  69.  
  70. output_logic: process(state_reg) is
  71. begin
  72. s_out<='0';
  73. case (state_reg)is
  74. when s1=>
  75. s_out<='1';
  76. when s3=>
  77. s_out<='1';
  78. when s4=>
  79. s_out<='1';
  80. when s5=>
  81. s_out<='1';
  82. when others=>
  83.  
  84. end case;
  85.  
  86.  
  87. end process output_logic;
  88.  
  89.  
  90. end fsm1_bh;
  91.  
  92.  
  93. test fajl:
  94.  
  95. LIBRARY ieee;
  96. USE ieee.std_logic_1164.all;
  97.  
  98. ENTITY fsm1_vhd_tst IS
  99. END fsm1_vhd_tst;
  100. ARCHITECTURE fsm1_arch OF fsm1_vhd_tst IS
  101. -- constants
  102. constant clk_period : time := 20 ns;
  103. -- signals
  104. SIGNAL clk : STD_LOGIC:='0';
  105. SIGNAL reset : STD_LOGIC:='1';
  106. SIGNAL s_out : STD_LOGIC;
  107. COMPONENT fsm1
  108. PORT (
  109. clk : IN STD_LOGIC;
  110. reset : IN STD_LOGIC;
  111. s_out : OUT STD_LOGIC
  112. );
  113. END COMPONENT;
  114.  
  115. BEGIN
  116. i1 : fsm1
  117. PORT MAP (
  118. -- list connections between master ports and signals
  119. clk => clk,
  120. reset => reset,
  121. s_out => s_out
  122. );
  123.  
  124.  
  125. clk_gen : PROCESS
  126.  
  127. BEGIN
  128. wait for clk_period/2;
  129. clk<='1';
  130. wait for clk_period/2;
  131. clk<='0';
  132.  
  133.  
  134.  
  135. -- wait znaci da se proces zavrsava i da nece opet da se izvrsi ali ovde treba da bude kontinualan pa nema wait
  136. END PROCESS clk_gen;
  137.  
  138.  
  139.  
  140.  
  141. always : PROCESS
  142.  
  143. BEGIN
  144. wait for clk_period*3;
  145. reset<='0';
  146. wait for clk_period*20;
  147. reset<='1';
  148. WAIT;
  149. END PROCESS always;
  150.  
  151.  
  152.  
  153.  
  154. END fsm1_arch;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement