DSF Nios II

Transcrição

DSF Nios II
Digitale Signalverarbeitung mit FPGA
Digitale Signalverarbeitung mit FPGA
(DSF)
Soft Core Prozessor NIOS II
Stand Mai 2007
Jens Onno Krah
Cologne University of Applied Sciences
www.fh-koeln.de
NIOS II
[email protected]
1
Digitale Signalverarbeitung mit FPGA
1
What is Nios II?
Altera’s Second Generation Soft-Core 32 Bit RISC Microprocessor
Debug
On-Chip
ROM
On-Chip
RAM
FPGA
NIOS II
2
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Avalon Switch Fabric
Nios II
CPU
Cache
−- Nios
Developed
By Altera
II Plus Internally
All Peripherals
Written In HDL
−- Can
Harvard
Architecture
Be Targeted
For All Altera FPGAs
−- Synthesis
Royalty-Free
Using Quartus II Integrated Synthesis
UART
GPIO
Timer
SPI
SDRAM
Controller
Digitale Signalverarbeitung mit FPGA
Problem: Reduce Cost, Complexity & Power
Flash
I/O
CPU
SDRAM
I/O
I/O
I/O
I/O
I/O
DSP
FPGA
CPU
DSP
Solution:: Replace External Devices
Solution
with Programmable Logic
NIOS II
3
Digitale Signalverarbeitung mit FPGA
FPGA Hardware Design Flow
Design Entry/RTL Coding
Design Specification
SOPC Builder
- Behavioral or Structural Description of Design
RTL Simulation
Functional Simulation (Modelsim,
- Functional
Simulation (Modelsim,
Quartus II)
Quartus II)
Verify Logic Model & Data Flow
- Verify Logic Model & Data Flow
(No Timing Delays)
(No Timing Delays)
LE
M512
M4K
I/O
Synthesis
- Translate Design into Device Specific Primitives
- Optimization to Meet Required Area & Performance Constraints
- Spectrum, Synplify, Quartus II
Place & Route
- Map Primitives to Specific Locations Inside
Target Technology with Reference to Area &
Performance Constraints
- Specify Routing Resources to Be Used
NIOS II
4
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Digitale Signalverarbeitung mit FPGA
FPGA Hardware Design Flow
Timing Analysis
tclk
- Verify Performance Specifications Were Met
- Static Timing Analysis
Gate Level Simulation
- Timing Simulation
- Verify Design Will Work in Target Technology
Test FPGA on PC Board
- Program & Test Device on Board
- Use SignalTap II for Debugging
NIOS II
5
Digitale Signalverarbeitung mit FPGA
DBC2C20 NIOS II Development Kit
USB OTG
2x CAN Phy
4x RS485 Phy
Download /JTAG
Debug Connector
RS232 Phy
24pin 3V3 GPIO
Temperature Sensor
16 MB SDRAM
8 MB Flash
Power Connector
24V I/O
Buttons
7-Segment
Anzeige
Power LED
LEDs
LVDS I/O
NIOS II
6
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
10/100 Ethernet
PHY & RJ-45
Connector
Digitale Signalverarbeitung mit FPGA
Reference Designs For Dev Kits
Several reference designs are available
See altera\kits\nios2.60\examples\verilog
or altera\kits\nios2.60\examples\vhdl
NIOS II
7
Digitale Signalverarbeitung mit FPGA
Standard Design Block Diagram
8MB
FLASH
16MB
SDRAM
RS232
Driver
RS485
Driver
SDRAM
Controller
UART
UART
Nios II Processor
Address (32)
Write
Data Out (32)
IRQ
IRQ
On-Chip
NIOS II
Off-Chip
8
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Tri-State
Bridge
ROM
(with Monitor)
General
Purpose
Timer
Periodic
Timer
LED PIO
Button PIO
GPIO
3 LEDs
Buttons
Header
Ethernet
10/100
MAC
CAN
CAN
Driver
Ethernet
Phy
Data In (32)
Avalon Switch Fabric
32-Bit
Nios II
Processor
Read
Digitale Signalverarbeitung mit FPGA
Nios II System Architecture
Instr.
Nios II
CPU
Address
Decoder
Data
Interrupt
Controller
On-Chip
Debug Core
UART 0
Avalon
Master/
Slave
Port
Interfaces
Timer 0
SPI 0
Wait State
Generation
GPIO 0
Data in
Multiplexer
Off-Chip
Software Trace
Memory
DMA 0
Master
Arbitration
Dynamic
Bus Sizing
Avalon Switch Fabric
NIOS II
UART n
Timer n
SPI n
GPIO n
DMA n
Memory
Interface Memory
Interface
User-Defined
InterfaceUser-Defined
Interface
9
Digitale Signalverarbeitung mit FPGA
Nios II Processor Architecture
Classic
Pipelined RISC Machine
− 32 General Purpose Registers
− 3 Instruction Formats
− 32-Bit Instructions
− 32-Bit Data Path
− Separate Instruction and Data Cache (configurable sizes)
− Branch Prediction
− 32 Prioritized Interrupts
− Custom Instructions
− JTAG-Based Hardware Debug Unit
NIOS II
10
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Digitale Signalverarbeitung mit FPGA
Nios II Block Diagram
Nios II Processor Core
reset
clock
JTAG interface
to Software
Debugger
HardwareAssisted
Debug Module
Program
Controller
&
Address
Generation
General
Purpose
Registers
r0 to r31
Instruction
Master
Port
Instruction
Cache
Exception
Controller
Interrupt
Controller
irq[31..0]
Custom
I/O Signals
NIOS II
Custom
Instruction
Logic
Control
Registers
ctl0 to ctl4
Arithmetic
Logic Unit
Data
Cache
Data
Master
Port
11
Digitale Signalverarbeitung mit FPGA
Nios II Versions
Nios
II Processor Comes In Three ISA Compatible
Versions
− FAST: Optimized for Speed
− STANDARD: Balanced for Speed and
Size
− ECONOMY: Optimized for Size
Software
− Code is Binary Compatible
NIOS II
No Changes Required When CPU is Changed
12
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Digitale Signalverarbeitung mit FPGA
Binary Compatibility / Flexible Performance
Nios II /f
Fast
Nios II /s
Standard
Nios II /e
Economy
Pipeline
6 Stage
5 Stage
None
H/W Multiplier &
Barrel Shifter
1 Cycle
3 Cycle
Emulated
In Software
Branch Prediction
Dynamic
Static
None
Instruction Cache
Configurable
Configurable
None
Data Cache
Configurable
None
None
1400 - 1800
1200 – 1400
600 – 700
Logic Usage
(Logic Elements)
Custom
Instructions
NIOS II
Up to 256
13
Digitale Signalverarbeitung mit FPGA
Hardware Multiplier Acceleration
Nios II Economy version - No Multiply Hardware
− Uses GNUPro Math Library to Implement Multiplier
Nios II Standard - Full Hardware Multiplier
− 32 x 32 32 in 3 Clock Cycles if DSP block present,
else uses software only multiplier
Nios II Fast - Full Hardware Multiplier
− 32 x 32 32 in 1 Clock Cycles if DSP block present,
else uses software only multiplier
Acceleration Clock Cycles
Hardware
(32 x 32 32)
None
NIOS II
14
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
250
Standard
MUL in Stratix
3
Fast
MUL in Stratix
1
Digitale Signalverarbeitung mit FPGA
Hardware Multiplier Support
Stratix and Stratix II DSP Blocks
Cyclone II Multiplier Blocks
− Multiplication using 18 x 18 Multiplier Block
Optional LE Implementation
− Enables HW multiplier support for Cyclone Device Family
− Can also use in Stratix and Stratix II instead of DSP Blocks
− Mul, Shift, Rotate (~ 8 Clocks Per Mul)
− Eliminates need for DSP blocks for Nios II MUL
NIOS II
15
Digitale Signalverarbeitung mit FPGA
Variation with FPGA Device
250
Fast
DMIPS
200
150
Standard
100
50
Economy
0
0
500
1000
1500
Logic Elements
Stratix II
NIOS II
16
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Stratix
Cyclone
HC-Stratix
2000
Digitale Signalverarbeitung mit FPGA
SOPC Builder - System Contents
IRQ Priorities
Connection Panel
Address Map
Clock Domains
Component
NIOS II
17
Digitale Signalverarbeitung mit FPGA
Insert Peripherals Including Nios II Processor
Double-click on peripheral or press Add…
Build up memory map of your embedded system
Eg.
System Memory Space
0x001000000
SDRAM
0x000800000
Other
Peripherals
0x000400000
Flash
0x0
NIOS II
18
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Digitale Signalverarbeitung mit FPGA
Quartus II Project Directories
Hardware
− HDL Source & Netlist
− db - Quartus project
database
Software
− Application source code
− Library files
All other
Quartus II
and SOPC
Builder
System files
…
Simulation
− ModelSim project
− Automatically generated
test memory and vectors
NIOS II
19
Digitale Signalverarbeitung mit FPGA
SOPC Builder Flow
SOPC Builder GUI
Processor Library
Configure Processor
Custom Instructions
Peripheral Library
Select & Configure
Peripherals, IP
IP Modules
Hardware Development
Software Development
Nios II IDE
Connect Blocks
HDL Source Files
Testbench
Generate
Hardware
Configuration
File
Synthesis &
Fitter
Verification
& Debug
JTAG,
Serial, or
Ethernet
User Design
Other IP Blocks
Altera
PLD
Quartus II
NIOS II
20
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Executable
Code
On-Chip
Debug
Software Trace
Hard Breakpoints
SignalTap® II
C Header files
Custom Library
Peripheral Drivers
Compiler,
Linker, Debugger
User Code
Libraries
RTOS
GNU Tools
Digitale Signalverarbeitung mit FPGA
Running Code On A Target
Nios II IDE can be used to download code to target board
NIOS II
21
Digitale Signalverarbeitung mit FPGA
Running Code On A Target
Download messages, stdout and stdin appear in console
window
NIOS II
22
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Digitale Signalverarbeitung mit FPGA
System ID Peripheral Revisited
When downloading code to a target, Nios II IDE computes
expected System ID peripheral values from PTF file
− If computed ID values do not match System ID variables stored
on the target board then an error is flagged
− Generally, to fix this you should recompile your hardware
NIOS II
To disable this option
see Run > Run Main Page
23
Digitale Signalverarbeitung mit FPGA
Avalon Switch Fabric
Proprietary interconnect specification used with Nios II
Principal design goals
Nios II Processor
32-Bit
Nios II
Processor
Transfer Types
−
−
−
−
−
NIOS II
Slave Transfers
Master Transfers
Streaming Transfers
Latency-Aware Transfers
Burst Transfers
24
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
Switch
PIO
Address (32)
Read
Write
Data In (32)
Data Out (32)
IRQ
IRQ #(6)
ROM
(with Monitor)
UART
Timer
Avalon Switch Fabric
− Low resource utilization for
bus logic
− Simplicity
− Synchronous operation
LED PIO
7-Segment
LED PIO
PIO-32
UserDefined
Interface
Digitale Signalverarbeitung mit FPGA
Nios II - Leads The Industry
Highest
Performance
Multi-Processor
Hardware Acceleration
Custom Instructions
Greatest
Flexibility
Processors
Peripherals
Optimized Interconnect
Most Powerful
Design Tools
Fastest Time
to Market
NIOS II
25
Digitale Signalverarbeitung mit FPGA
Krah SS 2007 NIOS II
SOPC Builder
Nios II IDE
On-Chip Processor Debug
SignalTap® II Logic Analyzer
Concept to System in Minutes
FPGA > HardCopy Structured
ASIC