Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

(8 points) Assume that you have four (4) ROM chips organized as 16Kx8 with signa

ID: 2316550 • Letter: #

Question

(8 points) Assume that you have four (4) ROM chips organized as 16Kx8 with signals OE, CE, A13.0, D.0, and Vpp (similar to one shown in figure 14-14 on page 432). Assume you would like to implement all ROM externally, show the connectivity between the 8051 and those chips to allow the implementation of a complete 64K ROM address space. Make sure to show all signals (i.e. PSEN, address lines, etc) to implement this system correctly (i.e. as shown in figure 14-14). You should also indicate the addresses associate each external ROM chip. 13.0, D^7.0, and Vpp (simlar to one shown in figure

Explanation / Answer

The last part is to use it from the application. Typically I have a header file like the one below where I have the addresses defined:

/**

* ile

* rief Interface for the Non-Volatile-Memory

* uthor Erich Styger

*

* This provides an interface to store and retrieve data from the on-chip memory.

*/

#ifndef CONFIGNVM_H_

#define CONFIGNVM_H_

#define NVMC_FLASH_START_ADDR    0x1FC00 /* NVRM_Config, start address of configuration data in flash */

#define NVMC_FLASH_ERASED_UINT8 0xFF

#define NVMC_FLASH_ERASED_UINT16 0xFFFF

#define NVMC_REFLECTANCE_DATA_START_ADDR (NVMC_FLASH_START_ADDR)

#define NVMC_REFLECTANCE_DATA_SIZE        (8*2*2) /* maximum of 8 sensors (min and max) values with 16 bits */

#define NVMC_REFLECTANCE_END_ADDR         (NVMC_REFLECTANCE_DATA_START_ADDR+NVMC_REFLECTANCE_DATA_SIZE)

#define NVMC_SUMO_DATA_START_ADDR         (NVMC_REFLECTANCE_END_ADDR)

#define NVMC_SUMO_DATA_SIZE               (4) /* 4 bytes of data */

#define NVMC_SUMO_END_ADDR                (NVMC_SUMO_DATA_START_ADDR+NVMC_SUMO_DATA_SIZE)

uint8_t NVMC_SaveReflectanceData(void *data, uint16_t dataSize);

void *NVMC_GetReflectanceData(void);

uint8_t NVMC_SaveSumoData(void *data, uint16_t dataSize);

void *NVMC_GetSumoData(void);

#endif /* CONFIGNVM_H_ */