设计模块的外接端口主要有:
与APB接口相连的信号端口,包括PWRITE、PSEL、HRESETn、PADDR、PENABLE、HCLK、PWDATA、PRDATA、PSLVERR、PREADY;
与QSPI接口相连的信号端口,
包括spi_sdi0、spi_sdi1、spi_sdi2、spi_sdi3(这四个信号为DUT的输入信号,数据由外部输入进DUT),
spi_sdo0、spi_sdo1、spi_sdo2、spi_sdo3(这四个信号是DUT的输出信号,数据由DUT输出至设备);
spi_csn0、spi_csn1、spi_csn2、spi_csn3(这四个信号表示总线传输有效,拉低表示开始传输,低有效,总线在整个传输过程中,它一直持续拉低);
spi_oe0、spi_oe1、spi_oe2、spi_oe3(这四个信号表示通道使能信号,当此信号为1时候,代表对应的spi_sdo通道的数据有效,DUT内部利用这4个信号控制spi的工作模式,单线还是多线模式。当spi_oe信号为1时,对应总线输出数据);
spi_clk表示时钟信号(此时钟信号是DUT内部经过分频后的信号,将此时钟传输给设备,HCLK信号为从apb端传进DUT的时钟信号);
events_o表示DUT内部中断,其连接到QSPI接口的中断上,将内部中断信号引出。
寄存器:
ADDR:0x00 REGISTER:SPI_CTRL
[31:12] REVERSE RW
[11:8] CS WO
[7:5] REVERSE RW
[4] SRST WO SW reset(clear FIFO),此复位只清除FIFO中的数据
[3] QWR WO Quad-SPI Write,在Quad模式下运行,即正常的4线模式的写
[2] QRD WO Quad-SPI Read,在Quad模式下运行,即正常的4线模式的读
[1] WR WO NQuad-SPI Write,在非Quad模式下运行,即单线线模式的写
[0] RD WO NQuad-SPI Read,在非Quad模式下运行,即单线线模式的读
ADDR:0x04 REGISTER:SPI_STATUS
[31:12] REVERSE RW
[28:24] TXELEMS RO 在TX FIFO中元素的个数
[23:21] REVERSE RW
[20:16] RXELEMS RO 在RX FIFO中元素的个数
[23:21] REVERSE RW
[6:0] STATUS RO 总线状态:1、IDLE; 2、CMD; 4、ADDR; 16、DUMMY; 32、DATA_TX; 64、DATA_RX
ADDR:0x08 REGISTER:SPI_CLKDIV
[31:8] REVERSE RW
[7:0] CLKDIV RW 分频电路通过此寄存器数值将时钟分频
ADDR:0x0C REGISTER:SPI_CMD
[31:28] RW commond命令模式:2、PAGE_PROGRAMMING; 3、READ_DATA 4、WRITE_DISABLE 6、WRITE_ENABLE
ADDR:0x10 REGISTER:SPI_ADR
[31:0] RW 地址值
ADDR:0x14 REGISTER:SPI_LEN
[31:16] DATALEN RW 发送的data数据长度,数据长度为0-8-128(每次递增8)
[15:14] REVERSE RW
[13:8] ADDRLEN RW 发送的addr地址长度,地址长度为0-8-16-24-32
[7:6] REVERSE RW
[5:0] CMDLEN RW 发送的cmd命令长度,命令长度为0-8-16-24-32
一般传输的时候,传输的长度都是8或者16bit
ADDR:0x18 REGISTER:SPI_DUM
[31:16] DUMMYWR RW 写的地址与数据之间的等待周期0-8-16-24-32.....-128
[15:0] DUMMYRD RW 读的地址与数据之间的等待周期0-8-16-24-32.....-128
ADDR:0x1C REGISTER:SPI_TXFIFO
[31:0] TX RW 写数据的FIFO,
ADDR:0x20 REGISTER:SPI_RXFIFO
[31:0] RX RW 读数据的FIFO
ADDR:0x24 REGISTER:SPI_INTCFG
[31] EN RW 1、enable SPI interrupt 0、disable SPI interrupt
[30:13] REVERSE RW
[12:8] RXTH RW 指定触发RXFIFO中断的阈值,1-4
[7:5] REVERSE RW
[4:0] TXTH RW 指定触发TXFIFO中断的阈值,1-6
ADDR:0x28 REGISTER:SPI_INTSTA
[31:2] REVERSE RW
[1] RXINT RO 1:SPI RX interrupt occurs 2:SPI RX interrupt don’t occur
[0] TXINT RO 1:SPI TX interrupt occurs 2:SPI TX interrupt don’t occur
功能描述:
apb接口先将DUT进行配置,然后将要写的数据写进寄存器中,写进寄存器的数据会根据设置的配置信息通过qspi总线将数据根据地址和命令将他们都发送到总线上,传输到device端。如果是写数据,device端将数据保存下来,如果是读数据,device端将先前保存的数据通过总线发送出去。
command命令支持4种模式,PAGE_PROGRAMMING、READ_DATA 、 WRITE_DISABLE、WRITE_ENABLE。PAGE_PROGRAMMING即一般的数据写操作,将数据发送给device,READ_DATA即读数据,此命令一般在写过数据之后再执行,将device中存的数据读出,WRITE_DISABLE和WRITE_ENABLE都只传输cmd命令,无实际地址和数据的传递。
addr地址几乎没有什么限制,32位长。
dummy周期在读数据的地址和数据之间以及写数据的地址和数据之间都会有dummy周期,此周期数可以在寄存器中配置,为0-128。
data数据几乎没有什么限制,32位长。
以上都可以在传输过程中在LEN寄存器中配置长度。一般都是4线传输,可以通过寄存器配置为单线传输,单线传输的时候,DUT内部将1、2、3的总线输出使能端置0屏蔽,使得除了一根总线外,其他总线输出数据无效。
1、数据格式可配置,各个数据位数可配置
2、可以4线或者单线传输
3、可以产生内部中断信号
4、寄存器配置功能
5、从device中读写读数据
6、可单独配置时钟和传输速度(寄存器可配置范围:0-128)