📄 nand01gr3b.vhd
字号:
-- -- _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/-- _/ _/ ____________________________________________ -- _/ _/ / / -- _/_/ _/ / NAND01GR3B / -- _/_/_/ _/ / / -- _/_/ _/ / 1Gbit / -- _/_/ _/ / 8 bit, 2112 Byte Page, 1.8 V, NAND / -- _/ _/ / / -- _/ _/ / VHDL Behavioral Model / -- _/ _/ / Version 3.0 / -- _/_/ _/ / /-- _/_/_/ _/ / Copyright (c) 2006 STMicroelectronics / -- _/_/_/ _/ /___________________________________________/ -- _/_/_/_/_/ _/ -- ----******************************************************************************----******************************************************************************----******************************************************************************----******************************************************************************---- CORE_SC ENTITY ----******************************************************************************----******************************************************************************----******************************************************************************----******************************************************************************--LIBRARY IEEE; Use IEEE.std_logic_1164.all; Use IEEE.std_logic_TextIO.all; Use IEEE.std_logic_arith.all;LIBRARY Work; Use work.UserData.all; Use work.CUIcommandData.all; Use work.data.all; Use work.TimingData.all; Use work.StringLib.all; Use work.BlockLib.all; Use work.CoreComponents.all; Use work.ResFunctions.all;ENTITY NANDxxxxxBx IS GENERIC ( devId : natural; -- used in multiChip devices isDebug : boolean; MemoryFile_Name : String; timingCheck_on : Boolean ); PORT ( I_O : inout IObus_type; E_N : in std_logic; R_N : in std_logic; W_N : in std_logic; AL : in std_logic; CL : in std_logic; WP_N : in std_logic; PRL : in std_logic; RB_N : out std_logic; Vss : in real; Vdd : in real ); END NANDxxxxxBx ;ARCHITECTURE behavior OF NANDxxxxxBx IS-- === Internal Signal Declaration ===-- Data BusSignal DataBusOut : IObus_type;Signal DataBusBUFFER : IObus_type;-- Address BusSignal hold_Address : Address_type;Signal hold_block : BlockAddress_type;-- Address BusSignal hold_Command : IObus_type;-- Chip EnableSignal CE_N : Std_Logic;-- Data Write EnableSignal WLE_N : Std_Logic;-- Data Read Enable Signal RLE_N : Std_Logic;-- Address Latch EnableSignal ALE_N : Std_Logic;-- Command Latch EnableSignal CLE_N : Std_Logic;-- Internal RB_N signal (needed because RB_N is an OUT mode signal, and can't be read by Core's components)Signal RB_N_int : std_logic ;-- Interface signals delayed (for syncronization with RLE_N)signal E_N_d1, R_N_d1, W_N_d1 : std_logic;-- is Voltage in RangeSignal VddOK : Std_Logic := '1';-- ResetSignal ResetSoftware : Boolean := false; signal PowerUp : Boolean := false;Signal Reset : Boolean := false; -- is TRUE if ResetSoftware or PowerUp are true Signal isInit : boolean := true;-- ==== Signal Declaration ==== ---- Kernel SignalSignal Kernel_Status : Status_type;Signal Kernel_Report : KernelReportGuarded KernelReport_type register;Signal Kernel_CUIcommand : Event := False;Signal Kernel_CommandDecode : CommandGuarded Command_type register := None;Signal Kernel_IseqCommand : IndexCommandGuarded IndexCommand_type register := 1;Signal Kernel_ReadEvent : Event := False;Signal Kernel_ErrorEvent : EventGuarded ErrorEvent register := 'X';Signal Kernel_VerifyEvent : EventTimeGuarded TimeEvent register := 0 ns;Signal Kernel_LatchAddress : TimeEvent := 0 ns;Signal Kernel_ReadTaskComplete : EventTimeGuarded TimeEvent register := 0 ns;Signal kernel_ReadEventComplete : EventTimeGuarded TimeEvent register := 0 ns;Signal Kernel_PageComplete : PageBufferEventGuarded PageBufferEvent register ;Signal Kernel_BlockLockComplete: EventTimeGuarded TimeEvent register := 0 ns;Signal Kernel_ReadStatusRegComplete : EventTimeGuarded TimeEvent register := 0 ns;-- Output Buffer Signal Buffer_task : BufferTaskGuarded BufferTask_type register;-- Read Array Signal Read_Status : Status_type;Signal Read_mode : ReadModeGuarded ReadMode_type register;Signal Read_task : ReadTaskGuarded ReadTask_type register;-- Page Buffer Signal PageBuffer_task : PageBufferTaskGuarded PageBufferTask_type register;-- Page Program Shared Variable isPageProgramCmdCode : Boolean := false;Shared Variable isFirstData : Boolean := false;-- ProgramSignal Program_task : ProgramTaskGuarded ProgramTask_type register;Signal Program_Status : StatusGuarded Status_type register ;-- Cache operationssignal CacheStatus : CacheStatusGuarded CacheStatus_type register; Shared Variable isFirstCPoperation : Boolean := true;-- Copy Back ProgramShared Variable isCopyBackCmdCode : Boolean := false;Shared Variable waitFirstCopyBackAddress : boolean := false;Signal updateCopyBackMode : EventTimeGuarded TimeEvent register := 0 ns;Signal isCopyBackMode : boolean := false;Signal notActive_cmd : boolean := false;-- Cache ReadShared Variable isSR_underCACHEREAD : Boolean := false;-- Block Lock Signal BlockLock_task : BlockLockTaskGuarded BlockLockTask_type register;Signal BlockLock_Status : Status_type;Signal BlockMode_on : boolean := false; signal BlockBoundary : BlockBoundary_type;Signal SetBlocks : EventTimeGuarded TimeEvent register;Shared Variable isLatchBlockAddress : boolean := false;Shared Variable isStartBlockAddress : Boolean := false;Shared Variable isEndBlockAddress : Boolean := false;-- EraseSignal Erase_task : EraseTaskGuarded EraseTask_type register;Signal Erase_Status : Status_type;-- Electronic SignatureSignal Signature_data : SignatureData_type;-- Status RegisterSignal StatusRegister_task : StatusRegisterTaskGuarded StatusRegisterTask_type register;-- DC Digitalizer SignalSignal VDD_check : Boolean := false; -- Support DeclarationConstant ColumnAddress0 : Std_Logic_vector(ColumnAddress_range) := (Others => '0' );-- output message used in multichip deviceConstant chip_indication : string := "";-- ===================== Architecture ============================== Begin ---------------------------------------------------------------------------- Component Istantation ------------------------------------------------------------------------------------------------------------------------ ist_Kernel_entity : Kernel_entity generic map ( devId ) Port map ( VDD, Read_status, CacheStatus, Program_Status, Erase_Status, Kernel_Status, Kernel_Report, Kernel_LatchAddress, Kernel_VerifyEvent, Kernel_ErrorEvent, Read_mode, Reset ); ist_Read_entity : Read_entity Generic map ( isDebug, devId ) Port map ( Read_Status, DataBusBUFFER, hold_block, Signature_data, Read_mode, Kernel_ReadEvent, Read_task, Kernel_ReadTaskComplete, kernel_ReadEventComplete, BlockLock_task, StatusRegister_task, PageBuffer_task, Kernel_PageComplete, Kernel_BlockLockComplete, Kernel_ReadStatusRegComplete, Kernel_Status, Kernel_Report, Reset ); ist_Program_entity : Program_entity Port Map ( Program_Status, Program_Task, BlockLock_task, Kernel_BlockLockComplete, PageBuffer_task, Kernel_PageComplete, VDD_check, Kernel_CUIcommand, Reset ); ist_BlockLock_entity : BlockLock_entity generic map ( devId ) Port map ( BlockLock_task, BlockBoundary, Kernel_BlockLockComplete, BlockLock_status, WP_N, SetBlocks, BlockMode_on, Reset ); ist_TimingCheck_entity : TimingCheck_entity Port map ( I_O, E_N, R_N, W_N, AL, CL, WP_N, RB_N_int, timingCheck_on ); ist_OutputBuffer_entity : OutputBuffer_entity Port map ( DataBusBUFFER, DataBusOut, RLE_N, Buffer_Task, Reset ); ist_Erase_entity : Erase_Entity port map ( Erase_Status, Erase_Task, PageBuffer_task, Kernel_PageComplete, BlockLock_task, BlockBoundary, Kernel_BlockLockComplete, Kernel_CUIcommand, Reset ); ist_StatusRegister_entity : StatusRegister_entity generic map ( devId ) port map ( Kernel_status, CacheStatus, Read_Status, Kernel_ReadStatusRegComplete, StatusRegister_task, Kernel_CUIcommand, WP_N, Reset ); ist_ElectronicSignature_entity : ElectronicSignature_entity port map ( Signature_data, Reset ); ist_PageBuffer_entity : PageBuffer_entity Generic map ( MemoryFile_Name, 0 ) Port map ( PageBuffer_task, Kernel_PageComplete, CacheStatus, Program_task, Reset, Program_Status );-------------------------------------------------------------- Command Recognition (CUI decoders istantation) --------------------------------------------------------------CUIdec_ReadArraySetup: CUIdecoder_entity generic map (ReadCmdCode_cmd, ReadCmdCode_seqAddr, ReadCmdCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_ReadArrayCfm: CUIdecoder_entity generic map (ReadCfmCode_cmd, ReadCfmCode_seqAddr, ReadCfmCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_RandomDataOutputSetup: CUIdecoder_entity generic map (RandomDataOutputCmdCode_cmd, RandomDataOutputCmdCode_seqAddr, RandomDataOutputCmdCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_RandomDataOutputCfm: CUIdecoder_entity generic map (RandomDataOutputCfmCode_cmd, RandomDataOutputCfmCode_seqAddr, RandomDataOutputCfmCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_CacheRead: CUIdecoder_entity generic map (CacheRead_cmd, CacheRead_seqAddr, CacheRead_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_ExitCacheRead: CUIdecoder_entity generic map (ExitCacheRead_cmd, ExitCacheRead_seqAddr, ExitCacheRead_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_PageProgramSetup: CUIdecoder_entity generic map (PageProgramCmdCode_cmd, PageProgramCmdCode_seqAddr, PageProgramCmdCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_PageProgramCfm: CUIdecoder_entity generic map (PageProgramCfmCode_cmd, PageProgramCfmCode_seqAddr, PageProgramCfmCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_RandomDataInput: CUIdecoder_entity generic map (RandomDataInput_cmd, RandomDataInput_seqAddr, RandomDataInput_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_CopyBackProgramSetup: CUIdecoder_entity generic map (CopyBackProgramCmdCode_cmd, CopyBackProgramCmdCode_seqAddr, CopyBackProgramCmdCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_CopyBackProgramCfm: CUIdecoder_entity generic map (CopyBackProgramCfmCode_cmd, CopyBackProgramCfmCode_seqAddr, CopyBackProgramCfmCode_CmdLen, true) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, isCopyBackMode);CUIdec_CacheProgramCfm: CUIdecoder_entity generic map (CacheProgramCfmCode_cmd, CacheProgramCfmCode_seqAddr, CacheProgramCfmCode_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_BlockErase: CUIdecoder_entity generic map (BlockErase_cmd, BlockErase_seqAddr, BlockErase_CmdLen, false) port map (hold_Command, Kernel_CUIcommand, Kernel_VerifyEvent, Kernel_CommandDecode, Kernel_IseqCommand, notActive_cmd);CUIdec_ReadStatusRegister: CUIdecoder_entity generic map (ReadStatusRegister_cmd, ReadStatusRegister_seqAddr, ReadStatusRegister_CmdLen, false)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -