Arc HSDK User Guide
Arc HSDK User Guide
User Guide
Version 5793-002 January 2018
Copyright Notice and Proprietary Information Notice
© 2018 Synopsys, Inc. All rights reserved. This Synopsys software and all associated documentation are proprietary to Synopsys,
Inc. and may only be used pursuant to the terms and conditions of a written license agreement with Synopsys, Inc. All other u se,
reproduction, modification, or distribution of the Synopsys software or the associated documentation is strictly prohibited.
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America. Disclosure to
nationals of other countries contrary to United States law is prohibited. It is the reader's responsibility to determine the applicable
regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO
THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE.
Trademarks
Synopsys and certain Synopsys product names are trademarks of Synopsys, as set forth at
https://www.synopsys.com/company/legal/trademarks -brands.html.
All other product or company names may be trademarks of their respective owners.
Third-Party Links
Any links to third-party websites included in this document are for your convenience only. Synopsys does not endorse and is not
responsible for such websites and their practices, including privacy practices, availability, and content.
Synopsys, Inc.
690 E. Middlefield Road
Mountain View , CA 94043
w ww.synopsys.com
Contents ................................................................................................................................................. 3
List of Figures ......................................................................................................................................... 5
List of Tables .......................................................................................................................................... 6
1 Customer Support ............................................................................................................................... 7
2 Introduction.......................................................................................................................................... 8
2.1 Package Content ........................................................................................................................ 8
2.2 Getting Started ............................................................................................................................ 8
2.2.1 Installing Device Drivers ..................................................................................................... 8
2.2.2 Checking Default Board Settings ....................................................................................... 8
2.2.3 Installing and Configuring PuTTY....................................................................................... 9
2.2.4 Starting Uboot.................................................................................................................... 11
2.3 Location of Components On ARC HSDK ................................................................................ 13
2.4 Software Packages ................................................................................................................... 14
3 Hardware Description ....................................................................................................................... 15
3.1 Overview of ARC HSDK ........................................................................................................... 15
3.2 Overview of ARC HS Development System SoC ................................................................... 17
3.3 Clocks and Resets .................................................................................................................... 19
3.3.1 Clocks ................................................................................................................................ 19
3.3.2 Reset .................................................................................................................................. 21
3.4 Interrupts ................................................................................................................................... 23
3.5 Debug and Trace ...................................................................................................................... 27
3.5.1 Debug................................................................................................................................. 27
3.5.2 ARC Real-Time Trace....................................................................................................... 29
3.6 Configuration and Boot Modes ................................................................................................ 30
3.6.1 Boot Switches .................................................................................................................... 31
3.6.2 Jumpers ............................................................................................................................. 32
3.6.3 Other Switches .................................................................................................................. 33
3.6.4 On-board LEDs.................................................................................................................. 33
3.7 Memories ................................................................................................................................... 34
3.8 USB Interface ............................................................................................................................ 34
3.9 Ethernet Interface ..................................................................................................................... 34
Accessing SolvNet
SolvNet includes an electronic knowledge base of technical articles and answers to frequently asked
questions about Synopsys tools. SolvNet also gives you access to a wide range of Synopsys online
services, which include downloading software, viewing Documentation on the Web, and entering a
call to the Support Center.
To access SolvNet:
1. Go to the SolvNet Web page at http://solvnet.synopsys.com/.
2. If prompted, enter your user name and password. (If you do not have a Synopsys
user name and password, follow the instructions to register with SolvNet.)
If you need help using SolvNet, click SolvNet Help in the Support Resources section.
Open a call to your local support center from the Web by going to
http://solvnet.synopsys.com/ (Synopsys user name and password required), then
clicking “Enter a Call to the Support Center.”
4. Starting Uboot
Connect the ARC HSDK to your PC by connecting the USB cable to the USB data port of
the ARC HSDK and the PC.
Connect the power supply included in the product package to the ARC HSDK.
Note The ARC HSDK must be powered by an external power adapter. Also, when the
ARC HSDK is mounted on a HAPS system, the board ARC HSDK requires this
external power adapter.
4. Execute putty.exe.
The PuTTY Configuration window appears.
Figure 4 Default Boot with ARC HS38x4 Initialization and Custom Clock
Extension HS IC
headers
Memory
o DDR3-1333 (4 GB)
o NOR Flash (1 MB)
o 2x SPI Flash (2 MB)
o I2C EEPROM (3 KB)
Interfaces
o USB2 (2x)
o Ethernet (10/100/1000)
o Audio line in/out
o USB Data port (JTAG/UART)
o Micro- SD Card
o WIFI/BT module
o ADC (6 channels)
o RTT Nexus, JTAG
Extensions
o AXI Tunnel (32-bit, max 150 MHz)
o Arduino Interface headers (UNO R3 compatible)
o mikroBUS headers
o Pmod Interfaces (3x)
HS38 - 1 HS38 - 3
MMU MMU
ICACHE DCACHE ICACHE DCACHE
PHY PHY
JTAG
Real-Time-Trace
MCIP
2x SDIO
50MHz
HS38 - 2 HS38 - 4
60MHz
UTMI+
MMU MMU
ICCM DCCM ICCM DCCM
ICACHE DCACHE ICACHE DCACHE
MCTL
MCTL
SCU AXI
tunnel USB ETH SDIO GPU
DMI 512KB L2 cache
IOC
BIU
64bit AXI
AXI2APB AXI2APB
32kB 256kB
DMA
ROM SRAM
1x 1x DEBUG 2x 2x 3x
PWM GPIO CGU CREG WDT I2S
I2C SPI UART I2C SPI UART
mux
I2C SPI UART PMOD / mikroBUS / Arduino clk & reset boot I2S TX & RX
The ARC HS Development System SoC provides the following main features:
Flexible, customizable IC architecture
o Configurable/programmable boot scenarios
o Configurable/programmable memory map
DesignWare ARC HS38x4 quad-core @ 1GHz
o 64kByte instruction cache
o 64kByte data cache
o 256kByte ICCM (2 cores)
o 256kByte DCCM (2 cores)
o Memory Management Unit
o Physical Address Extension (PAE)
o 512kByte L2 cache
o Support for I/O coherency
o Support for ARC Real-Time Trace
Vivante GC7000 NanoUltra3T GPU Processing Unit @ 400Mhz
HSDK Motherboard
sysclk hs38x4_clk
OSC4 ARCPLL DIV HS38x4
33.333MHz
SYSPLL
apb_clk dmac_core_clk 12MHZ
DIV DIV
USBPHY
axi_clk dmac_cfg_clk
DIV DIV USB 2.0
sdio_core_clk usb_core_clk 2-port
DIV DIV USBCTRL hub
gpu_core_clk spi_ref_clk
DIV DIV 125MHz
gpu_dma_clk i2c_ref_clk
eth_clk_to_mac
DIV DIV OSC1
gpu_cfg_clk uart_ref_clk
DIV DIV ETHCTRL Gigabit
sdio_ref_clk eth_core_clk ethernet
DIV DIV PHY
333MHz ddr_ref_clk
DDRPLL DDRPHY DDR3
4Bytes
tunnel_clk 1333Mbps
TUNPLL DIV
rom_clk
DIV
pwm_clk
DIV
audio_ref_clk I2s_tx_clk
OSC3 DIV I2STX
Audio
I2s_rx_clk Codec
24.576MHz DIV I2SRX
hs38x4_clk sysclk 1000 Clock for ARC HS38x4 (including ARC RTT and ARConnect)
apb_clk sysclk 200 Clock for APB peripherals:
ddr_ref_clk sysclk 400 Reference clock for DDR controller + PHY (400Mhz for DDR-
1600). This clock is driven directly by the PLL; all the integer
dividers inside the CGU are bypassed.
Audio_ref_clk OSC3 24.576 Fixed clock frequency for I2S interfaces and audio codec
Sys_clk OSC4 33.333 Fixed system clock for ARC HS Development System SoC
3.3.2 Reset
Figure 10 shows the top-level reset architecture of the ARC HSDK.
When the ARC HS Development System SoC is in reset the resetn_out is asserted. This
output pin resets all components on the board that have a reset input pin (for example:
Gigabit Ethernet PHY, USB 2.0 2-port hub, and so on).
The ARC HS Development System SoC has one external reset pin (resetn_in) that
serves as an active low, hardware reset. When the external hardware reset is active, the
entire chip is reset. The chip does not have an on-chip power-on-reset module so it relies
on the external circuitry to keep resetn_in asserted low until all the chip power supplies
and the system input clock are stabilized.
The reset generated by the reset button is merged with a Power on Reset circuit and the
FTDI_gpio reset.
After the ARC HS Development System SoC is out of reset, resetn_out is asserted
resetting all the ARC HSDK components, resetn_out is also routed to the mikrobus and
Arduino headers and to the HapsTrak 3 connector. The reset input of the Mikrobus/Click
shield is asserted by resetn_out, but can also be asserted through a software-
controllable GPIO output from the on board I2C I/O expander.
Further, an AXI tunnel reset signal taxi_rst_an is available on the HapsTrak 3 connector.
This signal allows you to reset the AXI tunnel on the HAPS side independently from the
ARC HS Development System SoC reset.
HSDK Motherboard
SYNC axi_rst_n
SWRSTn
AND SYNC ETHCTRL
SWRSTn
AND SYNC USBCTRL
SWRSTn
AND SYNC SDIOCTRL
SWRSTn
AND SYNC GPU
SWRSTn
AND SYNC DMAC
SWRSTn ddr_rst_n
AND SYNC DDRCTRL DDR3
SWRSTn taxi_rst_an
AND SYNC TUN
HAPS
SWRSTn resetn_out
AND
resetn_in
USB 2.0
2-port
hub
Gigabit
ethernet
PHY
3V3
reset Bluetooth
button Wifi
30ms
active low reset pulse IO expander AND mikroBUS
AND
POR ARDUINO
FTDI FTDI
3.4 Interrupts
Figure 11 shows the top-level interrupt architecture of the ARC HSDK. The ARC HSDK
distinguishes between the following three interrupt sources:
Software (SW) interrupts: a software interrupt can be generated by writing a 1 to
the corresponding interrupt bit in the in the CREG module.
External hardware interrupts: generated by off-chip interrupt sources (for example:
external host CPU). The interrupt requests are received by the GPIO module and
forwarded to the ARC HS38x4.
Internal hardware interrupts: generated by the on-chip interrupt sources (for
example: I2C, UART, SPI).
The interrupt mapping for the ARC HS38x4 core is listed in Table 2. All the above motioned
interrupts sources are connected as external common interrupt to the interrupt distribution
unit (IDU). The IDU distributes the external common interrupts to the cores in the ARC
HS38x4. All interrupts are active high and level sensitive unless noted differently.
HSDK Motherboard
CREG
20 external HW interrupts DBG-UART
HS38
CGU
IDU ETHCTRL
SDIOCTRL
HS38
USBCTRL
I2STX I2SRX
DMAC
GPU
WDT
PWM
DVFS
Gigabit
1 ethernet
PHY
gpio[0]
Bluetooth
gpio[2]
HAPS
gpio[3] Audio
Codec
gpio[16]
19 MikroBUS
GPIO
gpio[23:8]
ARDUINO
gpio[21:20] + gpio[11:8]
PMOD A
gpio[23:22] + gpio[15:12]
PMOD B
gpio[19:16] PMOD C
cirq32_a irq56_a external HW interrupt from GPIO[0] Bluetooth interrupt of RS9113 module
cirq33_a irq57_a external HW interrupt from GPIO[0] N/A, GPIO[1] is used as output
cirq34_a irq58_a external HW interrupt from GPIO[2] HAPS interrupt (on HapsTrak 3 connector)
cirq35_a irq59_a external HW interrupt from GPIO[3] Audio codec (MAX9880A) interrupt
cirq36_a irq60_a external HW interrupt from GPIO[4] N/A, GPIO[4] is not connected
cirq37_a irq61_a external HW interrupt from GPIO[5] N/A, GPIO[5] is used a UART1 TXD signal
for the Bluetooth interface of the RS9113
cirq38_a irq62_a external HW interrupt from GPIO[6] N/A, GPIO[6] is used a UART1 RXD signal
for the Bluetooth interface of the RS9113
cirq39_a irq63_a external HW interrupt from GPIO[7] N/A, GPIO[7] is not connected
cirq40_a irq64_a external HW interrupt from GPIO[8] Available on Arduino and PMOD_A header
cirq41_a irq65_a external HW interrupt from GPIO[9] Used on Arduino and PMOD_A header
cirq42_a irq66_a external HW interrupt from GPIO[10] Available on Arduino and PMOD_A header
cirq43_a irq67_a external HW interrupt from GPIO[11] Available on Arduino and PMOD_A header
cirq44_a irq68_a external HW interrupt from GPIO[12] Available on Arduino and PMOD_B header
cirq45_a irq69_a external HW interrupt from GPIO[13] Available on Arduino and PMOD_B header
cirq46_a irq70_a external HW interrupt from GPIO[14] Available on Arduino and PMOD_B header
cirq47_a irq71_a external HW interrupt from GPIO[15] Available on Arduino and PMOD_B header
cirq48_a irq72_a external HW interrupt from GPIO[16] Available on MikroBUS and PMOD_C header
cirq49_a irq73_a external HW interrupt from GPIO[17] Available on Arduino and PMOD_C header
cirq50_a irq74_a external HW interrupt from GPIO[18] Available on Arduino and PMOD_C header
cirq51_a irq75_a external HW interrupt from GPIO[19] Available on Arduino and PMOD_C header
cirq52_a irq76_a external HW interrupt from GPIO[20] Available on Arduino and PMOD_A header
cirq53_a irq77_a external HW interrupt from GPIO[21] Available on Arduino and PMOD_A header
cirq54_a irq78_a external HW interrupt from GPIO[22] Available on Arduino and PMOD_B header
cirq55_a irq79_a external HW interrupt from GPIO[23] Available on Arduino and PMOD_B header
JTAG port
switch
Nexus Mictor 38
3.5.1 Debug
The ARC HS core provides debug access through an IEEE 1149.1 JTAG port. The four
ARC HS cores in the ARC HS38x4 quad-core cluster are daisy-chained into a JTAG
chain. In a JTAG chain, the data output from the first core becomes the data input to the
second core and so forth; the control and clock signals are common to all the cores in the
chain. The JTAG chain for the ARC HS Development IC is shown in Figure 13. To
distinguish between the individual cores in the JTAG chain each core has a unique JTAG
IDCODE.
ARC HS38x4
jtag_tdo
VTref
GND
GND
TCK
TDO
TMS
The company Embedded Artists offers such a 10-pin to 20-pin JTAG Adapter.
Article code: EA-ACC-040. The adapter can be purchased from many known distributors
such as Mouser, Digikey, and so on.
TMS
This 6-pin header is compatible with the standard Digilent HS1 and HS2
TDI probes.
TDO
TCK
GND
VDD
Trace data can either be off-loaded from internal ARC RTT buffers to an on-chip memory
(that is, DDR), or to an off-chip memory in an external host using the Nexus 5001 interface.
The Nexus 5001 interface is a 16bit high-speed interface and for the ARC HS Development
System SoC supports up to 100MHz trace clock.
The ARC RTT interface is supported with the Ashling Ultra-XD and Lauterbach Trace-32
products.
JTAG BLV
Port jumper
PWR LED
CM MODE PM
WMM jumper
TUN MODE switch
RST MODE
TST jumper
START
button
H
Ensure that these switches are set as depicted on the left (default
position). This setting ensures that the pre-bootloader starts executing
the Uboot bootloader that is stored in SPI Flash. All other settings for these
L BIM switches are reserved and must not be used.
H
Ensure that these switches are set as depicted on the left (default
position). This setting ensures that the ARC HS Core 1 starts executing
Uboot. All other settings for these switches are reserved and not be used.
L BCS
A
Manual mode. The ARC HSDK only starts booting after the START button is
pushed. This is the default setting
M
A
Automatic mode. The ARC HSDK automatically starts booting after Reset.
3.6.2 Jumpers
The ARC HSDK includes the following jumpers: TST, BLV, and WMM.
The TST jumper (JP8) is used for production purposes only and must not be used
in the normal course of operation. Default position: open
JP8
JP2 The WMM jumper (Wireless Module Mode) is used to control the mode of the
RS9113 Wireless Module. If the jumper is closed, the module is set to operate
in the hosted mode using the SDIO interface. In this mode, the networking
WMM
stacks are running on the ARC HS Core. If the jumper is open, the module
operates in the embedded mode using the UART1 interface,and hence the full
networking stack is running on the RS9113 module itself.
Default position: closed
The BLV jumper (Boot Loader Verbosity) is used to control the verbosity of the
bootloader messages. If the jumper is open, the boot loader prints the normal
BLV boot messages without additional system/debug info. If the jumper is closed, the
boot loader prints addittional messages during execution.
Default position: open
routed. If the switch is in the on postion (left), the JTAG signals are availble on
the 6-pin and 10-pin debug headers as well as through the USB Dataport. If the
JTAG
Port
switch is in the off position (right), the JTAG signals are avialable on the ARC
RTT connector. Default position: on.
CM MODE PM MODE switch: This switch is used to select the operating mode of the ARC
HSDK. Currently only the Core Mode; switch in CM position is supported.
sw2 Default position: CM
RST red Reset LED, this LED turns red if the ARC HSDK is in
Reset.
TUN green Tunnel BIST, indicates that the AXI Tunnel self-test is
OK after connecting ARC HSDK on a HAPS system
through the HapsTrak 3 connectors.
PWR green Indicates that the power supplies for the ARC HSDK
are OK.
3.7 Memories
The ARC HSDK features the following memories
4 GByte DDR3-1333 memory
2 Mbyte SPI Flash
o This SPI Flash is pre-loaded with the Uboot bootloader
3 Kbyte I2C EEprom
10 Mbps Yellow
After Uboot, the default settings operate the SD card in the SDR25 speed mode.
24 12 8 4 2
An overview of the I2C bus slave addresses can be found in Table 7. The on-board I2C
bus is offered by I2C0.
3.13 ADC
The ARC HSDK board includes the 8-input 10-bit ADC108S102 from Texas Instruments
[3]. The conversion rate ranges from 500 kSPS to 1 MSPS. The analog input range is 0 to
5 Volt. The analog input values are read using the SPI0 peripheral using SPI chip select
1. Table 8 lists the various ADC channels and their usage.
0 Arduino AD0
1 Arduino AD1
2 Arduino AD2
3 Arduino AD3
4 Arduino AD4
5 Arduino AD5
6 mikroBUS AN
7 not used
bit6,7 Reserved
Pmod_A Pmod_B
2x6 2x6
Mikro BUS
Arduino
Mikro BUS
Pmod_C 1x6
Arduino
Further, the ARC HSDK features two HapsTrak 3 connectors that allow you to connect the
ARC HSDK to a HAPS prototyping system. See section HapsTrak 3 Extension for more
details regarding this extension option.
2 x HapsTrak3
gpio x x x x x x x
uart x x x x x x x
Protocol spi x x x x x
i2c x x x x x x x x x
pwm x x x x x
The location of the pins on the Pmod connectors is shown in Figure 19. Detailed pin
descriptions depending on the pin multiplexer settings are provided in the subsequent
sections.
3.15.2 Mikrobus
The ARC HSDK features a set of MikroBUS headers. Figure 20 shows the relevant
function assignments, fully compatible with the MikroBUS standard [2]. The MikroBUS
headers enable the addition of Click boards. Click boards are developed by the company
MikroElektronica (www.mikroe.com) and are a range of hundreds of add on boards for
interfacing with peripheral sensors and transceivers. Click boards include wireless and
wired connectivity modules, sensor modules, display modules, interface modules, and
miscellaneous modules and accessories, See www.mikroe.com/click for a full list.
Multiplexing to get the right function assignment on the MikroBUS headers is controlled by
software using the PMOD_MUX_CTRL register (see Mux ).
*ADC VIN6 is available through the on-board ADC and is read though SPI0 using SPI chip
select 1.
3.15.3 Arduino
The ARC HSDK provides an Arduino shield interface. Figure 21 shows the relevant
function assignments. The Arduino shield interface is compatible with the Arduino UNO
R3 with the following exceptions: 5 Volt shields are not supported, the IOREF voltage on
the ARC HSDK board is fixed to 3V3. Note that the ICSP header is also not available. Most
shields do not require this ICSP header as the SPI master interface on this ICSP header
is also available on the IO10 to IO13 pins.
AD5
AD4
N.C.
GND
N.C. IO13
IOREF IO12
RESET IO11
+3.3V IO10
+5V IO9
GND IO8
GND IO7
GND IO6
AD0 IO5
AD1 IO4
AD2 IO3
AD3 IO2
AD4 IO1
IO0
AD5
Table 15 shows the pin assignment on the I/O Multiplexer. Multiplexing is controlled by
software using the PMOD_MUX_CTRL register (see Mux ). After a reset, all ports are
configured as GPIO inputs.
IO2 gpio[16] - -
IO4 gpio[11] -
IO7 gpio[20] - -
IO8 gpio[10] - -
IO9 gpio[8] pwm_ch[2] -
*ADC VIN0 – 6 are available through the on-board ADC and are read through SPI0 using
SPI chip select 1.
HSDK
Source-synchronous link
(TX / RX)
ARC HS IC
DMAC
SDIO
USB
ETH
HS38x4
HAPS-DX / HAPS70 / HAPS80
32bit
42 AXI4 master
Custom
AXI4 network AXI Tunnel 41 AXI Tunnel
IP
32bit
AXI4 slave
MCTL DDR
Users that like to use other FPGA boards that feature an FMC connector can use an
Hapstrak 3 to FMC adapter to connect the ARC HSDK to a 3rd party FPGA featuring FMC
extension headers.
4.1.2 PAE
The ARC HS38 core supports Physical Address Extension (PAE). PAE extends the
physical address range beyond the core’s native 32-bit, 4GByte address range. In the ARC
HS Development System SoC the PAE functionality is used to extend the physical address
range from 4 to 16GByte. Figure 24 shows a high-level overview of the ARC HS
Development System SoC memory map. The memory map for the lower 4GByte of the
physical address range is fully programmable through the CREG, see Control
Registers. The memory map for the extended part of the physical address range is fixed,
and used for DDR only. The additional 12GByte is divided into three 4GByte regions that
all map to the same 4GByte of DDR but through different DDR ports. Thus, it is still possible
to map PAE traffic to the different DDR ports.
Figure 24 ARC HS Development System SoC Memory Map – High Level Overview
HS38 HS38
MMU MMU
ICACHE DCACHE ICACHE DCACHE
ARConnect
HS38 HS38
MMU MMU coherent
ICCM DCCM ICCM DCCM DMA traffic
filtering of coherent
and non-coherent DMA
ICACHE DCACHE ICACHE DCACHE
traffic based its on
address
SCU
DMI 512KB L2 cache IOC
BIU bridge
IO coherency port
bypass port for
non-coherent
DMI CBU DMA traffic 0BU IOC
64bit 64bit 64bit 64bit
AXI slave AXI master AXI master AXI slave
The ARC HS38x4 quad-core is equipped with 1MByte L2 system level cache that is shared
among the different ARC cores. L1 and L2 cache coherency is maintained by the Shared
Coherency Unit (SCU). Problems may occur when an ARC core and a non-cached DMA
client operate on a piece of shared data such as an Ethernet packet header. Without a
proper coherency mechanism, the ARC core and DMA client may have inconsistent views
of the shared data. Conventional systems leave the responsibility of maintaining I/O
coherency 1 to software: the OS must ensure that the cache lines are cleaned before an
outgoing DMA transfer is started, and invalidated before a memory range affected by an
incoming DMA transfer is accessed. This introduces some overhead for every DMA
operation.
The ARC HS Development System SoC (or more specifically the ARC HS38x4)
implements a hardware mechanism for maintaining I/O coherency. The I/O coherency
architecture is illustrated in Figure 25. The ARC HS38x4 provides an additional AXI slave
port (that is: I/O coherency port) that can be used by any DMA client that needs to operate
on cacheable data that is shared with the ARC core. Traffic on the I/O coherency port is
filtered by the IOC bridge based on its address. When it falls within a certain
(programmable) address window, the traffic is forwarded to the SCU. When the address
is outside the address window, the traffic is forwarded to its destination without being
snooped.
Detailed description of I/O coherency and programming guidelines can be found in [7] and
[8]. Following are some of the important programming:
1
IO coherency: term used to indicate consistency of data that is shared between ARC cores and DMA clients
- ARC HS (CORE)
CREG_AXI_M_ARC_SLV0 0x1000 RW Address decoder slave select register
- ARC HS (RTT)
CREG_AXI_M_RTT_SLV0 0x1020 RW Address decoder slave select register
- AXI Tunnel
CREG_AXI_M_TUN_SLV0 0x1040 RW Address decoder slave select register
- USB
CREG_AXI_M_USB_SLV0 0x10A0 RW Address decoder slave select register
- ETH
CREG_AXI_M_ETH_SLV0 0x10C0 RW Address decoder slave select register
- SDIO
CREG_AXI_M_SDIO_SLV0 0x10E0 RW Address decoder slave select register
- GPU
CREG_AXI_M_GPU_SLV0 0x1100 RW Address decoder slave select register
- DMAC
CREG_AXI_M_DMAC0_SLV0 0x1120 RW Address decoder slave select register
[1]
m=0 ARC HS (CORE) m=6 ETH
m=1 ARC HS (RTT) m=7 SDIO
m=2 AXI Tunnel m=8 GPU
m=5 USB m = 9/10 DMAC
[2]
See Table 18 for reset values after uBoot
[3]
when “ARC HS38x4 DMI” is selected as a slave for a certain aperture, the associated address offset in
CREG_AXI_m_OFFSET0 register is used for selection of ICCM / DCCM:
- OFFSET = 3 : CORE 2 / ICCM
- OFFSET = 5 : CORE 2 / DCCM
- OFFSET = 9 : CORE 4 / ICCM
- OFFSET = 11 : CORE 4 / DCCM
[1]
m=0 ARC HS (CORE) m=6 ETH
m=1 ARC HS (RTT) m=7 SDIO
m=2 AXI Tunnel m=8 GPU
m=5 USB m = 9/10 DMAC
[2]
See Table 18 for reset values after uBoot
1 1 * 256MByte
… …
15 15 * 256MByte
[2]
7:4 OFFSET1 RW * Address offset for address aperture[1]
[2]
11:8 OFFSET2 RW * Address offset for address aperture[2]
[2]
15:12 OFFSET3 RW * Address offset for address aperture[3]
[2]
19:16 OFFSET4 RW * Address offset for address aperture[4]
[2]
23:20 OFFSET5 RW * Address offset for address aperture[5]
[2]
27:24 OFFSET6 RW * Address offset for address aperture[6]
[2]
31:28 OFFSET7 RW * Address offset for address aperture[7]
[1]
m=0 ARC HS (CORE) m=6 ETH
m=1 ARC HS (RTT) m=7 SDIO
m=2 AXI Tunnel m=8 GPU
[1]
m=0 ARC HS (CORE) m=6 ETH
m=1 ARC HS (RTT) m=7 SDIO
m=2 AXI Tunnel m=8 GPU
m=5 USB m = 9/10 DMAC
[2]
See Table 18 for reset values after uBoot
[1]
m=0 ARC HS (CORE) m=6 ETH
m=1 ARC HS (RTT) m=7 SDIO
m=2 AXI Tunnel m=8 GPU
m=5 USB m = 9/10 DMAC
1 1 clocks cycle
2 2 clocks cycles
..
255 255 clocks cycles
[1]
reset value for MIRROR[1:0] is sampled from “boot_mirror[1:0]” pin during power-on-reset
[2]
reset value for IMAGE[1:0] is sampled from “boot_image[1:0]” pin during power-on-reset
[3]
reset value for AUX[3:0] is sampled from “boot_aux[3:0]” pin during power-on-reset
1 START_2 RW1C 0x0 * Writing a 1 to this bit generates a cpu_start pulse for ARC
HS38x4_2
2 START_3 RW1C 0x0 * Writing a 1 to this bit generates a cpu_start pulse for ARC
HS38x4_3
3 START_4 RW1C 0x0 * Writing a 1 to this bit generates a cpu_start pulse for ARC
HS38x4_4
0x1 Start ARC core autonomously after reset. The core that is
started is selected by CORE_SEL
8 POL RW Polarity of cpu_start pulse
0x0 active low
0x1 * active high
10:9 CORE_SEL RW Boot Core Select
[2]
0x0 HS38x4_1
0x1 HS38x4_2
0x2 HS38x4_3
0x3 HS38x4_4
13:12 MULTI_CORE RW Multi Core Mode
[3]
0x0 single-core
0x1 dual-core
0x2 triple-core
0x3 quad-core
16 DEBUG_UART_MODE RW Debug UART mode
[4]
0x0 normal mode
0x1 debug mode
[1]
reset value for START_MODE is sampled from “boot_start_mode” pin during power-on-reset
[2]
reset value for CORE_SEL is sampled from “boot_core_sel[1:0]” pins during power-on-reset
[3]
reset value for MUTLI_CORE is sampled from “boot_multi_core[1:0]” pins during power-on-reset
[4]
reset value for DEBUG_UART_MODE is sampled from “debug_uart_mode” pin during power-on-reset
0x6 * UART-0
0x7 UART-1
0x8 UART-2
0x9-0xF reserved (=> no peripheral is selected)
[1]
the DMA mux does not implement logic that prevents incorrect assignment of dma flow control interfaces. Hence, it is
the users’ responsibility to ensure that a single peripheral is not assigned to multiple dma flow control interfaces.
Assigning a peripheral to multiple dma flow control interfaces will result in incorrect behavior
GPIO GPIO_MUX
0 1 2 3 4 5 6 7
]
4 gpio[4] uart1_cts spi2_cs[0] gpio[4] gpio[4] pwm_ch[4] pwm_ch[4] pwm_ch[3]
…
0xFF clk_in divide-by-256
- ARC PLL
CGU_ARC_PLL_CTRL 0x0000 RW ARC PLL control register
- SYS PLL
CGU_SYS_PLL_CTRL 0x0010 RW SYS PLL control register
- DDR PLL
CGU_DDR_PLL_CTRL 0x0020 RW DDR PLL control register
- TUN PLL
CGU_TUN_PLL_CTRL 0x0030 RW Tunnel PLL control register
- ARC PLL
CGU_ARC_IDIV 0x0080 RW Clock divider register for ARC HS clock
- SYS PLL
CGU_SYS_IDIV_APB 0x0180 RW Clock divider register for APB clock
- TUN PLL
CGU_TUN_IDIV 0x0380 RW Clock divider register for Tunnel clock
- I2S
CGU_I2S_IDIV_TX 0x0580 RW Clock divider register for I2S TX clock
Standard Registers
CGU_IP_SW_RESET 0x0FF0 RW1C CGU IP software reset register
For proper operation in normal mode, the following constraints must be satisfied:
Low-band High-band
10MHz ≤ Fref ≤ 50Mhz 25MHz ≤ Fref ≤ 50Mhz
800MHz ≤ Fvco ≤ 1600Mhz 1500MHz ≤ Fvco ≤ 3000Mhz
100MHz ≤ Fout ≤ 1600Mhz 188MHz ≤ Fout ≤ 3000Mhz
Few remarks:
By default, both counters start counting from zero. However, to simply the frequency
calculation RCNT can be initialized with a non-zero value. When RCNT is initialized with a
value equal to 215 – reference clock frequency in MHz and reaches its maximum count
before the FCNT counter saturates, the value stored in FCNT would then show the
measured clock’s frequency in MHz without the need for any further calculation.
The measured clock frequency can only be as known to the level of precision of the
reference clock frequency.
Quantization error is noticeable if the ratio between the two clocks is large (for example
1000MHz vs. 1kHz), because one counter saturates while the other counter only has a
small count value.
Due to synchronization, both counters are not started and stopped at the same time. This
affects the accuracy of the frequency measurement. This effect can be minimized by
running the counters if possible.
p= 0 ARC PLL
p= 1 SYS PLL
p= 2 DDR PLL
p= 3 TUN PLL
p= 0 ARC PLL
p= 1 SYS PLL
p= 2 DDR PLL
p= 3 TUN PLL
1 divide-by-1
2 divide-by-2
.. ..
255 divide-by-255
p= 0 ARC PLL
p= 1 SYS PLL
p= 2 DDR PLL
p= 3 TUN PLL
31:16 SW_RESET_DELAY RW 0x0000 * Delay between software reset command and reset assertion
2 up/down-counting
3 down/up-counting
5 TIMER_ENABLE_23 RW 0* Enable / disable PWM timer 23
7:6 TIMER_MODE_23 RW 0* Operation mode for PWM timer 23
9 TIMER_ENABLE_45 RW 0* Enable / disable PWM timer 45
11:10 TIMER_MODE_45 RW 0* Operation mode for PWM timer 45
13 TIMER_ENABLE_67 RW 0* Enable / disable PWM timer 67
15:14 TIMER_MODE_67 RW 0* Operation mode for PWM timer 67
0* count-up
1 count-down
2 count-up and count down
3 count-up and count down
7:6 DIR_TRG_23 RW Select the PWM timer 23 count direction on which trigger interrupt
can be triggered
9:8 DIR_TRG_45 RW Select the PWM timer 45 count direction on which trigger interrupt
can be triggered
11:10 DIR_TRG_67 RW Select the PWM timer 67 count direction on which trigger interrupt
can be triggered
pwm_fault[3] pwm_fault[2]
b00 * ignore ignore
b01 ignore react
b10 react ignore
b11 react react
7:6 FAULT_ENA_45 RW b00 * pwm_fault inputs for complementary channel pair 45.
pwm_fault[5] pwm_fault[4]
b00 * ignore ignore
1 PWM_PERIOD_RS RW1C 0* Reset all the PWM timers to their initial value and start a new PWM
T period.
2 FORCE_UPDATE RW1C 0* Force update all shadow register in the next PWM period .
If PWM_PERIOD_RST field is set simultaneously, the Shadow
registers are updated, the PWM timer is initialized, and a new PWM
period starts.
3 RECOVER RW1C 0* Recover from the activated fault behavior. Complementary channel
pairs output the normal PWM output values instead of the fault
output (see FAULT_MODE fields in the PWM_FAULT register)
in the next PWM period if and only if all fault inputs on which the
complementary channel pair reacts are inactive again
2 3 PWM periods
….
A3 he_tunnel_rx[10] A3 he_tunnel_tx[32]
A4 haps_boot_start_mode A4 haps_tdi
A5 haps_boot_core_sel[0] A5 haps_tdo
A6 he_tunnel_rx[11] A6 he_tunnel_tx[9]
A7 he_tunnel_rx[19] A7 he_tunnel_tx_ctrl[1]
A8 haps_boot_core_sel[1] A8 haps_tms
A9 he_tunnel_rst_an A9 haps_resetn_out
A10 haps_boot_multi_core[0] A10 he_tunnel_bist
B0 he_tunnel_rx[15] B0 haps_tck
B1 he_tunnel_rx_ctrl[2] B1 he_tunnel_tx_ctrl[2]
B2 he_tunnel_rx[4] B2 he_tunnel_tx[20]
B3 he_tunnel_rx[8] B3 he_tunnel_tx[24]
B4 he_tunnel_rx[14] B4 he_tunnel_tx[34]
B5 he_tunnel_rx[0] B5 he_tunnel_tx[23]
B6 he_tunnel_rx[7] B6 he_tunnel_tx[25]
B7 he_tunnel_rx[31] B7 he_tunnel_tx[27]
B8 he_tunnel_rx[1] B8 he_tunnel_tx[26]
C0 he_tunnel_rx_valid C0 he_tunnel_tx_valid
C1 he_tunnel_rx[3] C1 he_tunnel_tx[11]
C2 he_tunnel_rx_ctrl[1] C2 he_tunnel_tx[7]
C3 he_tunnel_rx[9] C3 he_tunnel_tx[19]
C4 he_tunnel_rx[13] C4 he_tunnel_tx[18]
C5 he_tunnel_rx[5] C5 he_tunnel_tx[28]
C6 he_tunnel_rx_ctrl[0] C6 he_tunnel_tx_ctrl[0]
C7 he_tunnel_rx[18] C7 he_tunnel_tx[4]
C8 he_tunnel_rx[34] C8 he_tunnel_tx[33]
C9 he_tunnel_rx[35] C9 he_tunnel_tx[35]
C10 he_tunnel_rx[17] C10 he_tunnel_tx[1]
D0 he_tunnel_rx[20] D0 he_tunnel_tx[6]
D1 he_tunnel_rx[23] D1 he_tunnel_tx[2]
D2 he_tunnel_rx[26] D2 he_tunnel_tx[5]
D3 he_tunnel_rx[29] D3 he_tunnel_tx[8]
D4 he_tunnel_rx[21] D4 he_tunnel_tx[10]
D5 he_tunnel_rx[30] D5 he_tunnel_tx[0]
D6 he_tunnel_rx[32] D6 he_tunnel_tx[12]
D7 he_tunnel_rx[25] D7 he_tunnel_tx[3]
D8 he_tunnel_rx[27] D8 he_tunnel_tx[13]
D9 he_tunnel_rx[12] D9 he_tunnel_tx[16]
D10 he_tunnel_rx[24] D10 he_tunnel_tx[17]
D11 he_tunnel_rx[22] D11 he_tunnel_tx[29]
Glossary
AHB
Advanced High Performance Bus
AXI
Advanced eXtensible Interface
CGU
Clock Generator Unit
DDR3
Double Data Rate 2
GPIO
General Purpose Input/Output
HW
Hardware
HAPS
High performance ASIC Prototyping System; FPGA based prototyping system of Synopsys
HapsTrak 3
Standard (SAMTEC) connector type used on HAPS
IC
Integrated Circuit
I2S
Inter-IC Sound, serial bus interface standard for the transfer of audio data
JTAG
Joint Test Action Group
R
Read-only register
RW
Read-write register
RW1C
Read-write register; writing a one clears the corresponding bit
SDRAM
Synchronous Dynamic Random Access Memory
SRAM
Static Random Access Memory
SW
Software
References
[1] HapsTrak 3 standard, Connector type: https://www.samtec.com/products/seam-20-
02.0-s-08-2-a-k-tr
[2] MikroBUSTM Standard Specification,
https://download.mikroe.com/documents/standards/mikrobus/mikrobus-standard-
specification-v200.pdf
[3] 8-input 10-bit ADC108S102 http://www.ti.com/product/adc108s102
[4] CY8C9520A I/O expander
http://www.cypress.com/documentation/datasheets/cy8c9520a-cy8c9540a-cy8c9560a-
20-40-and-60-bit-io-expander-eeprom
[5] DesignWare® MetaWare Debugger User’s Guide for ARC®
[6] Synopsys DesignWare dw_apb_gpio Databook http://www.synopsys.com
[7] DesignWare ARC HS Series Databook
[8] DesignWare ARCv2 ISA Programmer’s Reference Manual for ARC HS processors
[9] DesignWare Cores Enhanced Universal DDR Memory Controller (uMCTL2) Databook
[10] DesignWare Cores Ethernet MAC Universal Databook
[11] DesignWare Cores USB 2.0 Host AHB Controller Databook
[12] DesignWare Cores USB 2.0 picoPHY for TSMC28nm HPM Databook
[13] DesignWare Cores Mobile Storage Host Databook
[14] DesignWare DW_apb_uart Databook
[15] DesignWare DW_apb_ssi Databook
[16] DesignWare DW_apb_i2c Databook
[17] DesignWare DW_apb_i2s Databook
[18] DesignWare DW_apb_wdt Databook
[19] DesignWare DW_axi_dmac Databook