Line 8... |
Line 8... |
--! @brief Simple UART module.
|
--! @brief Simple UART module.
|
--! The following registers are defined:
|
--! The following registers are defined:
|
--! 0 - Transmit data register (write-only)
|
--! 0 - Transmit data register (write-only)
|
--! 1 - Receive data register (read-only)
|
--! 1 - Receive data register (read-only)
|
--! 2 - Status register; (read-only)
|
--! 2 - Status register; (read-only)
|
--! - Bit 0: data in receive buffer
|
--! - Bit 0: no data in receive buffer
|
--! - Bit 1: no data in transmit buffer
|
--! - Bit 1: no data in transmit buffer
|
--! - Bit 2: receive buffer full
|
--! - Bit 2: receive buffer full
|
--! - Bit 3: transmit buffer full
|
--! - Bit 3: transmit buffer full
|
--! 3 - Control register, currently unused.
|
--! 3 - Control register, currently unused.
|
entity pp_soc_uart is
|
entity pp_soc_uart is
|
Line 295... |
Line 295... |
else -- Read from register
|
else -- Read from register
|
if wb_adr_in = b"01" then
|
if wb_adr_in = b"01" then
|
recv_buffer_pop <= '1';
|
recv_buffer_pop <= '1';
|
wb_state <= READ_ACK;
|
wb_state <= READ_ACK;
|
elsif wb_adr_in = b"10" then
|
elsif wb_adr_in = b"10" then
|
wb_dat_out <= x"0" & send_buffer_full & recv_buffer_full & send_buffer_empty & not recv_buffer_empty;
|
wb_dat_out <= x"0" & send_buffer_full & recv_buffer_full & send_buffer_empty & recv_buffer_empty;
|
wb_ack <= '1';
|
wb_ack <= '1';
|
wb_state <= READ_ACK;
|
wb_state <= READ_ACK;
|
else
|
else
|
wb_dat_out <= (others => '0');
|
wb_dat_out <= (others => '0');
|
wb_ack <= '1';
|
wb_ack <= '1';
|