📄 clock_0.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;entity 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 entity clock_0_master_read_done_sync_module;architecture europa of clock_0_master_read_done_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_write_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 entity clock_0_master_write_done_sync_module;architecture europa of clock_0_master_write_done_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_edge_to_pulse is port ( -- inputs: signal clock : 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_edge_to_pulse;architecture europa of clock_0_edge_to_pulse is signal data_in_d1 : STD_LOGIC;begin process (clock, reset_n) begin if reset_n = '0' then data_in_d1 <= std_logic'('0'); elsif clock'event and clock = '1' then if (std_logic_vector'("00000000000000000000000000000001")) /= std_logic_vector'("00000000000000000000000000000000") then data_in_d1 <= data_in; end if; end if; end process; data_out <= data_in XOR data_in_d1;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_FSM is port ( -- inputs: signal master_read_done_token : IN STD_LOGIC; signal master_write_done_token : IN STD_LOGIC; signal slave_clk : IN STD_LOGIC; signal slave_read : IN STD_LOGIC; signal slave_reset_n : IN STD_LOGIC; signal slave_write : IN STD_LOGIC; -- outputs: signal slave_read_request : OUT STD_LOGIC; signal slave_waitrequest : OUT STD_LOGIC; signal slave_write_request : OUT STD_LOGIC );end entity clock_0_slave_FSM;architecture europa of clock_0_slave_FSM is signal internal_slave_read_request : STD_LOGIC; signal internal_slave_write_request : STD_LOGIC; signal next_slave_read_request : STD_LOGIC; signal next_slave_state : STD_LOGIC_VECTOR (2 DOWNTO 0); signal next_slave_write_request : STD_LOGIC; signal slave_state : STD_LOGIC_VECTOR (2 DOWNTO 0);begin process (slave_clk, slave_reset_n) begin if slave_reset_n = '0' then internal_slave_read_request <= std_logic'('0'); elsif slave_clk'event and slave_clk = '1' then if true then internal_slave_read_request <= next_slave_read_request; end if; end if; end process; process (slave_clk, slave_reset_n) begin if slave_reset_n = '0' then internal_slave_write_request <= std_logic'('0'); elsif slave_clk'event and slave_clk = '1' then if true then internal_slave_write_request <= next_slave_write_request; end if; end if; end process; process (slave_clk, slave_reset_n) begin if slave_reset_n = '0' then slave_state <= std_logic_vector'("001"); elsif slave_clk'event and slave_clk = '1' then if true then slave_state <= next_slave_state; end if; end if; end process; process (internal_slave_read_request, internal_slave_write_request, master_read_done_token, master_write_done_token, slave_read, slave_state, slave_write) begin case slave_state is -- synthesis parallel_case when std_logic_vector'("001") => --read request: go from IDLE state to READ_WAIT state if std_logic'(slave_read) = '1' then next_slave_state <= std_logic_vector'("010"); slave_waitrequest <= std_logic'('1'); next_slave_read_request <= NOT(internal_slave_read_request); next_slave_write_request <= internal_slave_write_request; elsif std_logic'(slave_write) = '1' then next_slave_state <= std_logic_vector'("100"); slave_waitrequest <= std_logic'('1'); next_slave_read_request <= internal_slave_read_request; next_slave_write_request <= NOT(internal_slave_write_request); else next_slave_state <= slave_state; slave_waitrequest <= std_logic'('0'); next_slave_read_request <= internal_slave_read_request; next_slave_write_request <= internal_slave_write_request; end if; -- when std_logic_vector'("001") when std_logic_vector'("010") => --stay in READ_WAIT state until master passes read done token if std_logic'(master_read_done_token) = '1' then next_slave_state <= std_logic_vector'("001"); slave_waitrequest <= std_logic'('0'); else next_slave_state <= std_logic_vector'("010"); slave_waitrequest <= std_logic'('1'); end if; next_slave_read_request <= internal_slave_read_request; next_slave_write_request <= internal_slave_write_request; -- when std_logic_vector'("010") when std_logic_vector'("100") => --stay in WRITE_WAIT state until master passes write done token if std_logic'(master_write_done_token) = '1' then next_slave_state <= std_logic_vector'("001"); slave_waitrequest <= std_logic'('0'); else next_slave_state <= std_logic_vector'("100"); slave_waitrequest <= std_logic'('1'); end if; next_slave_read_request <= internal_slave_read_request; next_slave_write_request <= internal_slave_write_request; -- when std_logic_vector'("100") when others => next_slave_state <= std_logic_vector'("001"); slave_waitrequest <= std_logic'('0'); next_slave_read_request <= internal_slave_read_request; next_slave_write_request <= internal_slave_write_request; -- when others end case; -- slave_state end process; --vhdl renameroo for output signals slave_read_request <= internal_slave_read_request; --vhdl renameroo for output signals slave_write_request <= internal_slave_write_request;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_read_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_read_request_sync_module;architecture europa of clock_0_slave_read_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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -