OpenCores
URL https://opencores.org/ocsvn/ion/ion/trunk

Subversion Repositories ion

[/] [ion/] [trunk/] [src/] [mips_mpu1_template.vhdl] - Diff between revs 77 and 87

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 77 Rev 87
Line 66... Line 66...
signal mpu_io_wr_addr :     std_logic_vector(31 downto 2);
signal mpu_io_wr_addr :     std_logic_vector(31 downto 2);
signal mpu_io_rd_vma :      std_logic;
signal mpu_io_rd_vma :      std_logic;
signal mpu_io_byte_we :     std_logic_vector(3 downto 0);
signal mpu_io_byte_we :     std_logic_vector(3 downto 0);
 
 
-- interface to UARTs
-- interface to UARTs
signal data_uart :          t_word;
signal uart_rd_word :       t_word;
signal data_uart_status :   t_word;
 
signal uart_tx_rdy :        std_logic := '1';
signal uart_tx_rdy :        std_logic := '1';
signal uart_rx_rdy :        std_logic := '1';
signal uart_rx_rdy :        std_logic := '1';
signal uart_write_tx :      std_logic;
signal uart_write :         std_logic;
 
signal uart_read :          std_logic;
signal uart_read_rx :       std_logic;
signal uart_read_rx :       std_logic;
 
signal uart_data_rx :       std_logic_vector(7 downto 0);
 
 
 
 
-- Block ram
-- Block ram
constant BRAM_SIZE : integer := @code_table_size@;
constant BRAM_SIZE : integer := @code_table_size@;
constant BRAM_ADDR_SIZE : integer := log2(BRAM_SIZE);
constant BRAM_ADDR_SIZE : integer := log2(BRAM_SIZE);
Line 199... Line 200...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
 
 
serial_rx : entity work.rs232_rx
serial_rx : entity work.rs232_rx
    port map(
    port map(
        rxd =>      uart_rxd,
        rxd =>      uart_rxd,
        data_rx =>  OPEN, --rs232_data_rx,
        data_rx =>  uart_data_rx,
        rx_rdy =>   uart_rx_rdy,
        rx_rdy =>   uart_rx_rdy,
        read_rx =>  '1', --read_rx,
        read_rx =>  uart_read_rx,
        clk =>      clk,
        clk =>      clk,
        reset =>    reset
        reset =>    reset
    );
    );
 
 
 
 
uart_write_tx <= '1'
-- '1'-> Read some UART register (0x2---0---)
 
uart_read <= '1'
 
    when mpu_io_rd_vma='1' and
 
         mpu_io_rd_addr(31 downto 28)=X"2" and
 
         mpu_io_rd_addr(15 downto 12)=X"0"
 
    else '0';
 
 
 
-- '1'-> Read UART Rx data (0x2---0-0-)
 
-- (This signal clears the RX 1-char buffer)
 
uart_read_rx <= '1'
 
    when uart_read='1' and
 
         mpu_io_rd_addr( 7 downto  4)=X"0"
 
    else '0';
 
 
 
-- '1'-> Write UART Tx register (trigger UART Tx)  (0x20000000)
 
uart_write <= '1'
    when mpu_io_byte_we/="0000" and
    when mpu_io_byte_we/="0000" and
         mpu_io_wr_addr(31 downto 28)=X"2" and
         mpu_io_wr_addr(31 downto 28)=X"2" and
         mpu_io_wr_addr(15 downto 12)=X"0"
         mpu_io_wr_addr(15 downto 12)=X"0"
    else '0';
    else '0';
 
 
serial_tx : entity work.rs232_tx
serial_tx : entity work.rs232_tx
    port map(
    port map(
        clk =>      clk,
        clk =>      clk,
        reset =>    reset,
        reset =>    reset,
        rdy =>      uart_tx_rdy,
        rdy =>      uart_tx_rdy,
        load =>     uart_write_tx,
        load =>     uart_write,
        data_i =>   mpu_io_wr_data(7 downto 0),
        data_i =>   mpu_io_wr_data(7 downto 0),
        txd =>      uart_txd
        txd =>      uart_txd
    );
    );
 
 
-- UART read registers; only status, and hardwired, for the time being
-- Both UART rd addresses 000 and 020 read the same word (save a mux), but only
data_uart <= data_uart_status; -- FIXME no data rx yet
-- address 000 clears the rx buffer.
data_uart_status <= X"0000000" & "00" & uart_tx_rdy & uart_rx_rdy;
uart_rd_word <= uart_data_rx & X"00000" & "00" & uart_tx_rdy & uart_rx_rdy;
 
 
 
-- IO Rd mux: either the UART data/status word od the IO coming from outside
mpu_io_rd_data <=
mpu_io_rd_data <=
    data_uart when mpu_io_rd_addr(15 downto 12)=X"0" else
    uart_rd_word when mpu_io_rd_addr(15 downto 12)=X"0" else
    io_rd_data;
    io_rd_data;
 
 
-- io_rd_data 
-- io_rd_data 
io_rd_addr <= mpu_io_rd_addr;
io_rd_addr <= mpu_io_rd_addr;
io_wr_addr <= mpu_io_wr_addr;
io_wr_addr <= mpu_io_wr_addr;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.