Creating the core system
After spending some time (well a lot of time) getting to know my way around Libero Project Manager it was time to get started creating my own arm 7 system. So I fired up Libero and from within Libero opened up Core console and created the following system.
As you can see from the above screen shot this system uses the follow key features
CoreMP7 (Arm7 core)
CoreMemCTRL (used by ARM7 CPU to access external memory)
CoreSPI (SPI unit)
CoreI2C (I2C unit)
Core16550 (UART)
CoreTimer (16bit timer)
CoreGPIO (General purpose Input / Output)
CoreWatchdog (Watch dog timer)
CoreInterrupt (Interrupt controller unit)
Linking the core system to the outside world
After creating the arm7 system within core console we need to link it to the outside world, this is done from within libero project manager. The complete arm7 system contains the following key blocks.
SOC_TOP.vhdl (Top level vhdl file that connects the system together)
arm7 (Core console arm7 generated system)
CLKGEN (Module used to configure the system clocks)
ramcore (Used to hold qvga screen data )
qvga_complete (Top level vhdl file that links all the qvga screen driver code together)
counter (Counts the number of x pixel that have been displayed on the qvga screen)
address_count (Controls the ramcore address lines after 32 x pixles have been display it increments the address line by one)
The block diagram of the complete arm7 system shows how these key blocks fit together
Click on the link below to download the complete libero source project