Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.numericstd.all;
  4.  
  5. entity fib is
  6. port(
  7. clk, reset : in std_logic;
  8. start : in std_logic;
  9. i: in std_logic_vector(4 downto 0);
  10. ready, done_tick: out std_logic;
  11. f: out std_logic_vector (19 downto 0));
  12. end fib;
  13.  
  14. "architecture arch of fib is
  15. type state_type is (idle, op, done);
  16. signal state_reg, state_next: state_type;
  17. signal tO_reg, ttnext: unsigned(19 downto 0);
  18. signal ti_reg, ti_next: unsigned(19 downto 0);
  19. signal n_reg, n_next: unsigned(4 downto 0);
  20. begin
  21. - fsmd state and data registers
  22. process(clk,reset)
  23. begin
  24. if reset = '1' then
  25. state_reg <= idle;
  26. tO_reg<= (others=> '0');
  27. ti_reg<= (others=> '0');
  28. n_reg <= (others=> '0');
  29. elsif (clk'event and clk = '1') then
  30. state_reg <= state_next;
  31. tO_reg <= tO_next;
  32. ti_reg <= ti_next;
  33. n_reg <= n_next;
  34. end if;
  35. end process;
  36. - fsmd next - state logic
  37. process(state_reg, n_reg, tO_reg, ti_reg, start, i, n_next)
  38. begin
  39. ready <= '0';
  40. done_tick <= '0';
  41. state_next <= state_reg;
  42. tO_next <= tO_reg;
  43. ti_next <= ti_reg;
  44. n_next <= n_reg;
  45. case state_reg is
  46. when idle =>
  47. ready <= '1';
  48. if start= '1' then
  49. tO_next <= (others => '0');
  50. ti_next <= (0 => '1', others => '0');
  51. n_next <= unsigned(i);
  52. state_next <= op;
  53. end if;
  54. when op =>
  55. if n_reg = 0 then
  56. tl_next <= (others => '0');
  57. state_next <= done;
  58. elsif n_reg = 1 then
  59. state_next <= done;
  60. else
  61. ti_next <= ti_reg + tO_reg;
  62. tO_next <= ti_reg;
  63. n_next <= n_reg - 1;
  64. end if;
  65. when done =>
  66. done_tick <= '1';
  67. state_next <= idle;
  68. end case;
  69. end process;
  70. -- output
  71. f <= std_logic_vector(tl_reg);
  72. end arch;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement