Core8051s EmbProc HW Tutorial UG
Core8051s EmbProc HW Tutorial UG
Trademarks
Actel and the Actel logo are registered trademarks of Actel Corporation.
Adobe and Acrobat Reader are registered trademarks of Adobe Systems, Inc.
All other products or brand names mentioned are trademarks or registered trademarks of their respective
holders.
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Requirements for Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1 Design Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
A Product Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Actel Customer Technical Support Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Actel Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Contacting the Customer Technical Support Center . . . . . . . . . . . . . . . . . . . . . . . . 55
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 3
Introduction
This tutorial shows how to develop a simple 8051-based embedded processor system using Actel design tools. This
design is suitable as a starting point for developing an embedded system.
It is assumed that the reader is familiar with the FPGA design flow using Actel tools. Actel provides tutorials for both
Libero® Integrated Design Environment (IDE) and SmartDesign on the Actel website in addition to training classes.
After completing this tutorial you will be familiar with the hardware design flow for creating an 8051-based embedded
system using SmartDesign. This includes the following steps:
• Instantiating and configuring the processor, memory, and peripherals
• Connecting peripherals and defining an address map
• Generating RTL and the FPGA programming image ready for software development
This tutorial is designed to support the following three development board designs:
• Cortex™-M1–Enabled Fusion Development Kit (M1AFS-DEV-KIT-SCS) board
• Fusion Embedded Development Kit (M1AFS-EMBEDDED-KIT) board
• Fusion Advanced Development Kit (M1AFS-ADV-DEV-KIT) board
In general, most tutorial steps apply to all three target boards. Steps which are specific to a given target board will be
clearly indicated.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 5
Introduction
6 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
1
Design Overview
This design targets the Actel Fusion® mixed-signal FPGA. Key features of Fusion are its integrated analog-to-digital
converter (ADC) and analog I/O, embedded flash memory and SRAM, and support for advanced I/O standards. The
analog inputs can provide voltage, current, and temperature measurements. The analog outputs can provide gate drive
for external analog switches. The Fusion flash memory is used to create NVM storage for the application code.
This design implements an 8051-based microcontroller system. In addition to the Core8051s microcontroller core, this
system consists of the following peripherals:
• CoreUARTapb
• CoreTimer (two instances)
• CoreWatchdog
• CoreGPIO
• CoreInterrupt
• CoreAI (interface to the Fusion Analog Block)
These peripherals are interfaced using the APB3 bus. The CoreAPB3 bus component provides an APB interface that
supports up to 16 APB slaves. There is one APB master, which sends out a PSEL signal to CoreAPB3. This is used by
CoreAPB3, along with appropriate bits from the PADDR bus, to decode the appropriate PSELS signal. All 16 APB3
slots occupy 256 memory locations. In Core8051s, the APB3 interface uses the upper 4 KB of the memory address space
from 0xF000 through 0xFFFF.
The memory system consists of the following elements:
• 64 KB of NVM code memory. This memory is internal to the FPGA and occupies addresses 0x0000 through 0xFFFF
of the code memory space.
• 64 KB of SRAM code memory. This memory is external to the FPGA and occupies addresses 0x0000 through 0xFFFF
of the code memory space. This SRAM is intended for use with the debugger for debugging purposes.
• 8 KB of SRAM data memory. This memory is internal to the FPGA; however, it occupies addresses 0x0000 through
0x0FFF of the 8051’s external data memory space.
• 52 KB of SRAM data memory. This memory is external to the FPGA and occupies addresses 0x1000 through 0xFEFF
of the 8051’s external data memory space. The APB3 interface used to connect peripherals to Core8051s occupies the
upper 4 KB of external data memory.
• Control and interface logic
Note: Both the M1AFS-DEV-KIT-SCS and M1AFS-ADV-DEV-KIT boards contain flash memory devices external
to the FPGA. These memory devices are not used in the design and are biased by the respective designs to be
inactive.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 7
Design Overview
Address
Core8051s
Control
and NVM
Decode Code SRAM
MEM
8 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
2
Building the Design
It is assumed that the reader is familiar with the FPGA design flow using Actel tools. Actel provides tutorials for both
Libero IDE and SmartDesign on the Actel website in addition to training classes.
The microcontroller and its peripherals are grouped in this design into a component called Core8051S_sub. Similarly,
the memories and associated control logic are grouped into a component called Memory. These two components are
then instantiated onto a top-level entity along with other system level components (Figure 2-1).
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 9
Building the Design
10 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 11
Building the Design
The debug block is necessary if you want to use the JTAG interface for debugging your design.
Trace RAM is not supported in the FlashPro3 debugger, except as an additional cost option. There is no need to
include it in the design unless your Flashpro3 is licensed for this feature. For additional information, visit the
Core8051 web page from http://www.actel.com/products/ip/ by selecting DirectCore then Core8051s. Scroll down
the page to find the 8051 Trace Debugger Upgrade.
The number of hardware triggers / breakpoints is set at four.
The APB databus width is selectable at 8, 16, or 32 bits wide. It must be wide enough to accommodate the width of
the widest peripheral in the design. Core GPIO currently needs to have a 32 inputs and outputs in order to simulate
properly. This implies that APB3 bus width should be set to 32-bits.
The second DPTR is not currently supported by C compilers. Assembly language programs may make use of it. The
second DPTR is useful for memory block moves.
Core8051s has an option to include or omit multiply and divide and the decimal adjust (DA) instructions in order
to reduce the number of tiles used. Caution should be exercised in omitting these instructions when using a C
compiler.
MEMPSACKI is an input that asserts wait states when reading code memory. The system designer has an option
to use the MEMPSACKI signal or use a fixed number of wait states. The internal Flash memory block in the Fusion
FPGA (NVM) used in this design provides a busy signal that can be inverted and connected to MEMPSACKI.
MEMACKI is an input that asserts wait states when reading data memory. The system designer has an option to
use the MEMACKI signal or use a fixed number of wait states. The SRAM used in this design does not have a busy/
non-busy signal available, thus two fixed wait states (External Data Memory Stretch Cycles) are used.
3. Create an instance of CoreAPB3.
CoreAPB3 is an AMBA bus interface that is used to connect subsystem cores to Actel's soft processors, such as
Core8051s. The bus interface is easy to use and fully compatible with the APB v3.0 protocol. The core is constructed
to allow easy connection of IP cores in systems built around the Core8051s processor.
In the Libero IDE catalog, under the heading Bus Interfaces, find and instantiate an instance of CoreAPB3.
Configure this core as indicated below (Figure 2-3 on page 13):
• All slots selected
• APB Slot size: 256 locations
12 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 13
Building the Design
In the Libero IDE catalog, under the heading Peripherals, find and instantiate an instance of CoreUARTapb.
Configure this core as indicated below (Figure 2-4):
• TX FIFO: Enabled
• RX FIFO: Enabled
• Configuration: Programmable
• Baud value: 1
• Character size: 8 bits
• Parity: Parity Disabled
• Testbench: Verification
14 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 15
Building the Design
In the Libero IDE catalog, under the heading Peripherals, find and instantiate an instance of CoreTimer. Configure
this core as indicated below (Figure 2-6):
• Width: 16-bit
• Interrupt active level: high
16 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
In the Libero IDE catalog, under the heading Peripherals, find and instantiate an instance of CoreGPIO. Configure
this core as indicated below (Figure 2-7):
• Number of inputs: 32
• Number of outputs: 32
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 17
Building the Design
18 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 19
Building the Design
20 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 21
Building the Design
22 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
Block Port
ExternalMemIf
Core8051s_0 DebugIf
MOVX
RX
CoreUARTapb_0
TX
dataIn[31:0]
CoreGPIO
dataOut[31:0]
CoreInterrupt irqSource3
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 23
Building the Design
24 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 2 – Create the Microcontroller Subsystem
15. A port can be tied low by right-clicking on the port and selecting Tie Low. More than one port can be tied low by
holding down the CTRL key while clicking on each of the ports. After clicking the last of the ports, right-click and
select Tie Low. Tie the signals listed in Table 2-3 low.
Block Port
DDGDON[9:0]
CoreAI
RTCCLK
figSource[7:0]
CoreInterrupt
irqSource[31:5]
16. Select Check Design Rules from the SmartDesign tab in the Libero IDE main menu. Verify that there are no errors.
Floating driver warnings can be ignored. Right-click in the Core8051S_sub canvas and select Generate Design.
17. This concludes the design of the 8051s subsystem (a good time to save your file). Close the Core8051S_sub
component.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 25
Building the Design
26 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 3 – Create the Memory Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 27
Building the Design
28 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 3 – Create the Memory Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 29
Building the Design
30 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 3 – Create the Memory Subsystem
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 31
Building the Design
32 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 3 – Create the Memory Subsystem
7. A port can be tied low by right-clicking on the port and selecting Tie Low. More than one port can be tied low by
holding down the CTRL key while clicking on each of the ports. After clicking the last of the ports, right-click and
select Tie Low. Tie the signals listed in Table 2-4 low.
Block Port
AUX_BLOCK
DATA[31:0]
DISCARD_PAGE
ERASE_PAGE
LOCK
OVERWRITE_PAGE
OVERWRITE_PROT
nvm_if_0 WRITE
PAGE_STATUS
PROGRAM
READ_NEXT
SPARE_PAGE
UNPROT_PAGE
PAGELOSS_PROT
WIDTH[1:0]
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 33
Building the Design
13. Now some additional signals must be promoted to the top level of this block. Right-click on the name of a port or
the port connector and select Promote to Top Level to promote a signal to the top level. Promote the signals in
Table 2-5 to the top level.
Block Port
EXT_RAM_CS_N
EXT_RAM_RD_N
EXT_RAM_WR_N
MEMRD
Mem_decode_0 MEMWR
PSRD
PSWR
A16
SW0
nvm_if_0 NVM_STATUS[1:0]
data_bus_buffer_0 PAD[7:0]
INT_RAM_8KB WD[7:0]
data_read_mux_0 Result[7:0]
14. Now change the names of some top-level ports. Right-click on the name of a port or the port connector, select
Modify Port, and change the port name according to Table 2-6.
34 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 3 – Create the Memory Subsystem
15. In this step you will separate some busses into smaller group by creating slices. To create a slice, right-click on the
name of the port and select Add slice. Enter a slice range (the ending and starting bit positions of the slice). Repeat
this process if additional slices are needed. Create the slices indicated for the ports shown in Table 2-7.
16. In this step you will make the connections between ports for the Memory component. Hold the CTRL key and click
on the first port you want to connect. The port name will be highlighted. Hold the CTRL key and click on the next
port to include in the connection. This next port will be highlighted. When you have highlighted the last port to
connect in the net, right-click on this last port and select Connect. This will connect the highlighted ports together.
Make the connections listed in Table 2-8.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 35
Building the Design
17. Select Check Design Rules from the SmartDesign tab in the Libero IDE main menu. Verify that there are no errors.
Floating driver warnings can be ignored.Right-click in the Memory canvas and select Generate Design.
18. This concludes the design of the Memory subsystem (a good time to save your file). Close the Memory subsystem
component.
36 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 4 – Complete the Top Level
2. Instantiate the Core8051s subsystem in the top level by right-clicking on the Core8051s component in the Design
Explorer window and selecting Instantiate in M1AFS...TOP (the exact file name depends on your board).
3. Instantiate the Memory subsystem in the top level by right-clicking on the Memory component in the Design
Explorer window and selecting Instantiate in <name of your root file>.
4. Click on the SmartDesign tab at the top of the Libero IDE. Select Add Port to add a new top-level port. A box will
open. Set the direction to input. Enter EXTCLK and click OK.
5. In the catalog, under Basic Blocks, click Register. Select the shift register tab (Figure 2-21 on page 38). Select Serial-
In/Serial-Out for the variation. Set a width of 2. Select Active Low for the async clear. Select rising clock. Select
active low shift enable. Then click Generate. Give this core the name “reset_delay.” Click OK.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 37
Building the Design
38 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 4 – Complete the Top Level
Select External I/O from the Clock Source menu. For the Primary frequency, enter 12.000 (MHz). Click the
Generate button. A box will open. Name this component clk_pll. Click OK. Close the Static PLL – Create Core
box. An instance of the PLL will appear on the top canvas.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 39
Building the Design
8. Some signals must be promoted to the top level of this block. Right-click on the name of a port or the port connector
and select Promote to Top Level to promote a signal to the top level. Promote the signals in Table 2-10 to the top
level.
Note: Ensure that the External Memory Interface Ports and the Debug Interface Ports are expanded on the
Core8051S_sub component when making the top-level signal promotions shown in Table 2-10.
Block Port
MEMADDR[15:0]
TCK
TDI
TMS
Core8051S_sub TRSTN
TDO
RX
TX
Analog Pads
SW0
EXT_RAM_CS_N
EXT_RAM_RD_N
Memory_0
EXT_RAM_WR_N
A16
EXT_DATA[7:0]
reset_delay_0 Shiften
40 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 4 – Complete the Top Level
10. Click on the SmartDesign tab at the top of the Libero IDE menu. Select Add Port to add a new top-level port. A
box will open. Set the direction to Output. Type in the name of the new port. Click OK.
If your target is the M1AFS-DEV-KIT-SCS board, create the following additional top-level ports:
• SRBS1_N
• Flash_HCE_N
• Flash_LCE_N
• SRBS2_N
• Flash_WE_N
• Flash_RST_N
• Flash_OE_N
• SRBS3_N
• SRSB0_N
• MEMADDR19
• dataOut[3:0]
• dataIn[3:0]
If your target is the M1AFS-EMBEDDED-KIT board, create the following additional top-level ports:
• SRAM_BHE0_N
• SRAM_BHE1_N
• SRAM_BLE0_N
• SRAM_BLE1_N
• MEMADDR17
• dataOut[3:0]
• dataIn[3:0]
If your target is the M1AFS-ADV-DEV-KIT board, create the following additional top-level ports:
• SRAM_BHE0_N
• SRAM_BHE1_N
• SRAM_BLE0_N
• SRAM_BLE1_N
• SRAM_CE2
• Flash_CE0
• Flash_CE1
• Flash_CE2
• Flash_CE3
• Flash_CE4
• Flash_CE5
• Flash_RST_N
• Flash_OE_N
• Flash_WE_N
• Flash_VPEN
• Flash_BYTE_1
• Flash_BYTE_2
• MEMADDR17
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 41
Building the Design
• MEMADDR18
• MEMADDR19
• dataOut[3:0]
• dataIn[3:0]
11. Right-click on the ADD[17:0] port of the Memory_0 block and select Add Slice. Set the slice range from 15 to 0.
Right-click, again, on the ADDR[17:0] port of the Memory_0 block and select Add Slice. Set the slice range from
17 to 16.
12. Right-click on the dataOut[31:0] port of the Core8051s_sub_0 block and select Add Slice. Set the slice range from
3 to 0. Right-click, again, on the dataOut[31:0] port of the Core8051s_sub_0 block and select Add Slice. Set the
slice range from 31 to 4.
13. Right-click on the dataIn[31:0] port of the Core8051s_sub_0 block and select Add Slice. Set the slice range from 3
to 0. Right-click, again, on the dataIn[31:0] port of the Core8051s_sub_0 block and select Add Slice. Set the slice
range from 31 to 4.
14. A port can be tied low by right-clicking on the port and selecting Tie Low. More than one port can be tied low by
holding down the CTRL key while clicking on each of the ports. After clicking the last of the ports, right-click and
select Tie Low.
• If the target is the M1AFS-DEV-KIT-SCS board, tie the signals listed in Table 2-11 low.
Block Port
BREAKIN
MEMBANK[3:0]
Core8051s_sub_0
dataIn[31:4]
EXTIRQ
Memory_0 ADDR[17:16]
MEM_ADDR19
top level
SRSB0_N
reset_delay_0 Shiften
• If the target is the M1AFS-EMBEDDED-KIT board, tie the signals listed in Table 2-12 low.
Block Port
BREAKIN
MEMBANK[3:0]
Core8051s_sub_0
EXTIRQ
dataIn[31:4]
Memory_0 ADDR[17:16]
MEM_ADDR17
top level
SRAM_BLE0_N
reset_delay_0 Shiften
42 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 4 – Complete the Top Level
• If the target is the M1AFS-ADV-DEV-KIT board, tie the signals listed in Table 2-13 low.
Block Port
BREAKIN
MEMBANK[3:0]
Core8051s_sub_0
EXTIRQ
dataIn[31:4]
Memory_0 ADDR[17:16]
MEM_ADDR17
MEM_ADDR18
top level MEM_ADDR19
SRAM_BLE0_N
Flash_RST_N
reset_delay_0 Shiften
15. A port can be tied high by right-clicking on the port and selecting Tie High. More than one port can be tied high
by holding down the CTRL key while clicking on each of the ports. After clicking the last of the ports, right-click
and select Tie High.
• If the target is the M1AFS-DEV-KIT-SCS board, tie the signals listed in Table 2-14 high.
Block Port
Core8051s_sub_0 MEMACKI
OADIVRST
clk_pll_0
POWERDOWN
Flash_HCE_N
Flash_LCE_N
SRBS1_N
SRBS2_N
top level
SRBS3_N
Flash_WE_N
Flash_RST_N
Flash_OE_N
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 43
Building the Design
• If the target is the M1AFS-EMBEDDED-KIT board, tie the signals listed in Table 2-15 high.
Block Port
Core8051s_sub_0 MEMACKI
OADIVRST
clk_pll_0
POWERDOWN
SRAM_BHE0_N
top level SRAM_BHE1_N
SRAM_BLE1_N
• If the target is the M1AFS-ADV-DEV-KIT board, tie the signals listed in Table 2-16 high.
Block Port
Core8051s_sub_0 MEMACKI
OADIVRST
clk_pll_0
POWERDOWN
SRAM_BHE0_N
SRAM_BHE1_N
SRAM_BLE1_N
SRAM_CE2
Flash_BYTE_1
Flash_BYTE_2
Flash_WE_N
top level Flash_OE_N
Flash_CE0
Flash_CE1
Flash_CE2
Flash_CE3
Flash_CE4
Flash_CE5
Flash_VPEN
44 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 4 – Complete the Top Level
16. In this step you will make various connections. To connect two (or more) ports, hold the CTRL key and click on the
first port. The port name will be highlighted. Locate the second port to be included in the net. Hold the CTRL key
and click on this port. The port name will be highlighted. Repeat for as many ports as will be added to the net. Right-
click on the last port added and select Connect. This will connect these ports together. Make the port connections
listed in Table 2-17.
17. Select Check Design Rules from the SmartDesign tab in the Libero IDE main menu. Verify that there are no errors.
Right-click in the root canvas and select Generate Design.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 45
3
Verifying the Design
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 47
Verifying the Design
7. Undock the waveform window by clicking on the undock button in the waveform window. This is the icon with the
box and upper right arrow. In the resulting waveform window (Figure 3-3), click File > Save Format. Click
Waveform formats in the Save Contents box. Click OK (click Yes if prompted to overwrite).
48 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
4
Implementing the Design
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 49
Implementing the Design
50 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Step 3 – Programming the FPGA Using FlashPro
7. Select Actions > Constraint > Clock from the SmartTime Constraint Editor menu to open the Create Clock
Constraint Dialog box. Select the EXTCLK clock beginning from the pull-down menu in the Create Clock
Constraint dialog box.
If your target is the M1AFS-DEV-KIT-SCS board, enter 48 MHz; otherwise enter 50 MHz. Click OK.
8. Click on the Layout button. Answer OK. Wait for the Layout button to turn green.
9. Click on the Programming file button. Click the Finish button in the FlashPoint – Programming File Generator
box. Click Finish. Click Generate in the Generate Programming Files box. Answer Yes if prompted to replace files.
Close Designer after the Programming Files button turns green. Answer Yes if prompted to save changes.
The generated file will include the FPGA design plus the firmware for the 64KB NVM block. Later, FlashPro can
be used to update the contents of the NVM block.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 51
Implementing the Design
52 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Summary
8. Momentarily push the reset button on the board. The terminal program should show a sign-on message. Click any
key on your keyboard to send a character to the board. The board should respond by printing voltage, current, and
temperature measurements on the board (Figure 4-4).
Summary
In this tutorial you have created a Core8051s-based microcontroller system on an Actel Fusion device. This design
includes on-chip flash code memory, on-chip (logically external) data memory, and an interface to off-chip SRAM that
is used for both code and data memory.
This design can serve as the basic starting point for other Core8051s designs. Only the CoreAI function and the on-chip
flash memory are specific to the Fusion family.
If these are removed, this design can be ported to other families such as ProASIC®3 and IGLOO.® The specific details
are outside of the scope of this document. In general, this can be accomplished by creating a Libero IDE project for the
new target family. Then import the *.cxf file for each of the three components: *.TOP, Core8051S_sub, and Memory.
Regenerate these components in SmartDesign.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 53
A
Product Support
Actel backs its products with various support services including Customer Service, a Customer Technical Support
Center, a web site, an FTP site, electronic mail, and worldwide sales offices. This appendix contains information about
contacting Actel and using these support services.
Customer Service
Contact Customer Service for non-technical product support, such as product pricing, product upgrades, update
information, order status, and authorization.
From Northeast and North Central U.S.A., call 650.318.4480
From Southeast and Southwest U.S.A., call 650. 318.4480
From South Central U.S.A., call 650.318.4434
From Northwest U.S.A., call 650.318.4434
From Canada, call 650.318.4480
From Europe, call 650.318.4252 or +44 (0) 1276 401 500
From Japan, call 650.318.4743
From the rest of the world, call 650.318.4743
Fax, from anywhere in the world 650.318.8044
Website
You can browse a variety of technical and non-technical information on Actel’s home page, at www.actel.com.
Email
You can communicate your technical questions to our email address and receive answers back by email, fax, or phone.
Also, if you have design problems, you can email your design files to receive assistance. We constantly monitor the email
account throughout the day. When sending your request to us, please be sure to include your full name, company name,
and your contact information for efficient processing of your request.
The technical support email address is tech@actel.com.
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 55
Product Support
Phone
Our Technical Support Center answers all calls. The center retrieves information, such as your name, company name,
phone number and your question, and then issues a case number. The Center then forwards the information to a queue
where the first available application engineer receives the data and returns your call. The phone hours are from 7:00 A.M.
to 6:00 P.M., Pacific Time, Monday through Friday. The Technical Support numbers are:
650.318.4460
800.262.1060
Customers needing assistance outside the US time zones can either contact technical support via email (tech@actel.com)
or contact a local sales office. Sales office listings can be found at www.actel.com/contact/offices/index.html.
56 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Index
*.pdc file 6 D
data storage client 28
A database buffer 31
Actel debug block 11
electronic mail 55 decode logic 29
telephone 56 design
web-based technical support 55 building 9
website 55 implementing 49
overview 7
B
bidirectional buffers 31, 32 F
block diagram 8 flash memory block
configuring 28
C creating 28
contacting Actel FlashPro programmer 51
customer service 55
electronic mail 55 H
telephone 56 HDL wrappers 29
web-based technical support 55 hex files 6
Core8051s
configuring 11 I
instance 10 I/O attribute editor 50
Core8051s designs 53 IGLOO designs 53
CoreAI
configuring 19, 20, 21 L
instance 19 Libero IDE
CoreAPB3 create project 9
configuring 13
create instance 12
M
CoreGPIO
memory map
configuring 17
modify 22
instance 16
memory subsystem
CoreInterrupt
creating 26
configuring 18
memory system 7
instance 17
microcontroller subsystem 10
CoreTimer
multiplexer 29
configuring 16
MUX 29
instance 15
CoreUARTapb
configuring 14 P
instance 13 peripherals 7, 22
CoreWatchdog pin assignments 50
configuring 15 place-and-route 50
instance 15 ports
customer service 55 change name 24, 34
make connections 25, 35, 45
tie high 43, 44
Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs 57
Index
58 Core8051s Embedded Processor Hardware Development Tutorial for Fusion Mixed-Signal FPGAs
Actel is the leader in low-power and mixed-signal FPGAs and offers the most comprehensive portfolio of system
and power management solutions. Power Matters. Learn more at www.actel.com.
50200155-1/3.09