Advertisement
HaS5HeM

uart

Oct 11th, 2023 (edited)
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SystemVerilog 1.72 KB | Source Code | 0 0
  1. module uart
  2. #(
  3.   parameter DATA_BITS = 8,
  4.             STOP_TICKS = 16,
  5.             FRQ_DVSR = 163,
  6.             FRQ_DVSR_BITS = 8,
  7.             FIFO_DEPTH = 2
  8. )
  9. (
  10.   input  logic       clk, rst,
  11.                      rx,
  12.                      rd, wr,
  13.   input  logic [7:0] tx_data,
  14.   output logic [7:0] rx_data,
  15.   output logic       fifo_rx_full, fifo_rx_empty,
  16.                      fifo_tx_full, fifo_tx_empty,
  17.                      tx
  18. );
  19.  
  20. logic tick, rx_done, tx_done, tx_fifo_start, fifo_tx_empty_wire;
  21. logic [7:0] rx_data_fifo, tx_data_fifo;
  22.  
  23. assign tx_fifo_start = ~fifo_tx_empty_wire;
  24. assign fifo_tx_empty = fifo_tx_empty_wire;
  25.  
  26. baud_rt_gen #(
  27.   .N(FRQ_DVSR),
  28.   .N_BITS(FRQ_DVSR_BITS)
  29.   )
  30.   baud_rt_gen_unit (
  31.     .clk(clk),
  32.     .rst(rst),
  33.     .max_tick(tick)
  34.   );
  35.  
  36. uart_rx #(
  37.   .DATA_BITS(DATA_BITS),
  38.   .STOP_TICKS(STOP_TICKS)
  39.   )
  40.   uart_rx_unit (
  41.     .clk(clk),
  42.     .rst(rst),
  43.     .rx(rx),
  44.     .tick(tick),
  45.     .rx_done(rx_done),
  46.     .dout(rx_data_fifo)
  47.   );
  48.  
  49. fifo #(
  50.   .DEPTH(FIFO_DEPTH),
  51.   .WIDTH(DATA_BITS)
  52.   )
  53.   fifo_rx (
  54.     .clk(clk),
  55.     .rst(rst),
  56.     .wr(rx_done),
  57.     .rd(rd),
  58.     .wr_data(rx_data_fifo),
  59.     .rd_data(rx_data),
  60.     .empty(fifo_rx_empty),
  61.     .full(fifo_rx_full)
  62.   );
  63.  
  64. uart_tx #(
  65.   .DATA_BITS(DATA_BITS),
  66.   .STOP_TICKS(STOP_TICKS)
  67.   )
  68.   uart_tx_unit (
  69.     .clk(clk),
  70.     .rst(rst),
  71.     .tx_start(tx_fifo_start),
  72.     .tick(tick),
  73.     .tx_data(tx_data_fifo),
  74.     .tx_done(tx_done),
  75.     .tx_line(tx)
  76.   );
  77.  
  78. fifo #(
  79. .DEPTH(FIFO_DEPTH),
  80. .WIDTH(DATA_BITS)
  81. )
  82.   fifo_tx (
  83.     .clk(clk),
  84.     .rst(rst),
  85.     .wr(wr),
  86.     .rd(tx_done),
  87.     .wr_data(tx_data),
  88.     .rd_data(tx_data_fifo),
  89.     .empty(fifo_tx_empty_wire),
  90.     .full(fifo_tx_full)
  91.   );
  92.  
  93. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement