AC388: SmartFusion2 Dynamic Configuration of AHB Bus Matrix App Note

Application Note AC388
SmartFusion2 SoC FPGA – Dynamic Configuration
of AHB Bus Matrix
Table of Contents
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ed
ed
Purpose . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . .
Design Requirements . . . . . . . . . . . .
Design Description . . . . . . . . . . . . .
Hardware Implementation . . . . . . . . . .
Software Implementation . . . . . . . . . .
Running the Design . . . . . . . . . . . . .
Conclusion . . . . . . . . . . . . . . . . .
Appendix A - Design and Programming Files
List of Changes . . . . . . . . . . . . . . .
Purpose
.1
.1
.5
.6
.8
12
14
16
17
18
Introduction
rs
This application note describes how to configure the weight values dynamically for the advanced high
performance bus (AHB) bus matrix masters to access the AHB bus matrix slave using the weighted
round-robin (WRR) arbitration in a SmartFusion2 device.
Su
pe
SmartFusion®2 system-on-chip (SoC) field programmable gate array (FPGA) devices support the AHB
bus matrix, which is a multi-layer AHB bus matrix. SmartFusion2 devices AHB bus matrix has ten
masters and seven direct slaves. This application note describes how to configure the weight values
dynamically for the AHB bus matrix masters to access the AHB bus matrix slave using the weighted
round-robin (WRR) arbitration. This application note also provides a reference design that has two fabric
masters connected to the FIC_0 and FIC_1 interfaces. These two fabric masters can access a single
slave eSRAM1 using the WRR arbitration.
May 2014
© 2014 Microsemi Corporation
1
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
AHB Bus Matrix Overview
The connection of the masters and slaves to the AHB bus matrix is shown in Figure 1. The AHB bus
matrix allows multiple masters to access a single slave through an arbitration mechanism.
ARM Cortex -M3
Processor
S
IDC
MSS DDR Bridge
D
I
Cache
Controller
S
D
eNVM_0
AHB
Controller
System
Controller
G
DS
IC
eNVM_1
AHB
Controller
eSRAM_0
AHB
Controller
eSRAM_1
AHB
Controller
AHB Bus
HPDMA
MM2 MM1 MM0
MM9
MM3
MM4
MS4
MS2
MS3
AHB Bus Matrix
(10x7)
MM5 MM6
MS0
MS1
ed
ed
MS6
MM7
MS5
PDMA
MM8
AHB To AHB Bridge with Address
Decoder
Triple Speed
Ethernet MAC
FIC_0
FIC_1
SysReg
APB _0
APB _1
FIC_2
USB
Arbitration
rs
Figure 1 • AHB Bus Matrix Block Diagram with all the 10 Masters and 7 Slaves (10x7)
pe
Arbitration is performed at two levels when more than one master attempts to access a single slave at
the same time. At the first level, the fixed higher priority masters (processor bus masters MM0, MM1,
MM2, and MM9) are evaluated for any access request to the slave. The non-processor buses are then
evaluated in a round-robin fashion for any access request to the slave. The arbitration mechanism uses
pure round-robin and the WRR techniques.
The priority levels of each master are listed in Table 1.
Table 1 • Master’s Priority During Slave Arbitration
MM No
IC-Bus
Su
MM0
Masters
Priority
2 Fixed
MM1
D-Bus
1 Fixed
MM2
S-Bus
3 Fixed
MM3
HPDMA
4 WRR
MM4
FIC_0
4 WRR
MM5
FIC_1
4 WRR
MM6
MAC
4 WRR
MM7
PDMA
4 WRR
MM8
USB
4 WRR
MM9
G
4 Fixed
2
Introduction
Pure Round-Robin Arbitration
This is the default arbitration mode after reset wherein the programmable weight value for each of the
master is 1. In this mode, the arbitration scheme for each slave port is identical. The processor masters
have higher priority over the non-processor masters. Each non-processor master accessing a slave has
equal priority based on a round-robin fashion.
For locked transactions, the master issuing the lock retains ownership of the slave until the locked
transaction is complete. The priorities for masters in pure round-robin arbitration is shown in Figure 2 on
page 3.
ed
ed
Dcode
M1
Icode
M0
S-Bus
M2
Fixed Priority Masters
Round Robin Masters
pe
USB – M8
HMASTLOCK
rs
System
Controller
M9
HMASTLOCK
HPDMA M3
Su
PDMA – M7
MAC M6
FIC_0 M4
HMASTLOCK
FIC_1 M5
HMASTLOCK
Figure 2 • Pure Round Robin Arbitration Scheme
3
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
WRR Arbitration
In this mode, the Programmable Weight (SW_WEIGHT_<master name>) can be configured to operate
as WRR. The slave arbiter operates on a round-robin basis, with each of the master interfaces having a
maximum of N consecutive access opportunities to the slave in each “round” of arbitration. The value of
N is determined by the programmed weight for the master and the maximum latency of the eSRAM0/1
parameter.
ed
ed
Each master (except the D-Code processor bus) has a programmable weight value that can be
configured from 1 to 32. Maximum latency values for fixed priority masters can be configured from 1 to 8.
Here, the D-Code bus does not need a programmable weight since it has the highest priority. The
arbitration scheme of each slave on WRR arbitration is shown in Figure 3.
Dcode
M1
Icode
M0
HMASTLOCK
System
Controller
M9
HMASTLOCK
rs
Fixed Priority Masters
S-Bus
M2
Round Robin Masters
USB – M8
HPDMA M3
pe
PrgWeight
PrgWeight
PrgWeight
Su
PDMA – M7
PrgWeight
FIC_0
M4
HMASTLOCK
PrgWeight
MAC M6
PrgWeight
FIC_1
M5
HMASTLOCK
Figure 3 • WRR and Fixed priority Slave Arbitration Scheme
Refer to the SmartFusion2 Microcontroller Subsystem User's Guide for more information on AHB Bus
Matrix.
Refer to the Interfacing User Logic with the Microcontroller Subsystem tutorial to understand Libero®
System-on-Chip (SoC) design flow.
4
Design Requirements
Design Requirements
Table 2 lists the design requirements.
Table 2 • Design Requirements
Design Requirements
Description
Hardware Requirements
SmartFusion2 Development Kit
•
FlashPro4 programmer
•
12 V adapter
•
USB A to mini-B cable
Rev C or later
Host PC or Laptop
ed
ed
Any 64-bit Windows Operating System
Software Requirements
Libero® System-on-Chip (SoC)
11.3
SoftConsole
3.4
USB to UART drivers
-
One of the following serial terminal emulation programs:
HyperTerminal
•
TeraTerm
•
PuTTY
Su
pe
rs
•
-
5
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
Design Description
Su
pe
rs
ed
ed
The AHB bus matrix is configured with different weight values for multiple masters to access a single
slave. This configuration can be done in the MSS block using the Libero SoCsoftware. Configuring
weight values for masters from Libero SoC using the AHB Bus Matrix configurator is shown in Figure 4.
Figure 4 • AHB Bus Matrix Configurator
6
Design Description
In this application note, for demonstration purposes, instead of changing the weight values in the AHB
bus matrix configurator, the weight values for Fabric masters are configured at runtime by taking user
entered weight values from HyperTerminal and writing the same to the weight configuration registers
mentioned in Table 3.
Table 3 provides the system registers that are used in this design for configuring the AHB bus matrix.
Table 3 • System Registers
Register
Description
MASTER_WEIGHT0_CR
Configures WRR master arbitration scheme for masters.
MASTER_WEIGHT1_CR
Configures WRR master arbitration scheme for masters.
ed
ed
Figure 5 shows the block diagram of the complete design.
ARM® Cortex™-M3
Processor
eSRAM1
(Data)
M
S
AHB BUS Matrix
M
FIC_0
FIC_1
S
S
pe
MSS
rs
M
AHB lite
Su
Fabric
AHB lite
M
M
Fabric_Master1
Fabric_Master2
Figure 5 • Reference Design Block Diagram
7
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
Hardware Implementation
The example design consists of two AHB masters in the FPGA fabric that write 32-bit data to the AHB
bus matrix slave eSRAM1. The Fabric_Master1 is connected to the slave interface of FIC_0 using
Bypass mode and the Fabric_Master2 is connected to the slave interface of FIC_1using Bypass mode.
Figure 6 and Figure 7 on page 9 show the FIC_0 and FIC_1 configuration with interface type as AHB-Lite
slave and the Use Bypass Mode option selected.
pe
rs
ed
ed
To implement WRR arbitration for fabric masters use only Bypass mode. Refer to the Fabric Interface
Controller chapter of the SmartFusion2 Microcontroller Subsystem User Guide for more information on
Bypass mode. Figure 11 on page 11 gives the SmartDesign window of all the blocks.
Su
Figure 6 • FIC_0 Configuration for Bypass Mode
8
ed
ed
Hardware Implementation
Figure 7 • FIC_1 Configuration for Bypass Mode
rs
MSS is configured with MMUART0 connected to the fabric for the user interface to select the weight
values from HyperTerminal. At this stage, Fabric_Master1 and Fabric_Master2 are running at 100 MHz
clock.
Fabric_Master1 writes 1024 words to the eSRAM1 locations starting from the address 0x20008000 and
Fabric_Master2 writes 1024 words to the eSRAM1 locations starting from the address 0x2000C000.
Interrupt is generated when both masters complete 1024 transfers.
Su
pe
Number of accesses to slave for each master is displayed on HyperTerminal. Residual clock count for
each master in the last access is displayed on HyperTerminal. Number of accesses taken by each
master to complete 1024 transfers depends on weight configured for that master. Lesser weight master
needs more number of accesses and higher weight master needs less number of accesses to transfer
same number of words.
9
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
Simulation Results
Simulation results for Fabric_Master1 and Fabric_Master2 with different weights are shown in Figure 8,
Figure 9, and Figure 10 on page 11.
Fabric_Master1 with weight 30 takes 35 accesses to write 1024 words to eSRAM1.In the last access
number of clock cycles left are 26.
ed
ed
Fabric_Master2 with weight 26 takes 40 accesses to write 1024 words to eSRAM1. In the last access,
number of clock cycles left are 16, as shown in Figure 8.
rs
Figure 8 • Simulation Results for Fabric_Master1 with Weight 30 and Fabric_Master2 with Weight 26
Su
pe
Fabric_Master1 with weight 10 takes 103 accesses to write 1024 words to eSRAM1. In the last access,
number of clock cycles left are 6. Fabric_Master2 with weight 12 takes 86 accesses to write 1024 words
to eSRAM1. In the last access number of clock cycles left are 8, as shown in Figure 9.
Figure 9 • Simulation Results for Fabric_Master1 with Weight 10 and Fabric_Master2 with Weight 12
10
ed
ed
Fabric_Master1 with weight 8 takes 128 accesses to write 1024 words to eSRAM1. In the last access
number of clock cycles left are 0. Fabric_Master2 with weight 7 takes 147 accesses to write 1024 words
to eSRAM1. In the last access, number of clock cycles left are 5, as shown in Figure 10.
Figure 10 • Simulation Results for Fabric_Master1 with Weight 8 and Fabric_Master2 with Weight 7
Su
pe
rs
Figure 11 illustrates the top-level hardware design.
Figure 11 • SmartDesign Window with the Blocks in Hardware Design
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
Software Implementation
The software design performs the following operations:
•
Initializes the AHB bus matrix.
•
Selects the weight values using HyperTerminal session.
•
Displays the eSRAM1 accesses count and residual clock transfer count for each fabric master.
The following API's are implemented in the application layer drivers of the AHB bus matrix:
AHBBus_init(): This API resets all the system registers of the AHB bus matrix mentioned in
Table 3 on page 7.
•
void master_select(): This API takes weight values as inputs and decides the system registers
to be modified. It calculates the value of weight to be set for the system register
MASTER_WEIGHT0_CR/ MASTER_WEIGHT1_CR.
•
void set_weight(): In this API, the weight values calculated are assigned to the register
MASTER_WEIGHT0_CR or the MASTER_WEIGHT1_CR based on the decision made in the
above API.
ed
ed
•
List of firmware drivers used in this application
•
SmartFusion2 MSS GPIO driver
•
SmartFusion2 MSS MMUART driver:
To communicate with the Serial terminal program running on Host PC.
Su
pe
rs
–
12
Software Implementation
Figure 12 gives the flow of sample example implemented in main.c.
Start
Initialize the AHB Bus
matrix, GPIO’s, MMUART
ed
ed
Display the menu for the
selection of weight values
N
Entered are valid
options?
Y
Enable Fabric Masters
Interrupts Y
Keep the masters Idle for
ten clock cycles
Configure the system registers of AHB
Bus Matrix based on the Masters and
the Weight values selected
rs
Display the
Menu options on
HyperTerminal
Su
pe
Start the write operations
from selected masters to
the slave eSRAM1
Wait for Fabric
Interrupts
Clear the Interrupts
Displays No of accesses
given to each master
and clock cycles left
in the last access
Power Off
STOP
Figure 12 • Flow Chart of the Application in the main.c File
13
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
Running the Design
This section describes the board settings and steps to run the design.
Board Settings
Connect the jumpers on the SmartFusion2 SoC FPGA Development Kit, as described in Table 4. While
making the jumper connections, the power supply switch SW7 on the board should be in OFF position.
Table 4 • SmartFusion2 SoC FPGA Development Kit Jumper Settings
Jumper
Pin (From)
Pint (To)
J70, J93, J94, J117, J123, J142, J157, J160, J167, J225, J226, J227 1 (default)
2
J2
3
ed
ed
1 (default)
J23
J129, J133
2 (default)
3
2
3
Steps to Run the Design
Use the following steps to run the design:
1. Connect the FlashPro4 programmer to the FP4 HEADER J59 connector of the SmartFusion2
SoC FPGA Development Kit.
2. Connect one end of the USB mini-B (FTDI interface) cable to the J24 connector provided on the
SmartFusion2 SoC FPGA Development Kit. Connect the other end of the USB cable to the host
PC.
rs
3. Connect the power supply to the J18 connector and change the power supply switch SW7 to ON.
4. USB Driver Installation:
For serial terminal communication through the FTDI (Future Technology Devices
International) mini USB cable, install the FTDI D2XX driver. The drivers and installation guide
can be downloaded from
www.microsemi.com/soc/documents/CDM_2.08.24_WHQL_Certified.zip.
pe
–
5. Make sure that the USB to UART bridge drivers are detected (can be verified in Device Manager
on your system).
Su
6. Start HyperTerminal session with a 57,600 baud rate, 8 data bits, 1 stop bit, no parity, and no flow
control. If HyperTerminal program is not available in the computer system, any free serial terminal
emulation program such as PuTTY or Tera Term can be used. Refer to the Configuring Serial
Terminal Emulation Programs tutorial for configuring HyperTerminal, Tera Term, or PuTTY.
14
Running the Design
ed
ed
7. Program the SmartFusion2 SoC FPGAs Development Kit with the provided programming file
(refer to "Appendix A - Design and Programming Files" section on page 17) using FlashPro
software, and power cycle the board after successful programming. A welcome message is
displayed as shown in Figure 13.
Figure 13 • Welcome Message and Weight Selection in HyperTerminal Session
Su
pe
rs
8. Enter the weight values for the Fabric masters, as shown in Figure 14.
Figure 14 • Entering Weight Values
15
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
ed
ed
9. After entering the weight values, number of accesses taken by each master to write 1024 words
to eSRAM1 and clock cycles left in the last access are displayed on HyperTerminal as shown in
Figure 15 and Figure 16 on page 16.
pe
rs
Figure 15 • Displaying Number of eSRAM1 Accesses
Figure 16 • Displaying Residual Clock Transfers
Su
Note: The menu keeps repeating till the board is powered-down.
Conclusion
This application note shows the capabilities of the in-built AHB bus matrix of SmartFusion2 SoC FPGAs.
The application level drivers described in this application note allow dynamic configuration of the AHB
bus matrix master weight values as per the design requirements.
16
Appendix A - Design and Programming Files
Appendix A - Design and Programming Files
You can download the design files from the Microsemi
www.microsemi.com/soc/download/rsc/?f=M2S_AC388_DF.
SoC
Products
Group
website:
The design file consists of Libero VHDL, SoftConsole software project, and programming files (*.stp) for
SmartFusion2 SoC FPGA Development Kit.
Refer to the Readme.txt file included in the design file for the directory structure description and the
changes to be done in the application code if the project is regenerated.
You can download the programming files from the Microsemi SoC Products Group website:
www.microsemi.com/soc/download/rsc/?f=M2S_AC388_PF.
Su
pe
rs
ed
ed
The programming file consists of STAPL programming file (*.stp) for SmartFusion2 SoC FPGA
Development Kit.
17
SmartFusion2 SoC FPGA – Dynamic Configuration of AHB Bus Matrix
List of Changes
The following table lists critical changes that were made in each revision of the document.
Revision*
Changes
Revision 6
(May 2014)
Page
Updated Figure 11(SAR 57101).
11
Added "Design Requirements" section (SAR 57101).
5
Updated the document for Libero SoC v 11.2 software release (SAR 52886)
NA
Revision 4
(June 2013)
Updated the document for Libero SoC v11.0 software release (SAR 47624 and
46110).
NA
Revision 3
(March 2013)
Updated for Libero SoC v11.0 beta SP1 release (SAR 45835).
NA
Revision 2
(November 2012)
Added Release Mode section (SAR 42988).
15
Modified "Running the Design" section (SAR 42988).
14
Revision 1
(November 2012)
Modified "Introduction" section (SAR 42846).
1
ed
ed
Revision 5
(November 2013)
The Release Mode section was removed along with Figures 10 and 11 that were
updated in November 2012.
Updated Figure 5, Figure 11, Figure 13, Figure 14, Figure 15, Figure 10, and Figure
11 (SAR 42846).
n/a
8
Modified "Software Implementation" section (SAR 42846).
12
Modified "Appendix A - Design and Programming Files" section (SAR 42846).
17
rs
Modified "Hardware Implementation" section (SAR 42846).
Su
pe
Note: *The revision number is located in the part number after the hyphen. The part number is displayed at the bottom
of the last page of the document. The digits following the slash indicate the month and year of publication.
18
ed
ed
rs
pe
Su
Microsemi Corporate Headquarters
One Enterprise, Aliso Viejo CA 92656 USA
Within the USA: +1 (800) 713-4113
Outside the USA: +1 (949) 380-6100
Sales: +1 (949) 380-6136
Fax: +1 (949) 215-4996
E-mail: [email protected]
Microsemi Corporation (Nasdaq: MSCC) offers a comprehensive portfolio of semiconductor
and system solutions for communications, defense and security, aerospace, and industrial
markets. Products include high-performance and radiation-hardened analog mixed-signal
integrated circuits, FPGAs, SoCs, and ASICs; power management products; timing and
synchronization devices and precise time solutions, setting the world's standard for time; voice
processing devices; RF solutions; discrete components; security technologies and scalable
anti-tamper products; Power-over-Ethernet ICs and midspans; as well as custom design
capabilities and services. Microsemi is headquartered in Aliso Viejo, Calif. and has
approximately 3,400 employees globally. Learn more at www.microsemi.com.
© 2014 Microsemi Corporation. All rights reserved. Microsemi and the Microsemi logo are trademarks of
Microsemi Corporation. All other trademarks and service marks are the property of their respective owners.
51900256-6/05.14