📄 jtag_uart.vhd
字号:
--Legal Notice: (C)2006 Altera Corporation. All rights reserved. Your--use of Altera Corporation's design tools, logic functions and other--software and tools, and its AMPP partner logic functions, and any--output files any of the foregoing (including device programming or--simulation files), and any associated documentation or information are--expressly subject to the terms and conditions of the Altera Program--License Subscription Agreement or other applicable license agreement,--including, without limitation, that your use is for the sole purpose--of programming logic devices manufactured by Altera and sold by Altera--or its authorized distributors. Please refer to the applicable--agreement for further details.-- 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;library std;use std.textio.all;entity jtag_uart_log_module is port ( -- inputs: signal clk : IN STD_LOGIC; signal data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); signal strobe : IN STD_LOGIC; signal valid : IN STD_LOGIC );end entity jtag_uart_log_module;architecture europa of jtag_uart_log_module is file text_handle : TEXT ; -- synthesis translate_off -- purpose: convert 8 bit signal data to 8 bit string FUNCTION bin_to_char(vec_to_convert : STD_LOGIC_VECTOR (7 downto 0)) RETURN CHARACTER IS VARIABLE result: CHARACTER; BEGIN CASE vec_to_convert IS -- cover basic ascii printable characters... when X"0a" => result := lf; -- \n, linefeed when X"0d" => result := nul; -- \r, Ctrl-M when X"09" => result := ht; -- \t, Ctrl-I, TAB when X"20" => result := ' ' ; when X"21" => result := '!' ; when X"22" => result := '"' ; when X"23" => result := '#' ; when X"24" => result := '$' ; when X"25" => result := '%' ; when X"26" => result := '&' ; when X"27" => result := ''' ; -- sync ' char for hilighting txt editors when X"28" => result := '(' ; when X"29" => result := ')' ; when X"2a" => result := '*' ; when X"2b" => result := '+' ; when X"2c" => result := ',' ; when X"2d" => result := '-' ; when X"2e" => result := '.' ; when X"2f" => result := '/' ; when X"30" => result := '0' ; when X"31" => result := '1' ; when X"32" => result := '2' ; when X"33" => result := '3' ; when X"34" => result := '4' ; when X"35" => result := '5' ; when X"36" => result := '6' ; when X"37" => result := '7' ; when X"38" => result := '8' ; when X"39" => result := '9' ; when X"3a" => result := ':' ; when X"3b" => result := ';' ; when X"3c" => result := '<' ; when X"3d" => result := '=' ; when X"3e" => result := '>' ; when X"3f" => result := '?' ; when X"40" => result := '@' ; when X"41" => result := 'A' ; when X"42" => result := 'B' ; when X"43" => result := 'C' ; when X"44" => result := 'D' ; when X"45" => result := 'E' ; when X"46" => result := 'F' ; when X"47" => result := 'G' ; when X"48" => result := 'H' ; when X"49" => result := 'I' ; when X"4a" => result := 'J' ; when X"4b" => result := 'K' ; when X"4c" => result := 'L' ; when X"4d" => result := 'M' ; when X"4e" => result := 'N' ; when X"4f" => result := 'O' ; when X"50" => result := 'P' ; when X"51" => result := 'Q' ; when X"52" => result := 'R' ; when X"53" => result := 'S' ; when X"54" => result := 'T' ; when X"55" => result := 'U' ; when X"56" => result := 'V' ; when X"57" => result := 'W' ; when X"58" => result := 'X' ; when X"59" => result := 'Y' ; when X"5a" => result := 'Z' ; when X"5b" => result := '[' ; when X"5c" => result := '\' ; when X"5d" => result := ']' ; when X"5e" => result := '^' ; when X"5f" => result := '_' ; when X"60" => result := '`' ; when X"61" => result := 'a' ; when X"62" => result := 'b' ; when X"63" => result := 'c' ; when X"64" => result := 'd' ; when X"65" => result := 'e' ; when X"66" => result := 'f' ; when X"67" => result := 'g' ; when X"68" => result := 'h' ; when X"69" => result := 'i' ; when X"6a" => result := 'j' ; when X"6b" => result := 'k' ; when X"6c" => result := 'l' ; when X"6d" => result := 'm' ; when X"6e" => result := 'n' ; when X"6f" => result := 'o' ; when X"70" => result := 'p' ; when X"71" => result := 'q' ; when X"72" => result := 'r' ; when X"73" => result := 's' ; when X"74" => result := 't' ; when X"75" => result := 'u' ; when X"76" => result := 'v' ; when X"77" => result := 'w' ; when X"78" => result := 'x' ; when X"79" => result := 'y' ; when X"7a" => result := 'z' ; when X"7b" => result := '{' ; when X"7c" => result := '|' ; when X"7d" => result := '}' ; when X"7e" => result := '~' ; when X"7f" => result := '_' ; WHEN others => ASSERT False REPORT "data contains a non-printable character" SEVERITY Warning; result := nul; END case; RETURN result; end bin_to_char; -- synthesis translate_on begin--synthesis translate_off -- purpose: simulate verilog initial function to open file in write mode -- type : combinational -- inputs : initial -- outputs: <none> process is variable initial : boolean := true; -- not initialized yet variable status : file_open_status; -- status for fopen begin -- process if initial = true then file_open (status, text_handle, "/data/job/20061127/2047501/examples/vhdl/niosII_cycloneII_2c35/standard/std_2C35_sim/jtag_uart_output_stream.dat", WRITE_MODE); initial := false; -- done! end if; wait; -- wait forever end process; process (clk) variable data_string : LINE; -- for line buffer to file variable status : file_open_status; -- status for fopen variable echo_string : LINE; -- for line buffer to screen (stdout) begin -- process clk if clk'event and clk = '1' then -- sync ' chars for hilighting txt editors if (valid and strobe) = '1' then write (data_string,To_bitvector(data)); -- every char flushes line writeline (text_handle,data_string); file_close (text_handle); -- flush buffer file_open (status, text_handle, "/data/job/20061127/2047501/examples/vhdl/niosII_cycloneII_2c35/standard/std_2C35_sim/jtag_uart_output_stream.dat", APPEND_MODE); -- save up characters into a line to send to the screen write (echo_string,bin_to_char(data)); if data = X"0a" or data = X"0d" then -- \n or \r will flush line writeline (output,echo_string); end if; end if; end if; 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_w is port ( -- inputs: signal clk : IN STD_LOGIC; signal fifo_wdata : IN STD_LOGIC_VECTOR (7 DOWNTO 0); signal fifo_wr : 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 entity jtag_uart_sim_scfifo_w;architecture europa of jtag_uart_sim_scfifo_w is--synthesis translate_offcomponent jtag_uart_log_module is port ( -- inputs: signal clk : IN STD_LOGIC; signal data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); signal strobe : IN STD_LOGIC; signal valid : IN STD_LOGIC );end component jtag_uart_log_module;--synthesis translate_onbegin--synthesis translate_off --jtag_uart_log, which is an e_log jtag_uart_log : jtag_uart_log_module port map( clk => clk, data => fifo_wdata, strobe => fifo_wr, valid => fifo_wr ); wfifo_used <= A_REP(std_logic'('0'), 6); r_dat <= A_REP(std_logic'('0'), 8); fifo_FF <= std_logic'('0'); wfifo_empty <= std_logic'('1');--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_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 entity jtag_uart_scfifo_w;architecture europa of jtag_uart_scfifo_w is--synthesis translate_offcomponent jtag_uart_sim_scfifo_w is port ( -- inputs: signal clk : IN STD_LOGIC; signal fifo_wdata : IN STD_LOGIC_VECTOR (7 DOWNTO 0); signal fifo_wr : 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_sim_scfifo_w;--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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -