📄 nandflash.vhd
字号:
NFL_DATA_OUT <= "10010000";
ELSE
IF (NFL_ALE_xhdl2 = '1') THEN
NFL_DATA_OUT <= "00000000";
ELSE
NFL_DATA_OUT <= "ZZZZZZZZ";
END IF;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS (NFL_nRE_xhdl5)
BEGIN
IF (NFL_nRE_xhdl5'EVENT AND NFL_nRE_xhdl5 = '1') THEN
IF (repeat_rdata_CNT = "011") THEN
NANDFLASHID0 <= NFL_DATA;
ELSE
IF (repeat_rdata_CNT = "010") THEN
NANDFLASHID1 <= NFL_DATA;
ELSE
IF (repeat_rdata_CNT = "001") THEN
NANDFLASHID2 <= NFL_DATA;
ELSE
NANDFLASHID3 <= NFL_DATA;
END IF;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS (clk)
VARIABLE repeat_addr_en_xhdl8 : std_logic;
VARIABLE repeat_rdata_en_xhdl9 : std_logic;
BEGIN
IF (clk'EVENT AND clk = '0') THEN
IF (nf_ord_readid = '1') THEN
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_START, 8);
repeat_addr_maxCNT <= "000";
LoadRPcnt_addr <= '1';
repeat_rdata_maxCNT <= "011";
LoadRPcnt_rdata <= '1';
ELSE
LoadRPcnt_addr <= '0';
LoadRPcnt_rdata <= '0';
CASE OP_STATE IS
WHEN CONV_STD_LOGIC_VECTOR(OP_IDLE, 8) =>
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_IDLE, 8);
WHEN CONV_STD_LOGIC_VECTOR(OP_START, 8) =>
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_CLE, 8);
delay_maxCNT <= "010";
LoadDFcnt <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_CLE, 8) =>
LoadDFcnt <= '0';
IF (delay_ok = '1') THEN
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_WRITE_CLE, 8);
ELSE
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_CLE, 8);
END IF;
WHEN CONV_STD_LOGIC_VECTOR(OP_WRITE_CLE, 8) =>
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_NULL0, 8);
WHEN CONV_STD_LOGIC_VECTOR(OP_NULL0, 8) =>
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_ALE, 8);
WHEN CONV_STD_LOGIC_VECTOR(OP_ALE, 8) =>
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_L, 8);
delay_maxCNT <= "001";
LoadDFcnt <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_L, 8) =>
repeat_addr_en_xhdl8 := '0';
LoadDFcnt <= '0';
IF (delay_ok = '1') THEN
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_H, 8);
ELSE
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_L, 8);
END IF;
WHEN CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_H, 8) =>
repeat_addr_en_xhdl8 := '1';
IF (repeat_addr_ok = '1') THEN
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_NULL1, 8);
ELSE
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_L, 8);
delay_maxCNT <= "001";
LoadDFcnt <= '1';
END IF;
WHEN CONV_STD_LOGIC_VECTOR(OP_NULL1, 8) =>
repeat_addr_en_xhdl8 := '0';
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_READ_DATA_L, 8);
delay_maxCNT <= "001";
LoadDFcnt <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_READ_DATA_L, 8) =>
repeat_rdata_en_xhdl9 := '0';
LoadDFcnt <= '0';
IF (delay_ok = '1') THEN
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_READ_DATA_H, 8);
ELSE
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_READ_DATA_L, 8);
END IF;
WHEN CONV_STD_LOGIC_VECTOR(OP_READ_DATA_H, 8) =>
repeat_rdata_en_xhdl9 := '1';
IF (repeat_rdata_ok = '1') THEN
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_IDLE, 8);
ELSE
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_READ_DATA_L, 8);
delay_maxCNT <= "001";
LoadDFcnt <= '1';
END IF;
WHEN OTHERS =>
OP_STATE <= CONV_STD_LOGIC_VECTOR(OP_IDLE, 8);
END CASE;
END IF;
END IF;
repeat_addr_en <= repeat_addr_en_xhdl8;
repeat_rdata_en <= repeat_rdata_en_xhdl9;
END PROCESS;
PROCESS (OP_STATE)
BEGIN
CASE OP_STATE IS
WHEN CONV_STD_LOGIC_VECTOR(OP_IDLE, 8) =>
NF_CLE <= '0';
NF_ALE <= '0';
NF_nCE <= '1';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_START, 8) =>
NF_CLE <= '0';
NF_ALE <= '0';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_CLE, 8) =>
NF_CLE <= '1';
NF_ALE <= '0';
NF_nCE <= '0';
NF_nWE <= '0';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_WRITE_CLE, 8) =>
NF_CLE <= '1';
NF_ALE <= '0';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_NULL0, 8) =>
NF_CLE <= '0';
NF_ALE <= '0';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_ALE, 8) =>
NF_CLE <= '0';
NF_ALE <= '1';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_L, 8) =>
NF_CLE <= '0';
NF_ALE <= '1';
NF_nCE <= '0';
NF_nWE <= '0';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_WRITE_ALE_H, 8) =>
NF_CLE <= '0';
NF_ALE <= '1';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_NULL1, 8) =>
NF_CLE <= '0';
NF_ALE <= '0';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN CONV_STD_LOGIC_VECTOR(OP_READ_DATA_L, 8) =>
NF_CLE <= '0';
NF_ALE <= '0';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '0';
WHEN CONV_STD_LOGIC_VECTOR(OP_READ_DATA_H, 8) =>
NF_CLE <= '0';
NF_ALE <= '0';
NF_nCE <= '0';
NF_nWE <= '1';
NF_nRE <= '1';
WHEN OTHERS =>
NF_CLE <= '0';
NF_ALE <= '0';
NF_nCE <= '1';
NF_nWE <= '1';
NF_nRE <= '1';
END CASE;
END PROCESS;
END ARCHITECTURE translated;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -