📄 clock_0.vhd
字号:
end if; end if; end process;end 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 clock_0_slave_write_request_sync_module is port ( -- inputs: signal clk : IN STD_LOGIC; signal data_in : IN STD_LOGIC; signal reset_n : IN STD_LOGIC; -- outputs: signal data_out : OUT STD_LOGIC );end entity clock_0_slave_write_request_sync_module;architecture europa of clock_0_slave_write_request_sync_module is signal data_in_d1 : STD_LOGIC;attribute ALTERA_ATTRIBUTE : string;attribute ALTERA_ATTRIBUTE of data_in_d1 : signal is "MAX_DELAY=100ns ; PRESERVE_REGISTER=ON";attribute ALTERA_ATTRIBUTE of data_out : signal is "PRESERVE_REGISTER=ON";begin process (clk, reset_n) begin if reset_n = '0' then data_in_d1 <= std_logic'('0'); elsif clk'event and clk = '1' then if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then data_in_d1 <= data_in; end if; end if; end process; process (clk, reset_n) begin if reset_n = '0' then data_out <= std_logic'('0'); elsif clk'event and clk = '1' then if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then data_out <= data_in_d1; end if; end if; end process;end 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 clock_0_master_FSM is port ( -- inputs: signal master_clk : IN STD_LOGIC; signal master_reset_n : IN STD_LOGIC; signal master_waitrequest : IN STD_LOGIC; signal slave_read_request_token : IN STD_LOGIC; signal slave_write_request_token : IN STD_LOGIC; -- outputs: signal master_read : OUT STD_LOGIC; signal master_read_done : OUT STD_LOGIC; signal master_write : OUT STD_LOGIC; signal master_write_done : OUT STD_LOGIC );end entity clock_0_master_FSM;architecture europa of clock_0_master_FSM is signal internal_master_read1 : STD_LOGIC; signal internal_master_read_done : STD_LOGIC; signal internal_master_write1 : STD_LOGIC; signal internal_master_write_done : STD_LOGIC; signal master_state : STD_LOGIC_VECTOR (2 DOWNTO 0); signal next_master_read : STD_LOGIC; signal next_master_read_done : STD_LOGIC; signal next_master_state : STD_LOGIC_VECTOR (2 DOWNTO 0); signal next_master_write : STD_LOGIC; signal next_master_write_done : STD_LOGIC;begin process (master_clk, master_reset_n) begin if master_reset_n = '0' then internal_master_read_done <= std_logic'('0'); elsif master_clk'event and master_clk = '1' then if true then internal_master_read_done <= next_master_read_done; end if; end if; end process; process (master_clk, master_reset_n) begin if master_reset_n = '0' then internal_master_write_done <= std_logic'('0'); elsif master_clk'event and master_clk = '1' then if true then internal_master_write_done <= next_master_write_done; end if; end if; end process; process (master_clk, master_reset_n) begin if master_reset_n = '0' then internal_master_read1 <= std_logic'('0'); elsif master_clk'event and master_clk = '1' then if true then internal_master_read1 <= next_master_read; end if; end if; end process; process (master_clk, master_reset_n) begin if master_reset_n = '0' then internal_master_write1 <= std_logic'('0'); elsif master_clk'event and master_clk = '1' then if true then internal_master_write1 <= next_master_write; end if; end if; end process; process (master_clk, master_reset_n) begin if master_reset_n = '0' then master_state <= std_logic_vector'("001"); elsif master_clk'event and master_clk = '1' then if true then master_state <= next_master_state; end if; end if; end process; process (internal_master_read1, internal_master_read_done, internal_master_write1, internal_master_write_done, master_state, master_waitrequest, slave_read_request_token, slave_write_request_token) begin case master_state is -- synthesis parallel_case when std_logic_vector'("001") => --if read request token from slave then goto READ_WAIT state if std_logic'(slave_read_request_token) = '1' then next_master_state <= std_logic_vector'("010"); next_master_read <= std_logic'('1'); next_master_write <= std_logic'('0'); elsif std_logic'(slave_write_request_token) = '1' then next_master_state <= std_logic_vector'("100"); next_master_read <= std_logic'('0'); next_master_write <= std_logic'('1'); else next_master_state <= master_state; next_master_read <= std_logic'('0'); next_master_write <= std_logic'('0'); end if; next_master_read_done <= internal_master_read_done; next_master_write_done <= internal_master_write_done; -- when std_logic_vector'("001") when std_logic_vector'("010") => --stay in READ_WAIT state until master wait is deasserted if std_logic'(NOT(master_waitrequest)) = '1' then next_master_state <= std_logic_vector'("001"); next_master_read_done <= NOT(internal_master_read_done); next_master_read <= std_logic'('0'); else next_master_state <= std_logic_vector'("010"); next_master_read_done <= internal_master_read_done; next_master_read <= internal_master_read1; end if; next_master_write_done <= internal_master_write_done; next_master_write <= std_logic'('0'); -- when std_logic_vector'("010") when std_logic_vector'("100") => --stay in WRITE_WAIT state until slave wait is deasserted if std_logic'(NOT(master_waitrequest)) = '1' then next_master_state <= std_logic_vector'("001"); next_master_write <= std_logic'('0'); next_master_write_done <= NOT(internal_master_write_done); else next_master_state <= std_logic_vector'("100"); next_master_write <= internal_master_write1; next_master_write_done <= internal_master_write_done; end if; next_master_read_done <= internal_master_read_done; next_master_read <= std_logic'('0'); -- when std_logic_vector'("100") when others => next_master_state <= std_logic_vector'("001"); next_master_write <= std_logic'('0'); next_master_write_done <= internal_master_write_done; next_master_read <= std_logic'('0'); next_master_read_done <= internal_master_read_done; -- when others end case; -- master_state end process; --vhdl renameroo for output signals master_read <= internal_master_read1; --vhdl renameroo for output signals master_read_done <= internal_master_read_done; --vhdl renameroo for output signals master_write <= internal_master_write1; --vhdl renameroo for output signals master_write_done <= internal_master_write_done;end 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 clock_0_bit_pipe is port ( -- inputs: signal clk1 : IN STD_LOGIC; signal clk2 : IN STD_LOGIC; signal data_in : IN STD_LOGIC; signal reset_clk1_n : IN STD_LOGIC; signal reset_clk2_n : IN STD_LOGIC; -- outputs: signal data_out : OUT STD_LOGIC );end entity clock_0_bit_pipe;architecture europa of clock_0_bit_pipe is signal data_in_d1 : STD_LOGIC;attribute ALTERA_ATTRIBUTE : string;attribute ALTERA_ATTRIBUTE of data_in_d1 : signal is "{-to ""*""} CUT=ON ; PRESERVE_REGISTER=ON";attribute ALTERA_ATTRIBUTE of data_out : signal is "PRESERVE_REGISTER=ON";begin process (clk1, reset_clk1_n) begin if reset_clk1_n = '0' then data_in_d1 <= std_logic'('0'); elsif clk1'event and clk1 = '1' then if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then data_in_d1 <= data_in; end if; end if; end process; process (clk2, reset_clk2_n) begin if reset_clk2_n = '0' then data_out <= std_logic'('0'); elsif clk2'event and clk2 = '1' then if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then data_out <= data_in_d1; end if; end if; end process;end 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;--Clock Domain Crossing Adapterclock_0entity clock_0 is port ( -- inputs: signal master_clk : IN STD_LOGIC; signal master_endofpacket : IN STD_LOGIC; signal master_readdata : IN STD_LOGIC_VECTOR (15 DOWNTO 0); signal master_reset_n : IN STD_LOGIC; signal master_waitrequest : IN STD_LOGIC; signal slave_address : IN STD_LOGIC_VECTOR (3 DOWNTO 0); signal slave_byteenable : IN STD_LOGIC_VECTOR (1 DOWNTO 0); signal slave_clk : IN STD_LOGIC; signal slave_nativeaddress : IN STD_LOGIC_VECTOR (2 DOWNTO 0); signal slave_read : IN STD_LOGIC; signal slave_reset_n : IN STD_LOGIC; signal slave_write : IN STD_LOGIC; signal slave_writedata : IN STD_LOGIC_VECTOR (15 DOWNTO 0); -- outputs: signal master_address : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); signal master_byteenable : OUT STD_LOGIC_VECTOR (1 DOWNTO 0); signal master_nativeaddress : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); signal master_read : OUT STD_LOGIC; signal master_write : OUT STD_LOGIC; signal master_writedata : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); signal slave_endofpacket : OUT STD_LOGIC; signal slave_readdata : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); signal slave_waitrequest : OUT STD_LOGIC );end entity clock_0;architecture europa of clock_0 iscomponent clock_0_master_read_done_sync_module is port ( -- inputs: signal clk : IN STD_LOGIC; signal data_in : IN STD_LOGIC; signal reset_n : IN STD_LOGIC; -- outputs: signal data_out : OUT STD_LOGIC );end component clock_0_master_read_done_sync_module;component clock_0_master_write_done_sync_module is port ( -- inputs: signal clk : IN STD_LOGIC; signal data_in : IN STD_LOGIC; signal reset_n : IN STD_LOGIC;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -