⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jtag_uart.vhd

📁 nois 2cpu 硬件实现编程
💻 VHD
📖 第 1 页 / 共 4 页
字号:
--      port map(--                aclr => fifo_clear,--                clock => clk,--                data => t_dat,--                empty => internal_fifo_EF,--                full => internal_rfifo_full,--                q => internal_fifo_rdata,--                rdreq => fifo_rd,--                usedw => internal_rfifo_used,--                wrreq => wr_rfifo--      );----synthesis read_comments_as_HDL offend europa;-- turn off superfluous VHDL processor warnings -- altera message_level Level1 -- altera message_off 10034 10035 10036 10037 10230 10240 10030 library altera;use altera.altera_europa_support_lib.all;library altera_mf;use altera_mf.all;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;library lpm;use lpm.all;entity jtag_uart is         port (              -- inputs:                 signal av_address : IN STD_LOGIC;                 signal av_chipselect : IN STD_LOGIC;                 signal av_read_n : IN STD_LOGIC;                 signal av_write_n : IN STD_LOGIC;                 signal av_writedata : IN STD_LOGIC_VECTOR (31 DOWNTO 0);                 signal clk : IN STD_LOGIC;                 signal rst_n : IN STD_LOGIC;              -- outputs:                 signal av_irq : OUT STD_LOGIC;                 signal av_readdata : OUT STD_LOGIC_VECTOR (31 DOWNTO 0);                 signal av_waitrequest : OUT STD_LOGIC;                 signal dataavailable : OUT STD_LOGIC;                 signal readyfordata : OUT STD_LOGIC              );end entity jtag_uart;architecture europa of jtag_uart iscomponent jtag_uart_scfifo_w is            port (                 -- inputs:                    signal clk : IN STD_LOGIC;                    signal fifo_clear : IN STD_LOGIC;                    signal fifo_wdata : IN STD_LOGIC_VECTOR (7 DOWNTO 0);                    signal fifo_wr : IN STD_LOGIC;                    signal rd_wfifo : IN STD_LOGIC;                 -- outputs:                    signal fifo_FF : OUT STD_LOGIC;                    signal r_dat : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);                    signal wfifo_empty : OUT STD_LOGIC;                    signal wfifo_used : OUT STD_LOGIC_VECTOR (5 DOWNTO 0)                 );end component jtag_uart_scfifo_w;component jtag_uart_scfifo_r is            port (                 -- inputs:                    signal clk : IN STD_LOGIC;                    signal fifo_clear : IN STD_LOGIC;                    signal fifo_rd : IN STD_LOGIC;                    signal rst_n : IN STD_LOGIC;                    signal t_dat : IN STD_LOGIC_VECTOR (7 DOWNTO 0);                    signal wr_rfifo : IN STD_LOGIC;                 -- outputs:                    signal fifo_EF : OUT STD_LOGIC;                    signal fifo_rdata : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);                    signal rfifo_full : OUT STD_LOGIC;                    signal rfifo_used : OUT STD_LOGIC_VECTOR (5 DOWNTO 0)                 );end component jtag_uart_scfifo_r;--synthesis read_comments_as_HDL on--  component alt_jtag_atlantic is--GENERIC (--      INSTANCE_ID : NATURAL;--        LOG2_RXFIFO_DEPTH : NATURAL;--        LOG2_TXFIFO_DEPTH : NATURAL--      );--    PORT (--    signal t_pause : OUT STD_LOGIC;--        signal r_ena : OUT STD_LOGIC;--        signal t_ena : OUT STD_LOGIC;--        signal t_dat : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);--        signal t_dav : IN STD_LOGIC;--        signal rst_n : IN STD_LOGIC;--        signal r_dat : IN STD_LOGIC_VECTOR (7 DOWNTO 0);--        signal r_val : IN STD_LOGIC;--        signal clk : IN STD_LOGIC--      );--  end component alt_jtag_atlantic;--synthesis read_comments_as_HDL off                signal ac :  STD_LOGIC;                signal activity :  STD_LOGIC;                signal fifo_AE :  STD_LOGIC;                signal fifo_AF :  STD_LOGIC;                signal fifo_EF :  STD_LOGIC;                signal fifo_FF :  STD_LOGIC;                signal fifo_clear :  STD_LOGIC;                signal fifo_rd :  STD_LOGIC;                signal fifo_rdata :  STD_LOGIC_VECTOR (7 DOWNTO 0);                signal fifo_wdata :  STD_LOGIC_VECTOR (7 DOWNTO 0);                signal fifo_wr :  STD_LOGIC;                signal ien_AE :  STD_LOGIC;                signal ien_AF :  STD_LOGIC;                signal internal_av_waitrequest :  STD_LOGIC;                signal ipen_AE :  STD_LOGIC;                signal ipen_AF :  STD_LOGIC;                signal pause_irq :  STD_LOGIC;                signal r_dat :  STD_LOGIC_VECTOR (7 DOWNTO 0);                signal r_ena :  STD_LOGIC;                signal r_val :  STD_LOGIC;                signal rd_wfifo :  STD_LOGIC;                signal read_0 :  STD_LOGIC;                signal rfifo_full :  STD_LOGIC;                signal rfifo_used :  STD_LOGIC_VECTOR (5 DOWNTO 0);                signal rvalid :  STD_LOGIC;                signal sim_r_ena :  STD_LOGIC;                signal sim_t_dat :  STD_LOGIC;                signal sim_t_ena :  STD_LOGIC;                signal sim_t_pause :  STD_LOGIC;                signal t_dat :  STD_LOGIC_VECTOR (7 DOWNTO 0);                signal t_dav :  STD_LOGIC;                signal t_ena :  STD_LOGIC;                signal t_pause :  STD_LOGIC;                signal wfifo_empty :  STD_LOGIC;                signal wfifo_used :  STD_LOGIC_VECTOR (5 DOWNTO 0);                signal woverflow :  STD_LOGIC;                signal wr_rfifo :  STD_LOGIC;begin  --avalon_jtag_slave, which is an e_avalon_slave  rd_wfifo <= r_ena AND NOT wfifo_empty;  wr_rfifo <= t_ena AND NOT rfifo_full;  fifo_clear <= NOT rst_n;  --the_jtag_uart_scfifo_w, which is an e_instance  the_jtag_uart_scfifo_w : jtag_uart_scfifo_w    port map(      fifo_FF => fifo_FF,      r_dat => r_dat,      wfifo_empty => wfifo_empty,      wfifo_used => wfifo_used,      clk => clk,      fifo_clear => fifo_clear,      fifo_wdata => fifo_wdata,      fifo_wr => fifo_wr,      rd_wfifo => rd_wfifo    );  --the_jtag_uart_scfifo_r, which is an e_instance  the_jtag_uart_scfifo_r : jtag_uart_scfifo_r    port map(      fifo_EF => fifo_EF,      fifo_rdata => fifo_rdata,      rfifo_full => rfifo_full,      rfifo_used => rfifo_used,      clk => clk,      fifo_clear => fifo_clear,      fifo_rd => fifo_rd,      rst_n => rst_n,      t_dat => t_dat,      wr_rfifo => wr_rfifo    );  ipen_AE <= ien_AE AND fifo_AE;  ipen_AF <= ien_AF AND ((pause_irq OR fifo_AF));  av_irq <= ipen_AE OR ipen_AF;  activity <= t_pause OR t_ena;  process (clk, rst_n)  begin    if rst_n = '0' then      pause_irq <= std_logic'('0');    elsif clk'event and clk = '1' then      -- only if fifo is not empty...      if std_logic'((t_pause AND NOT fifo_EF)) = '1' then         pause_irq <= std_logic'('1');      elsif std_logic'(read_0) = '1' then         pause_irq <= std_logic'('0');      end if;    end if;  end process;  process (clk, rst_n)  begin    if rst_n = '0' then      r_val <= std_logic'('0');      t_dav <= std_logic'('1');    elsif clk'event and clk = '1' then      r_val <= r_ena AND NOT wfifo_empty;      t_dav <= NOT rfifo_full;    end if;  end process;  process (clk, rst_n)  begin    if rst_n = '0' then      fifo_AE <= std_logic'('0');      fifo_AF <= std_logic'('0');      fifo_wr <= std_logic'('0');      rvalid <= std_logic'('0');      read_0 <= std_logic'('0');      ien_AE <= std_logic'('0');      ien_AF <= std_logic'('0');      ac <= std_logic'('0');      woverflow <= std_logic'('0');      internal_av_waitrequest <= std_logic'('1');    elsif clk'event and clk = '1' then      fifo_AE <= to_std_logic(((std_logic_vector'("0000000000000000000000000") & (Std_Logic_Vector'(A_ToStdLogicVector(fifo_FF) & wfifo_used)))<=std_logic_vector'("00000000000000000000000000001000")));      fifo_AF <= to_std_logic(((std_logic_vector'("000000000000000000000000") & (((std_logic_vector'("01000000") - (std_logic_vector'("0") & (Std_Logic_Vector'(A_ToStdLogicVector(rfifo_full) & rfifo_used)))))))<=std_logic_vector'("00000000000000000000000000001000")));      fifo_wr <= std_logic'('0');      read_0 <= std_logic'('0');      internal_av_waitrequest <= NOT (((av_chipselect AND ((NOT av_write_n OR NOT av_read_n))) AND internal_av_waitrequest));      if std_logic'(activity) = '1' then         ac <= std_logic'('1');      end if;      -- write      if std_logic'(((av_chipselect AND NOT av_write_n) AND internal_av_waitrequest)) = '1' then         -- addr 1 is control; addr 0 is data        if std_logic'(av_address) = '1' then           ien_AF <= av_writedata(0);          ien_AE <= av_writedata(1);          if std_logic'((av_writedata(10) AND NOT activity)) = '1' then             ac <= std_logic'('0');          end if;        else          fifo_wr <= NOT fifo_FF;          woverflow <= fifo_FF;        end if;      end if;      -- read      if std_logic'(((av_chipselect AND NOT av_read_n) AND internal_av_waitrequest)) = '1' then         -- addr 1 is interrupt; addr 0 is data        if std_logic'(NOT av_address) = '1' then           rvalid <= NOT fifo_EF;        end if;        read_0 <= NOT av_address;      end if;    end if;  end process;  fifo_wdata <= av_writedata(7 DOWNTO 0);  fifo_rd <= A_WE_StdLogic((std_logic'(((((av_chipselect AND NOT av_read_n) AND internal_av_waitrequest) AND NOT av_address))) = '1'), NOT fifo_EF, std_logic'('0'));  av_readdata <= A_EXT (A_WE_StdLogicVector((std_logic'(read_0) = '1'), (std_logic_vector'("0") & ((A_REP(std_logic'('0'), 9) & A_ToStdLogicVector(rfifo_full) & rfifo_used & A_ToStdLogicVector(rvalid) & A_ToStdLogicVector(woverflow) & A_ToStdLogicVector(NOT fifo_FF) & A_ToStdLogicVector(NOT fifo_EF) & A_ToStdLogicVector(std_logic'('0')) & A_ToStdLogicVector(ac) & A_ToStdLogicVector(ipen_AE) & A_ToStdLogicVector(ipen_AF) & fifo_rdata))), (A_REP(std_logic'('0'), 9) & ((std_logic_vector'("01000000") - (std_logic_vector'("0") & (Std_Logic_Vector'(A_ToStdLogicVector(fifo_FF) & wfifo_used))))) & A_ToStdLogicVector(rvalid) & A_ToStdLogicVector(woverflow) & A_ToStdLogicVector(NOT fifo_FF) & A_ToStdLogicVector(NOT fifo_EF) & A_ToStdLogicVector(std_logic'('0')) & A_ToStdLogicVector(ac) & A_ToStdLogicVector(ipen_AE) & A_ToStdLogicVector(ipen_AF) & A_REP(std_logic'('0'), 6) & A_ToStdLogicVector(ien_AE) & A_ToStdLogicVector(ien_AF))), 32);  process (clk, rst_n)  begin    if rst_n = '0' then      readyfordata <= std_logic'('0');    elsif clk'event and clk = '1' then      if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then         readyfordata <= NOT fifo_FF;      end if;    end if;  end process;  --vhdl renameroo for output signals  av_waitrequest <= internal_av_waitrequest;--synthesis translate_off    -- Tie off Atlantic Interface signals not used for simulation    process (clk)    begin      if clk'event and clk = '1' then        sim_t_pause <= std_logic'('0');        sim_t_ena <= std_logic'('0');        sim_t_dat <= Vector_To_Std_Logic(A_WE_StdLogicVector((std_logic'(t_dav) = '1'), r_dat, A_REP(r_val, 8)));        sim_r_ena <= std_logic'('0');      end if;    end process;    r_ena <= sim_r_ena;    t_ena <= sim_t_ena;    t_dat <= std_logic_vector'("0000000") & (A_TOSTDLOGICVECTOR(sim_t_dat));    t_pause <= sim_t_pause;    process (fifo_EF)    begin        if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then           dataavailable <= NOT fifo_EF;        end if;    end process;--synthesis translate_on--synthesis read_comments_as_HDL on--    jtag_uart_alt_jtag_atlantic : alt_jtag_atlantic--      generic map(--        INSTANCE_ID => 0,--        LOG2_RXFIFO_DEPTH => 6,--        LOG2_TXFIFO_DEPTH => 6--      )--      port map(--                clk => clk,--                r_dat => r_dat,--                r_ena => r_ena,--                r_val => r_val,--                rst_n => rst_n,--                t_dat => t_dat,--                t_dav => t_dav,--                t_ena => t_ena,--                t_pause => t_pause--      );----    process (clk, rst_n)--    begin--      if rst_n = '0' then--        dataavailable <= std_logic'('0');--      elsif clk'event and clk = '1' then--        if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then --          dataavailable <= NOT fifo_EF;--        end if;--      end if;----    end process;----synthesis read_comments_as_HDL offend europa;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -