
ARCHITECTURE :Memory Architecture
6LatticeMico8 Processor Reference Manual
PROM Space
The PROM memory region contains the program code that will be executed
by the LatticeMico8 microcontroller core and is accessible via its instruction
fetch engine. The size of the PROM memory region can be configured to
accommodate 256, 512, 1024, 2048, or 4096 instruction opcodes. By default
the memory region is located within the LatticeMico8 microcontroller. The
memory regions can also be configured to be external to the LatticeMico8
microcontroller.
When the PROM memory region is internal to the microcontroller, it is
connected to the LatticeMico8 instruction fetch engine via a dedicated high-
speed bus that fetches one instruction opcode per clock cycle. There is no
instruction set support to write to internal PROM. When the PROM memory
region is external to the microcontroller, it is accessed by the master
WISHBONE interface within the LatticeMico8 instruction fetch engine. This
WISHBONE interface has a 8-bit data bus and it takes three 8-bit WISHBONE
accesses to fetch one LatticeMico8 instruction opcode. The instruction fetch
latency is now dictated by the system WISHBONE latency and the latency of
the PROM memory. The minimum instruction fetch latency is 12 clock cycles.
Table 3 shows the WISHBONE interface signals. For more information about
the WISHBONE System-On-Chip (SoC) Interconnection Architecture for
Portable IP Cores, as it is formally known, refer to the OPENCORES.ORG
Web site at www.opencores.org/projects.cgi/web/wishbone.
Table 3: PROM WISHBONE Interface Signals
Name Width Direction Description
I_CYC_O 1 Output A new LatticeMico8 instruction fetch request is initiated by asserting this
signal. This signal remains asserted until I_ACK_I is asserted, which
indicates the completion of the request.
I_STB_O 1 Output A new LatticeMico8 instruction fetch request is initiated by asserting this
signal. This signal may be valid only for the first cycle.
I_CTI_O 2 Output Always has a value 2’b00
I_BTE_O 3 Output Always has a value 3’b000
I_ADR_O 32 Output The address output array I_ADR_O( ) is used to pass a binary address.
I_WE_O 1 Output Always has a value 1’b0
I_SEL_O 4 Output Always has a value 4’b1111
I_DAT_O 8 Output Unused
I_LOCK_O 1 Output Unused (signal exists, but it is not implemented)
I_ACK_I 1 Input When asserted, the signal indicates the normal termination of a bus cycle
and that an instruction is available on I_DAT_I bus.
I_ERR_I 1 Input Unused (signal exists, but it is not implemented)
I_RTY_I 1 Input Unused (signal exists, but it is not implemented)
I_DAT_I 8 Input One byte of the LatticeMico8 18-bit instruction opcode is available on this
bus when I_ACK_I is asserted. It takes three WISHBONE transactions to
complete one LatticeMico8 instruction fetch.