Clock:提供串行接口的时序。Command 输入锁存在时钟的上升沿上。在 STR command 或 protocol 中,address and data 输入锁存在时钟的上升沿,而 data 输出在时钟的下降沿。在 DTR command 或 protocol 中,address and data 输入锁存在时钟的两个沿,data 输出在时钟的两个沿。
可以连续读取,且可在任何时间进行读取,包括在 PROGRAM, ERASE, or WRITE 操作期间。如果正在进行其中任何一项操作,则在执行命令之前,建议先检查 write in progress bit or P/E controller bit。
READ FLAG STATUS REGISTER (70h)
3.5. 写入寄存器操作
在执行 WRITE REGISTER 命令之前,必须执行 WRITE ENABLE 命令将 write enable latch bit 设置为 1。为发起命令,需要驱动 S#低并保持低,直到最后一个 data 字节的第 8 位被锁存,之后它必须被驱动为高;对于 WRITE NONVOLATILE CONFIGURATION REGISTER 命令,S#保持低电平,直到最后一个 data 字节的第 16 位被锁存。对于 extended spi、dual spi 和 quad spi 协议,输入分别在 DQ0, DQ[1:0], and DQ[3:0] 上,后面跟随 data bytes。如果 S#没有被驱动为 HIGH,则命令不执行,flag status register error bits 不设置,并且 Write enable latch 保持为 1。该操作是自定时的,WRITE STATUS REGISTER 的操作持续时间为 tW,WRITE NONVOLATILE CONFIGURATION REGISTER 的操作持续时间为 tNVCR。
3.6. 编程操作(只讲述 PAGE PROGRAM (02h) 和 4-BYTE PAGE PROGRAM (12h))
在启动 PROGRAM 命令之前,必须执行 WRITE ENABLE 命令将 write enable latch bit 设置为 1,为发起命令,需要驱动 S#低并保持低,直到最后一个 data 字节的第 8 位被锁存,之后它必须被驱动为高;如果 S#没有被驱动为 HIGH,则命令不执行,flag status register error bits 不设置,并且 Write enable latch 保持为 1。每个 address bit 被锁存在时钟上升沿期间。当 command 被应用到受保护扇区时,该命令不被执行,write enable latch bit 保持为 1,flag status register bit1 和 bit4 被设置。如果操作超时,write enable latch bit 被复位,program fail bit 置为 1。
Operation Name
Description/Conditions
PAGE PROGRAM (02h)
当操作正在进行时,write in progress bit 置为 1。无论操作是否成功,write enable latch bit 都被清除为 0。The status register and flag status register 能够查询当前操作状态。当操作完成后,write in progress bit 被清除为 0。可以使用 PROGRAM/ERASE SUSPEND 或 PROGRAM/ERASE RESUME 命令暂停或恢复操作。如果最末位地址(即起始地址)的各 bit 并非全为零,那么超出当前 page 范围的所有传输数据都将从本 page 的起始地址进行编程。如果发送到设备的字节数超过最大 page 大小,则先前存储的数据将被丢弃,而本 page 内仅保证最后最大页 page 大小数量的数据字节能够正确编程。如果发送到设备的字节数少于最大 page 大小,则它们将在指定地址正确编程,而不会对本 page 的其他字节产生任何影响。
如果 S#没有被驱动为 HIGH,则不执行该命令,不设置 flag status register error bits,并且 write enable latch bit 仍然设置为 1。对受保护子区域所施加的命令并未被执行。write enable latch bit 仍保持为 1,且 flag status register 的 bit1 和 bit5 被设置。
当操作正在进行时,the program or erase controller bit of the flag status register is set to 0。同时,write in progress bit 设置为 1。当操作完成后,write in progress bit 被清除为 0。无论操作是否成功,write enable latch bit 都被清除为 0。如果操作超时,write enable latch bit 复位,erase error bit 置 1。
status register 和 flag status register 能够查询当前操作状态。当操作完成时,这些寄存器位被清除。
Operation Name
Description/Conditions
SUBSECTOR ERASE (52h/20h)
将选择的 subsector or sector bits 设置为 FFh。subsector 内的任何地址都可以有效输入。每个 address bit 被锁存在时钟上升沿,这个操作可以分别通过 PROGRAM/ERASE SUSPEND 和 PROGRAM/ERASE RESUME 命令暂停和恢复。
SECTOR ERASE (D8h)
BULK ERASE (C7h/60h)
Sets the device bits to FFh。如果有 sector 被锁定,则不执行该命令。write enable latch bit 仍然被设置为 1,并且 flag status register bit 1 和 bit5 被设置。
STARTUPE2 #( .PROG_USR("FALSE"), // Activate program event security feature. Requires encrypted bitstreams. .SIM_CCLK_FREQ(0.0) // Set the Configuration Clock Frequency(ns) for simulation. ) STARTUPE2_inst ( .CFGCLK(), // 1-bit output: Configuration main clock output .CFGMCLK(), // 1-bit output: Configuration internal oscillator clock output .EOS(), // 1-bit output: Active high output signal indicating the End Of Startup. .PREQ(), // 1-bit output: PROGRAM request to fabric output .CLK(0), // 1-bit input: User start-up clock input .GSR(0), // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name) .GTS(0), // 1-bit input: Global 3-state input (GTS cannot be used for the port name) .KEYCLEARB(1), // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM) .PACK(1), // 1-bit input: PROGRAM acknowledge input .USRCCLKO(outSpiClk), // 1-bit input: User CCLK input // For Zynq-7000 devices, this input must be tied to GND .USRCCLKTS(0), // 1-bit input: User CCLK 3-state enable input // For Zynq-7000 devices, this input must be tied to VCC .USRDONEO(1), // 1-bit input: User DONE pin output control .USRDONETS(1) // 1-bit input: User DONE 3-state enable output );