基于AMBA APB总线的Nand Flash控制器的设计(2)
- UID
- 1029342
- 性别
- 男
|
基于AMBA APB总线的Nand Flash控制器的设计(2)
APB接口模块中包含多个寄存器,各个寄存器的功能:Addr_Length_Reg是地址长度寄存器,用于锁存Addr_Length信号(Addr_Length是长度信号,表示将要传送的数据长度,该数据长度可以自行定义由APB总线输入,较为灵活,可以拷贝不同长度的数据或程序);Read_Type_Reg是读类型寄存器,用于锁存APB总线的Read_Type信号(Read_Type是读类型信号,标志读取数据时的方式,Read_Type为0时是单通道读数据,为1时是双通道读数据);Flash_Addr_Reg 是Flash地址寄存器,用于锁存Flash_Addr信号(Flash_Addr是Flash读操作的起始地址);Read_Enable_Reg是读使能寄存器,用于锁存APB总线的Read_Enable信号(Read_Enable是使能信号,当Read_Enable置1时,开始从Flash中读取数据,直到数据长度等于Addr_Length_Reg中的数据长度值)。
4 Flash控制模块
本设计采用的Flash支持标准SPI接口,最高时钟频率可达120 MHz。本设计支持对Flash的读操作分为单通道方式和双通道方式,分别如图4、图5所示。
Flash控制器对于Flash的读操作通过状态机实现。状态机负责整个模块的状态控制,完成对Nand Flash的读、写、发命令字、发地址等状态控制操作。寄存器堆包括当前状态寄存器、下一状态寄存器、命令寄存器、地址寄存器、数据长度寄存器、数据接收寄存器、地址发送状态寄存器、命令发送状态寄存器和数据接收使能寄存器。当前状态寄存器和下一状态寄存器分别寄存当前状态和下一状态;命令寄存器和地址寄存器分别寄存发给Nand Flash的命令字和地址;数据长度寄存器寄存当前传输数据的个数;两个32位数据接收寄存器轮流交替接收数据;地址发送状态寄存器和命令发送状态寄存器分别标示地址和命令的发送完成与否;两个数据接收使能寄存器标示是否可以接收数据,对应于两个数据接收寄存器。
状态机部分包括9个状态,分别是Idle、Send_Command、Send_Address_S、Receive_Data_A_S、Receive_Data_B_S、Send_Address_D、Send_M、Receive_Data_A_D和Receive_Data_B_D,用以发出对Nand Flash的控制操作信号。其状态转换关系如图6所示。
|
|
|
|
|
|