Page 2
SiFive does not assume any liability rising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation indirect, incidental, spe- cial, exemplary, or consequential damages.
Page 3
1.0.3 July 24, 2017 assignments 1.0.2 June 12, 2017 Clarify that QFN48 is the 6x6 Standard format • Add QFN48 Package Pinout 1.0.1 December 20, 2016 • Add Configuration String • Rename chip to FE310-G000 November 29, 2016 HiFive1 release...
Chapter 1 Introduction The FE310-G000 is the first Freedom E300 SoC, and forms the basis of the HiFive1 develop- ment board for the Freedom E300 family. The FE310-G000 is built around the E31 Core Com- plex instantiated in the Freedom E300 platform and fabricated in the TSMC CL018G 180nm process.
1.3 Interrupts The FE310-G000 includes a RISC-V standard platform-level interrupt controller (PLIC), which supports 51 global interrupts with 7 priority levels. The FE310-G000 also provides the standard RISC‑V machine-mode timer and software interrupts via the Core-Local Interruptor (CLINT). Interrupts are described in Chapter 8. The CLINT is described in Chapter 9. The PLIC is...
1.8 Hardware Serial Peripheral Interface (SPI) There are 3 serial peripheral interface (SPI) controllers. Each controller provides a means for serial communication between the FE310-G000 and off-chip devices, like quad-SPI Flash mem- ory. Each controller supports master-only operation over single-lane, dual-lane, and quad-lane protocols.
The PWM peripherals are described in Chapter 19. 1.10 Debug Support The FE310-G000 provides external debugger support over an industry-standard JTAG port, including 2 hardware-programmable breakpoints per hart. Debug support is described in detail in Chapter 20, and the debug interface is described in...
Page 17
JTAG Joint Test Action Group Loosely Integrated Memory. Used to describe memory space delivered in a SiFive Core Complex but not tightly integrated to a CPU core. Physical Memory Protection PLIC Platform-Level Interrupt Controller. The global interrupt controller in a RISC-V system.
Chapter 3 E31 RISC-V Core This chapter describes the 32-bit E31 RISC‑V processor core used in the FE310-G000. The E31 processor core comprises an instruction memory system, an instruction fetch unit, an exe- cution pipeline, a data memory system, and support for global, software, and timer interrupts.
See The RISC‑V Instruction Set Manual, Volume I: User-Level ISA, Version 2.1 for more infor- mation on the instructions added by this extension. 3.6 Hardware Performance Monitor The FE310-G000 supports a basic hardware performance monitoring facility compliant with The RISC‑V Instruction Set Manual, Volume II: Privileged Architecture, Version 1.10. The mcycle CSR holds a count of the number of clock cycles the hart has executed since some arbitrary time in the past.
RAM. The debug RAM code can be used to bootstrap download of further code. 5.1.2 Mask ROM (MROM) MROM is fixed at design time, and is located on the peripheral bus on FE310-G000, but instruc- tions fetched from MROM are cached by the core’s I-cache. The MROM contains an instruction at address...
Off-chip SPI devices can vary in number of supported I/O bits (1, 2, or 4). SPI flash bits contain all 1s prior to programming. 5.2 Reset and Trap Vectors FE310-G000 fetches the first instruction out of reset from . The instruction stored there 0x1000...
AON block (Chapter 12) or the PRCI block (Section 6.2). 6.1 Clock Generation Overview Figure 2: FE310-G000 clock generation scheme Figure 2 shows an overview of the FE310-G000 clock generation scheme. Most digital clocks on the chip are divided down from a central high-frequency clock produced from either hfclk the PLL or an on-chip trimmable oscillator.
The AON block contains registers with similar func- tions, but only for the AON block units. Table 4 shows the memory map for the PRCI on the FE310-G000. Offset Name...
Page 29
Figure 3: Controlling the FE310-G000 PLL output frequency. field encodes the reference clock divide ratio as a 2-bit binary value, where the pllr[1:0] value is one less than the divide ratio (i.e., =4).
This mux selection can only be controlled by external pads, it is not psdlfaltclksel controllable by software. 6.9 Clock Summary Table 11 summarizes the major clocks on the FE310-G000 and their initial reset conditions. At power-on reset, the AON domain is clocked by either the LFROSC or , as...
Chapter 7 Power Modes This chapter describes the different power modes available on the FE310-G000. The FE310-G000 supports three power modes: Run, Wait, and Sleep. 7.1 Run Mode Run mode corresponds to regular execution where the processor is running. Power consump- tion can be adjusted by varying the clock frequency of the processor and peripheral bus, and by enabling or disabling individual peripheral blocks.
Page 34
HFROSC at the default setting, and must reconfigure clocks to run from an alternate clock source (HFXOSC or PLL) or at a different setting on the HFROSC. Because the FE310-G000 has no internal power regulator, the PMU’s control of the power sup- plies is through chip outputs, .
Instruction Set Manual, Volume II: Privileged Architecture, Version 1.10. 8.1 Interrupt Concepts The FE310-G000 supports Machine Mode interrupts. It also has support for the following types of RISC‑V interrupts: local and global. Local interrupts are signaled directly to an individual hart with a dedicated interrupt value. This...
A summary of the fields related to interrupts in mstatus the FE310-G000 is provided in Table 12. Note that this is not a complete description of mstatus as it contains fields unrelated to interrupts. For the full description of...
See Table 13 for a description of the register. See Table 14 for a description of the mtvec field. See Table 18 for the FE310-G000 interrupt exception code values. mtvec.MODE Mode Direct When operating in direct mode all synchronous exceptions and asynchronous interrupts trap to address.
• Machine timer interrupts 8.5 Interrupt Latency Interrupt latency for the FE310-G000 is 4 cycles, as counted by the numbers of cycles it takes from signaling of the interrupt to the hart to the first instruction fetch of the handler.
Chapter 9 Core-Local Interruptor (CLINT) The CLINT block holds memory-mapped control and status registers associated with software and timer interrupts. The FE310-G000 CLINT complies with The RISC‑V Instruction Set Manual, Volume II: Privileged Architecture, Version 1.10. 9.1 CLINT Memory Map Table 19 shows the memory map for CLINT on SiFive FE310-G000.
Architecture, Version 1.10 and supports 51 interrupt sources with 7 priority levels. 10.1 Memory Map The memory map for the FE310-G000 PLIC control registers is shown in Table 20. The PLIC memory map has been designed to only require naturally aligned 32-bit memory accesses.
10.2 Interrupt Sources The FE310-G000 has 51 interrupt sources. These are driven by various on-chip devices as listed in Table 21. These signals are positive-level triggered. In the PLIC, as specified in The RISC‑V Instruction Set Manual, Volume II: Privileged Architec-...
10.3 Interrupt Priorities Each PLIC interrupt source can be assigned a priority by writing to its 32-bit memory-mapped register. The FE310-G000 supports 7 levels of priority. A priority value of 0 is priority reserved to mean "never interrupt" and effectively disables the interrupt. Priority 1 is the lowest active priority, and priority 7 is the highest.
WARL field, where the FE310-G000 supports a maximum threshold of 7. threshold The FE310-G000 masks all PLIC interrupts of a priority less than or equal to . For threshold example, a value of zero permits all interrupts with non-zero priority, whereas a threshold value of 7 masks all interrupts.
Chapter 11 One-Time Programmable Memory (OTP) Peripheral This chapter describes the operation of the One-Time Programmable Memory (OTP) Controller. Device configuration and power-supply control is principally under software control. The con- troller is reset to a state that allows memory-mapped reads, under the assumption that the con- troller’s clock rate is between 1 MHz and 37 MHz.
Chapter 12 Always-On (AON) Domain The FE310-G000 supports an always-on (AON) domain that includes real-time counter, a watchdog timer, backup registers, low frequency clocking, and reset and power-management circuitry for the rest of the system. Figure 5 shows an overview of the AON block.
12.3 AON Reset Unit An AON reset is the widest reset on the FE310-G000, and resets all state except for the JTAG debug interface. An AON reset can be triggered by an external active-low reset pin ( ), or expiration of the...
The Real-Time Clock is described in detail in Chapter 15. 12.8 Backup Registers The backup registers provide a place to store critical data during sleep. The FE310-G000 has 16 32-bit backup registers. 12.9 Power-Management Unit (PMU) The power-management unit (PMU) sequences the system power supplies and reset signals when transitioning into and out of sleep mode.
Chapter 13 Watchdog Timer (WDT) The watchdog timer (WDT) is used to cause a full power-on reset if either hardware or software errors cause the system to malfunction. The WDT can also be used as a programmable periodic interrupt source if the watchdog functionality is not required. The WDT is implemented as an upcounter in the Always-On domain that must be reset at regular intervals before the count reaches a preset threshold, else it will trigger a full power-on reset.
Chapter 14 Power-Management Unit (PMU) The FE310-G000 power-management unit (PMU) is implemented within the AON domain and sequences the system’s power supplies and reset signals during power-on reset and when tran- sitioning the "mostly off" (MOFF) block into and out of sleep mode.
Chapter 15 Real-Time Clock (RTC) The real-time clock (RTC) is located in the always-on domain, and is clocked by a selectable low-frequency clock source. For best accuracy, the RTC should be driven by an external 32.768 kHz watch crystal oscillator, but to reduce system cost, can be driven by a factory- trimmed on-chip oscillator.
This chapter describes the operation of the General Purpose Input/Output Controller (GPIO) on the FE310-G000. The GPIO controller is a peripheral device mapped in the internal memory map. It is responsible for low-level configuration of actual GPIO pads on the device (direction, pull up-enable, and drive value ), as well as selecting between various sources of the controls for these signals.
The UART peripheral does not support hardware flow control or other modem control signals, or synchronous serial data transfers. 17.2 UART Instances in FE310-G000 FE310-G000 contains two UART instances. Their addresses and parameters are shown in Table 48. Instance Num-...
SPI flash device and instead return immediately. Hardware interlocks ensure that the current transfer completes before mode transitions and control register updates take effect. 18.2 SPI Instances in FE310-G000 FE310-G000 contains three SPI instances. Their addresses and parameters are shown in Table...
Chapter 19 Pulse Width Modulator (PWM) This chapter describes the operation of the Pulse-Width Modulation peripheral (PWM). 19.1 PWM Overview Figure 10 shows an overview of the PWM peripheral. The default configuration described here has four independent PWM comparators ( –...
PWM 3 compare register 0x2C pwmcmp3 Table 83: SiFive PWM memory map, offsets relative to PWM peripheral base address 19.4 PWM Count Register ( pwmcount The PWM unit is based around a counter held in . The counter can be read or written pwmcount over the TileLink bus.
Chapter 20 Debug This chapter describes the operation of SiFive debug hardware, which follows The RISC‑V Debug Specification 0.11. Currently only interactive debug and hardware breakpoints are sup- ported. 20.1 Debug CSRs This section describes the per-hart trace and debug registers (TDRs), which are mapped into...
Debug ROM. The debugger may use it as described in The RISC‑V Debug Specifi- cation 0.11. 20.2 Breakpoints The FE310-G000 supports two hardware breakpoint registers per hart, which can be flexibly shared between debug mode and machine mode. When a breakpoint register is selected with...
20.3.2 Debug RAM ( – 0x400 0x43f SiFive systems provide at least the minimal required amount of Debug RAM, which is 28 bytes for an RV32 system and 64 bytes for an RV64 system. 20.3.3 Debug ROM ( – 0x800 0xFFF This ROM region holds the debug routines on SiFive systems.
Chapter 21 Debug Interface The SiFive FE310-G000 includes the JTAG debug transport module (DTM) described in The RISC‑V Debug Specification 0.11. This enables a single external industry-standard 1149.1 JTAG interface to test and debug the system. The JTAG interface is directly connected to input pins.
The JTAG DTM implements the BYPASS and IDCODE instructions. On the FE310-G000, the IDCODE is set to 0x10E31913 21.5 JTAG Debug Commands The JTAG DEBUG instruction gives access to the SiFive debug module by connecting the debug scan register between jtag_TDI jtag_TDO...
Chapter 22 References Visit the SiFive forums for support and answers to frequently asked questions: https://forums.sifive.com [1] A. Waterman and K. Asanovic, Eds., The RISC-V Instruction Set Manual, Volume I: User- Level ISA, Version 2.2, May 2017. [Online]. Available: https://riscv.org/specifications/ [2] ——, The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 1.10,...
Need help?
Do you have a question about the FE310-G000 and is the answer not in the manual?
Questions and answers