You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
2.3 KiB

  1. -- This design should display incrementing binary numbers
  2. -- at LED1-LED8 of the GateMate FPGA Starter Kit.
  3. library ieee ;
  4. use ieee.std_logic_1164.all;
  5. use ieee.numeric_std.all;
  6. library gatemate;
  7. use gatemate.components.all;
  8. entity uart_reg is
  9. port (
  10. clk_i : in std_logic; -- 10 MHz clock
  11. rst_n_i : in std_logic; -- SW3 button
  12. uart_rx_i : in std_logic;
  13. uart_tx_o : out std_logic;
  14. led_n_o : out std_logic_vector(3 downto 0); -- LED1..LED2
  15. debug_o : out std_logic_vector(3 downto 0)
  16. );
  17. end entity uart_reg;
  18. architecture rtl of uart_reg is
  19. signal s_pll_clk : std_logic;
  20. signal s_pll_lock : std_logic;
  21. signal s_clk_en : boolean;
  22. signal s_rst_n : std_logic;
  23. signal s_cfg_end : std_logic;
  24. signal s_uart_rx_tdata : std_logic_vector(7 downto 0);
  25. signal s_uart_rx_tvalid : std_logic;
  26. signal s_uart_rx_tready : std_logic;
  27. signal s_uart_tx : std_logic;
  28. begin
  29. pll : CC_PLL
  30. generic map (
  31. REF_CLK => "10",
  32. OUT_CLK => "1",
  33. PERF_MD => "ECONOMY"
  34. )
  35. port map (
  36. CLK_REF => clk_i,
  37. CLK_FEEDBACK => '0',
  38. USR_CLK_REF => '0',
  39. USR_LOCKED_STDY_RST => '0',
  40. USR_PLL_LOCKED_STDY => open,
  41. USR_PLL_LOCKED => s_pll_lock,
  42. CLK270 => open,
  43. CLK180 => open,
  44. CLK0 => s_pll_clk,
  45. CLK90 => open,
  46. CLK_REF_OUT => open
  47. );
  48. cfg_end_inst : CC_CFG_END
  49. port map (
  50. CFG_END => s_cfg_end
  51. );
  52. uart_rx : entity work.uart_rx
  53. generic map (
  54. CLK_DIV => 104
  55. )
  56. port map (
  57. -- globals
  58. rst_n_i => s_rst_n,
  59. clk_i => s_pll_clk,
  60. -- axis user interface
  61. tdata_o => s_uart_rx_tdata,
  62. tvalid_o => s_uart_rx_tvalid,
  63. tready_i => s_uart_rx_tready,
  64. -- uart interface
  65. rx_i => uart_rx_i
  66. );
  67. uart_tx : entity work.uart_tx
  68. generic map (
  69. CLK_DIV => 104
  70. )
  71. port map (
  72. -- globals
  73. rst_n_i => s_rst_n,
  74. clk_i => s_pll_clk,
  75. -- axis user interface
  76. tdata_i => s_uart_rx_tdata,
  77. tvalid_i => s_uart_rx_tvalid,
  78. tready_o => s_uart_rx_tready,
  79. -- uart interface
  80. tx_o => uart_tx_o
  81. );
  82. s_rst_n <= rst_n_i and s_pll_lock and s_cfg_end;
  83. -- Start with simple loop
  84. -- uart_tx_o <= uart_rx_i;
  85. -- Debug output
  86. led_n_o <= uart_rx_i & s_rst_n & not (s_pll_lock, s_cfg_end);
  87. end architecture;