1.4.6 Flash Memory Block with Data Storage Client
In this scenario, the Flash Memory Block (FMB) is configured with a data storage client, which exposes the USER_* interface of the Flash Memory System. This enables complete access to the Flash Memory System interface.
In this case, the FMB serves two purposes, Initialization and Save functionality as well as allowing access to the Flash Memory System. The arbitration between these two functions is handled inside the INIT IP, the arbitration is a simple priority scheme; if any initialization or save activity is in progress then the ownership is given to the INIT IP and removed from the USER.
This implies that the user must be certain that an initialization or save activity is not triggered during their Flash Memory System access; if so, data may be corrupted. Furthermore, a user must also monitor the INITDONE signal to ensure that the INITIP is not busy before attempting to access the Flash Memory System.
In a typical situation, the INITCLK and USRCLK are connected together and exposed on the FMB top level as a single clock port (INIT_CLK). In this case, the USRCLK is exposed and the user can connect any frequency less than 100 Mhz (max frequency of the Flash Memory System) to this port. It has no relationship with any of the other clocks in the system.
To avoid any clock dependency issues between the 2 frequencies any CLIENT_UPDATE
(for save) requests given to the FMB should be held until the INIT_DONE is
deasserted, indicating that it has accepted the transaction.
