📄 nandflash.vhd
字号:
----------------------------------------------------------------------------------------------
--
-- VHDL file generated by X-HDL - Revision 3.2.52 Mar. 28, 2005
-- Tue Nov 25 16:36:54 2008
--
-- Input file : D:/3/TEST_NANDFLASH.v
-- Design name : TEST_NANDFLASH
-- Author :
-- Company :
--
-- Description :
--
--
----------------------------------------------------------------------------------------------
--
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
ENTITY TEST_NANDFLASH IS
PORT (
clk : IN std_logic;
-- rst_n : IN std_logic;
ctrl : IN std_logic_vector(3 DOWNTO 0);
wr_n : IN std_logic;
NFL_CLE : OUT std_logic;
NFL_ALE : OUT std_logic;
NFL_nCE : OUT std_logic;
NFL_nWE : OUT std_logic;
NFL_nRE : OUT std_logic;
NFL_DATA : INOUT std_logic_vector(7 DOWNTO 0);
ID : OUT std_logic_vector(31 DOWNTO 0));
END ENTITY TEST_NANDFLASH;
ARCHITECTURE translated OF TEST_NANDFLASH IS
SIGNAL NFL_DATA_OUT : std_logic_vector(7 DOWNTO 0);
SIGNAL NF_CLE : std_logic;
SIGNAL NF_ALE : std_logic;
SIGNAL NF_nCE : std_logic;
SIGNAL NF_nWE : std_logic;
SIGNAL NF_nRE : std_logic;
SIGNAL NANDFLASHID0 : std_logic_vector(7 DOWNTO 0);
SIGNAL NANDFLASHID1 : std_logic_vector(7 DOWNTO 0);
SIGNAL NANDFLASHID2 : std_logic_vector(7 DOWNTO 0);
SIGNAL NANDFLASHID3 : std_logic_vector(7 DOWNTO 0);
CONSTANT NFLASH_READID_CMD : std_logic_vector(7 DOWNTO 0) := "10010000";
CONSTANT NFLASH_READID_ADDR : std_logic_vector(7 DOWNTO 0) := "00000000";
SIGNAL nf_ord_read1 : std_logic;
SIGNAL nf_ord_read2 : std_logic;
SIGNAL nf_ord_readid : std_logic;
SIGNAL nf_ord_reset : std_logic;
SIGNAL nf_ord_pageprogram : std_logic;
SIGNAL nf_ord_blockerase : std_logic;
SIGNAL nf_ord_blockprotect1 : std_logic;
SIGNAL nf_ord_blockprotect2 : std_logic;
SIGNAL nf_ord_blockprotect3 : std_logic;
SIGNAL nf_ord_readstatus : std_logic;
SIGNAL nf_ord_readprotectionstate : std_logic;
-- SIGNAL DF_state : std_logic_vector(1 DOWNTO 0);
SIGNAL delayCNT : std_logic_vector(2 DOWNTO 0);
SIGNAL delay_maxCNT : std_logic_vector(2 DOWNTO 0);
SIGNAL LoadDFcnt : std_logic;
--SIGNAL incDFcnt : std_logic;
SIGNAL delay_ok : std_logic;
SIGNAL repeat_addr_CNT : std_logic_vector(2 DOWNTO 0);
SIGNAL repeat_addr_maxCNT : std_logic_vector(2 DOWNTO 0);
SIGNAL LoadRPcnt_addr : std_logic;
--SIGNAL incRPcnt_addr : std_logic;
SIGNAL repeat_addr_ok : std_logic;
SIGNAL repeat_addr_en : std_logic;
SIGNAL repeat_rdata_CNT : std_logic_vector(2 DOWNTO 0);
SIGNAL repeat_rdata_maxCNT : std_logic_vector(2 DOWNTO 0);
SIGNAL LoadRPcnt_rdata : std_logic;
--SIGNAL incRPcnt_rdata : std_logic;
SIGNAL repeat_rdata_ok : std_logic;
SIGNAL repeat_rdata_en : std_logic;
SIGNAL temp_xhdl7 : std_logic_vector(7 DOWNTO 0);
CONSTANT OP_IDLE : integer := 0;
CONSTANT OP_START : integer := 1;
CONSTANT OP_CLE : integer := 2;
CONSTANT OP_WRITE_CLE : integer := 3;
CONSTANT OP_NULL0 : integer := 4;
CONSTANT OP_ALE : integer := 5;
CONSTANT OP_WRITE_ALE_L : integer := 6;
CONSTANT OP_WRITE_ALE_H : integer := 7;
CONSTANT OP_NULL1 : integer := 8;
CONSTANT OP_READ_DATA_L : integer := 9;
CONSTANT OP_READ_DATA_H : integer := 10;
SIGNAL OP_STATE : std_logic_vector(7 DOWNTO 0);
SIGNAL NFL_CLE_xhdl1 : std_logic;
SIGNAL NFL_ALE_xhdl2 : std_logic;
SIGNAL NFL_nCE_xhdl3 : std_logic;
SIGNAL NFL_nWE_xhdl4 : std_logic;
SIGNAL NFL_nRE_xhdl5 : std_logic;
SIGNAL ID_xhdl6 : std_logic_vector(31 DOWNTO 0);
BEGIN
NFL_CLE <= NFL_CLE_xhdl1;
NFL_ALE <= NFL_ALE_xhdl2;
NFL_nCE <= NFL_nCE_xhdl3;
NFL_nWE <= NFL_nWE_xhdl4;
NFL_nRE <= NFL_nRE_xhdl5;
ID <= ID_xhdl6;
nf_ord_read1 <= (((NOT ctrl(3) AND NOT ctrl(2)) AND NOT ctrl(1)) AND NOT ctrl(0)) AND NOT wr_n ;
nf_ord_read2 <= (((NOT ctrl(3) AND NOT ctrl(2)) AND NOT ctrl(1)) AND ctrl(0)) AND NOT wr_n ;
nf_ord_readid <= (((NOT ctrl(3) AND NOT ctrl(2)) AND ctrl(1)) AND NOT ctrl(0)) AND NOT wr_n ;
nf_ord_reset <= (((NOT ctrl(3) AND NOT ctrl(2)) AND ctrl(1)) AND ctrl(0)) AND NOT wr_n ;
nf_ord_pageprogram <= (((NOT ctrl(3) AND ctrl(2)) AND NOT ctrl(1)) AND NOT ctrl(0)) AND NOT wr_n ;
nf_ord_blockerase <= (((NOT ctrl(3) AND ctrl(2)) AND NOT ctrl(1)) AND ctrl(0)) AND NOT wr_n ;
nf_ord_blockprotect1 <= (((NOT ctrl(3) AND ctrl(2)) AND ctrl(1)) AND NOT ctrl(0)) AND NOT wr_n ;
nf_ord_blockprotect2 <= (((NOT ctrl(3) AND ctrl(2)) AND ctrl(1)) AND ctrl(0)) AND NOT wr_n ;
nf_ord_blockprotect3 <= (((ctrl(3) AND NOT ctrl(2)) AND NOT ctrl(1)) AND NOT ctrl(0)) AND NOT wr_n ;
nf_ord_readstatus <= (((ctrl(3) AND NOT ctrl(2)) AND NOT ctrl(1)) AND ctrl(0)) AND NOT wr_n ;
nf_ord_readprotectionstate <= (((ctrl(3) AND NOT ctrl(2)) AND ctrl(1)) AND NOT ctrl(0)) AND NOT wr_n ;
ID_xhdl6 <= NANDFLASHID0 & NANDFLASHID1 & NANDFLASHID2 & NANDFLASHID3 ;
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk = '1') THEN
NFL_CLE_xhdl1 <= NF_CLE;
NFL_ALE_xhdl2 <= NF_ALE;
NFL_nCE_xhdl3 <= NF_nCE;
NFL_nWE_xhdl4 <= NF_nWE;
NFL_nRE_xhdl5 <= NF_nRE;
END IF;
END PROCESS;
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk = '1') THEN
IF (LoadDFcnt = '1') THEN
delayCNT <= delay_maxCNT;
delay_ok <= '0';
ELSE
IF (delayCNT > "000") THEN
delayCNT <= delayCNT - "001";
delay_ok <= '0';
ELSE
IF (delayCNT = "000") THEN
delayCNT <= "000";
delay_ok <= '1';
END IF;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk = '0') THEN
IF (LoadRPcnt_addr = '1') THEN
repeat_addr_CNT <= repeat_addr_maxCNT;
repeat_addr_ok <= '0';
ELSE
IF (repeat_addr_CNT = "000") THEN
repeat_addr_CNT <= "000";
repeat_addr_ok <= '1';
ELSE
IF ((repeat_addr_CNT > "000") AND (repeat_addr_en = '1')) THEN
repeat_addr_CNT <= repeat_addr_CNT - "001";
repeat_addr_ok <= '0';
END IF;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk = '0') THEN
IF (LoadRPcnt_rdata = '1') THEN
repeat_rdata_CNT <= repeat_rdata_maxCNT;
repeat_rdata_ok <= '0';
ELSE
IF (repeat_rdata_CNT = "000") THEN
repeat_rdata_CNT <= "000";
repeat_rdata_ok <= '1';
ELSE
IF ((repeat_rdata_CNT > "000") AND (repeat_rdata_en = '1')) THEN
repeat_rdata_CNT <= repeat_rdata_CNT - "001";
repeat_rdata_ok <= '0';
END IF;
END IF;
END IF;
END IF;
END PROCESS;
temp_xhdl7 <= "ZZZZZZZZ" WHEN NFL_nWE_xhdl4 = '1' ELSE NFL_DATA_OUT;
NFL_DATA <= temp_xhdl7 ;
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk = '0') THEN
IF (NOT NFL_nWE_xhdl4 = '1') THEN
IF (NFL_CLE_xhdl1 = '1') THEN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -