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.

95 lines
2.0 KiB

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