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

📄 jtag_uart.vhd

📁 nois 2cpu 硬件实现编程
💻 VHD
📖 第 1 页 / 共 4 页
字号:
  return result;  end readmemb;                          -- synthesis translate_on                      begin--synthesis translate_off    q <= mem_array(CONV_INTEGER(UNSIGNED((address))));    process (clk, reset_n)    begin      if reset_n = '0' then        d1_pre <= std_logic'('0');        d2_pre <= std_logic'('0');        d3_pre <= std_logic'('0');        d4_pre <= std_logic'('0');        d5_pre <= std_logic'('0');        d6_pre <= std_logic'('0');        d7_pre <= std_logic'('0');        d8_pre <= std_logic'('0');        d9_pre <= std_logic'('0');        new_rom <= std_logic'('0');      elsif clk'event and clk = '1' then        if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then           d1_pre <= pre;          d2_pre <= d1_pre;          d3_pre <= d2_pre;          d4_pre <= d3_pre;          d5_pre <= d4_pre;          d6_pre <= d5_pre;          d7_pre <= d6_pre;          d8_pre <= d7_pre;          d9_pre <= d8_pre;          new_rom <= d9_pre;        end if;      end if;    end process;    num_bytes <= mutex(1);                             safe <= safe_wire;    safe_wire <= to_std_logic( address < mutex(1) );    process (clk, reset_n)    begin      if reset_n = '0' then        safe_delay <= '0';      elsif clk'event and clk = '1' then -- balance ' for emacs quoting        safe_delay <= safe_wire;      end if;    end process;    process (clk, reset_n)      variable poll_count : integer := POLL_RATE; -- STD_LOGIC_VECTOR (31:0);      variable status : file_open_status; -- status for fopen      variable mutex_string : LINE;  -- temp space for read/write data      variable stream_string : LINE;  -- temp space for read data      variable init_done : BOOLEAN; -- only used if non-interactive      variable interactive : BOOLEAN := FALSE;    begin      if reset_n /= '1' then        address <= "000000000000";        mem_array(0) <= X"00";        mutex(0) <= X"00000000";        mutex(1) <= X"00000000";        pre <= '0';        init_done := FALSE;      elsif clk'event and clk = '1' then -- balance ' for emacs quoting        pre <= '0';        if incr_addr = '1' and safe_wire = '1' then          address <= address + "000000000001";        end if;        -- blast mutex via textio after falling edge of safe        if mutex(0) /= X"00000000" and safe_wire = '0' and safe_delay = '1' then	  if interactive then           -- bash mutex            file_open (status, mutex_handle, "/data/job/20061127/2047501/examples/vhdl/niosII_cycloneII_2c35/standard/std_2C35_sim/jtag_uart_input_mutex.dat", WRITE_MODE);            write (mutex_string, string'("0")); -- balance ' for emacs quoting            writeline (mutex_handle, mutex_string);            file_close (mutex_handle);            mutex(0) <= X"00000000";	  else -- non-nteractive does not bash mutex: it stops poll counter	    init_done := TRUE;          end if;        end if;        if poll_count < POLL_RATE then  -- wait          if not init_done then         -- stop counting if init_done is TRUE            poll_count := poll_count + 1;          end if;        else                            -- do the real work          poll_count := 0;          -- get mutex via textio ...          mutex(0) <= get_mutex_val ("/data/job/20061127/2047501/examples/vhdl/niosII_cycloneII_2c35/standard/std_2C35_sim/jtag_uart_input_mutex.dat");          if mutex(0) /= X"00000000" and safe_wire = '0' then            -- read stream into array after previous stream is complete            mutex (1) <= mutex (0); -- save mutex value for address compare            -- get mem_array via textio ...            mem_array <= readmemb("/data/job/20061127/2047501/examples/vhdl/niosII_cycloneII_2c35/standard/std_2C35_sim/jtag_uart_input_stream.dat");            -- prep address and pre-pulse to alert world to new contents            address <= "000000000000";            pre <= '1';          end if; -- poll_count        end if;   -- clock      end if;     -- reset    end process;                         --synthesis translate_onend 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 ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jtag_uart_sim_scfifo_r is         port (              -- inputs:                 signal clk : IN STD_LOGIC;                 signal fifo_rd : IN STD_LOGIC;                 signal rst_n : 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 entity jtag_uart_sim_scfifo_r;architecture europa of jtag_uart_sim_scfifo_r is--synthesis translate_offcomponent jtag_uart_drom_module is            generic (                    POLL_RATE : integer := 100                    );           port (                 -- inputs:                    signal clk : IN STD_LOGIC;                    signal incr_addr : IN STD_LOGIC;                    signal reset_n : IN STD_LOGIC;                 -- outputs:                    signal new_rom : OUT STD_LOGIC;                    signal num_bytes : OUT STD_LOGIC_VECTOR (31 DOWNTO 0);                    signal q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);                    signal safe : OUT STD_LOGIC                 );end component jtag_uart_drom_module;--synthesis translate_on                signal bytes_left :  STD_LOGIC_VECTOR (31 DOWNTO 0);                signal fifo_rd_d :  STD_LOGIC;                signal internal_fifo_rdata1 :  STD_LOGIC_VECTOR (7 DOWNTO 0);                signal internal_rfifo_full1 :  STD_LOGIC;                signal new_rom :  STD_LOGIC;                signal num_bytes :  STD_LOGIC_VECTOR (31 DOWNTO 0);                signal rfifo_entries :  STD_LOGIC_VECTOR (6 DOWNTO 0);                signal safe :  STD_LOGIC;begin  --vhdl renameroo for output signals  fifo_rdata <= internal_fifo_rdata1;  --vhdl renameroo for output signals  rfifo_full <= internal_rfifo_full1;--synthesis translate_off    --jtag_uart_drom, which is an e_drom    jtag_uart_drom : jtag_uart_drom_module      port map(        new_rom => new_rom,        num_bytes => num_bytes,        q => internal_fifo_rdata1,        safe => safe,        clk => clk,        incr_addr => fifo_rd_d,        reset_n => rst_n      );    -- Generate rfifo_entries for simulation    process (clk, rst_n)    begin      if rst_n = '0' then        bytes_left <= std_logic_vector'("00000000000000000000000000000000");        fifo_rd_d <= std_logic'('0');      elsif clk'event and clk = '1' then        fifo_rd_d <= fifo_rd;        -- decrement on read        if std_logic'(fifo_rd_d) = '1' then           bytes_left <= A_EXT (((std_logic_vector'("0") & (bytes_left)) - (std_logic_vector'("00000000000000000000000000000000") & (A_TOSTDLOGICVECTOR(std_logic'('1'))))), 32);        end if;        -- catch new contents        if std_logic'(new_rom) = '1' then           bytes_left <= num_bytes;        end if;      end if;    end process;    fifo_EF <= to_std_logic((bytes_left = std_logic_vector'("00000000000000000000000000000000")));    internal_rfifo_full1 <= to_std_logic((bytes_left>std_logic_vector'("00000000000000000000000001000000")));    rfifo_entries <= A_EXT (A_WE_StdLogicVector((std_logic'((internal_rfifo_full1)) = '1'), std_logic_vector'("00000000000000000000000001000000"), bytes_left), 7);    rfifo_used <= rfifo_entries(5 DOWNTO 0);--synthesis translate_onend 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_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 entity jtag_uart_scfifo_r;architecture europa of jtag_uart_scfifo_r is--synthesis translate_offcomponent jtag_uart_sim_scfifo_r is            port (                 -- inputs:                    signal clk : IN STD_LOGIC;                    signal fifo_rd : IN STD_LOGIC;                    signal rst_n : 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_sim_scfifo_r;--synthesis translate_on--synthesis read_comments_as_HDL on--  component scfifo is--GENERIC (--      lpm_hint : STRING;--        lpm_numwords : NATURAL;--        lpm_showahead : STRING;--        lpm_type : STRING;--        lpm_width : NATURAL;--        lpm_widthu : NATURAL;--        overflow_checking : STRING;--        underflow_checking : STRING;--        use_eab : STRING--      );--    PORT (--    signal full : OUT STD_LOGIC;--        signal q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);--        signal usedw : OUT STD_LOGIC_VECTOR (5 DOWNTO 0);--        signal empty : OUT STD_LOGIC;--        signal rdreq : IN STD_LOGIC;--        signal aclr : IN STD_LOGIC;--        signal data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);--        signal clock : IN STD_LOGIC;--        signal wrreq : IN STD_LOGIC--      );--  end component scfifo;--synthesis read_comments_as_HDL off                signal internal_fifo_EF :  STD_LOGIC;                signal internal_fifo_rdata :  STD_LOGIC_VECTOR (7 DOWNTO 0);                signal internal_rfifo_full :  STD_LOGIC;                signal internal_rfifo_used :  STD_LOGIC_VECTOR (5 DOWNTO 0);begin  --vhdl renameroo for output signals  fifo_EF <= internal_fifo_EF;  --vhdl renameroo for output signals  fifo_rdata <= internal_fifo_rdata;  --vhdl renameroo for output signals  rfifo_full <= internal_rfifo_full;  --vhdl renameroo for output signals  rfifo_used <= internal_rfifo_used;--synthesis translate_off    --the_jtag_uart_sim_scfifo_r, which is an e_instance    the_jtag_uart_sim_scfifo_r : jtag_uart_sim_scfifo_r      port map(        fifo_EF => internal_fifo_EF,        fifo_rdata => internal_fifo_rdata,        rfifo_full => internal_rfifo_full,        rfifo_used => internal_rfifo_used,        clk => clk,        fifo_rd => fifo_rd,        rst_n => rst_n      );--synthesis translate_on--synthesis read_comments_as_HDL on--    rfifo : scfifo--      generic map(--        lpm_hint => "RAM_BLOCK_TYPE=AUTO",--        lpm_numwords => 64,--        lpm_showahead => "OFF",--        lpm_type => "scfifo",--        lpm_width => 8,--        lpm_widthu => 6,--        overflow_checking => "OFF",--        underflow_checking => "OFF",--        use_eab => "ON"--      )

⌨️ 快捷键说明

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