Hervé BOEGLEN MASTER SEC
Introduction à la conception SoPC
Plan
1. Introduction
2. Technologie des FPGA
3. Les HDL
4. Le langage VHDL
5. Outils de développement ALTERA
(Quartus II + DE2)
3/72
1. Introduction
Evolution de l’électronique depuis 1948
2011 : Intel Core I7 2600K, 32nm :
Die : 216mm
21,16 x 10
9transistors !
1. Introduction
La loi de Moore
5/72
1. Introduction
La densité de puissance
1. Introduction
Les systèmes numériques aujourd’hui :
7/72
1. Introduction
La conception des systèmes numériques :
1. Introduction
Les cibles logicielles et matérielles :
Les cibles logicielles (=µP, µC, DSP)
9/72
1. Introduction
Les µP :
1. Introduction
Les µC :
11/72
1. Introduction
Les µC :
1. Introduction
Les Digital Signal Processors (DSP) :
13/72
1. Introduction
Les Digital Signal Processors (DSP) :
1. Introduction
En résumé sur les cibles logicielles :
• Avantages :
– Flexibilité: il suffit de modifier le programme pour modifier l’application
– Simple à mettre en œuvre grâce à la programmation de haut niveau (langage C) (possibilité de grande abstraction par rapport au matériel)
– Temps de conception courts et coûts de conception faibles – Prix de revient faible
• Inconvénients :
– Faibles performances (consommation de puissance, vitesse de fonctionnement, puissance de calcul, etc,) à cause
15/72
1. Introduction
Les cibles matérielles spécialisées (ASIC) :
1. Introduction
Les différentes cibles matérielles :
17/72
1. Introduction
ASIC full custom :
1. Introduction
ASIC standard cell :
19/72
1. Introduction
ASIC gate array:
1. Introduction
ASIC gate array:
21/72
1. Introduction
Circuit configurable (ici FPGA) :
1. Introduction
Le marché des FPGA :
Xilinx
All Others Altera
58%
31% 11%
23/72
1. Introduction
ASIC vs FPGA:
1. Introduction
De 1997 à 2005 : évolution des coûts
25/72
1. Introduction
Temps de conception comparés :
1. Introduction
Conclusion ASIC :
• Avantages :
– Haute intégration,
– Hautes performances (vitesse, consommation), – Coûts unitaires faibles en production de masse – Personnalisation
– Sécurité industrielle
• Inconvénients :
– Prix du 1er exemplaire, – Pas d’erreur possible – Non-flexible
27/72
1. Introduction
Conclusion FPGA :
• Avantages :
– Possibilité de prototypage, – Low time to market
– Adaptabilité aux évolutions futures (reconfiguration) – Flexibilité
• Inconvénients :
– Intégration limitée,
– Moins performant qu’un ASIC
– Prix unitaire élevé en production de masse
1. Introduction
Mais les méthodes de conception évoluent car :
• Toujours plus d’intégration (SoC)
• Les FPGA sont de plus en plus performants et de moins en moins chers,
• Les FPGA remplacent peu à peu les ASIC…
29/72
2. Technologie des FPGA
2. Technologie des FPGA
Field Programmable Gate Array
Gate Array
Two-dimensional array of logic gates
Traditionally connected with customized metal
Every logic circuit (customer) needs a custom- manufactured chip
Field Programmable
What is an FPGA ?
31/72
Basic Internals of an FPGA
Logic Element
Each logic element is
to implement the desired function programmed to
Programmable Connections
Logic Element
Logic Element
Logic Element
Logic Element
Logic Element
Logic Element
Logic Element
Logic Element
2. Technologie des FPGA
FPGA Logic Element
Look-Up Table (LUT) + register + extra …
FPGAs typically use 4-input or larger LUTs
Cyclone family (low cost): 4-inputs
Stratix II: Adaptive Logic Module implements 4 – 6 input
A
B Out
0 0
0 0 1
A B
Out LUT
0 1
SRAM Cell
2. Technologie des FPGA
33/72
Connecting the Logic
Logic elements implement the pieces of the circuit
Now hook them up with the programmable routing
LE
FPGA x
y z
f I/O Pads
I/O Pad
2. Technologie des FPGA
Programmable Routing
Programmable switches connect fixed metal wires
Choose pattern so any logic element can connect to any other
Logic Block In1 Out
In2
SRAM
2. Technologie des FPGA
35/72
Modern, mid-size FPGA – 2S60
Adaptive Logic Modules
M512 Block
M4K Block High-Speed I/O Channels with Dynamic Phase Alignment (DPA) I/O Channels with
External Memory Interface Circuitry
M-RAM Blocks I/O Channels with External Memory Interface Circuitry
Digital Signal Processing (DSP) Blocks
Phase-Locked Loops (PLL) High-Speed I/O Channels with DPA
60,440 Equivalent Logic Elements 2,544,192 Memory Bits
90nm Stratix II 2S60
2. Technologie des FPGA
2. Technologie des FPGA
Low-cost Cyclone II range
37/72
2. Technologie des FPGA
Low-cost Cyclone II IO
2. Technologie des FPGA
400MHZ max mais traitement parallèle !
Exemple soit à réaliser :
• Réalisation logicielle à 400MHz : 7 cycles machine
= 17,5 ns
• Réalisation matérielle : temps de traversée des
portes = 2 ns
39/72
3. Les HDL
Définition :
Un langage de description de matériel (Hardware Description Language, HDL) est une instance d'une classe de langage
informatique ayant pour but la description formelle d'un système électronique. Il peut généralement :
• décrire le fonctionnement du circuit,
• décrire sa structure,
• et servir à vérifier sa fonctionnalité par simulation ou preuve formelle.
Un HDL est une représentation textuelle d'un comportement
temporel ou d'une structure d'un circuit. En comparaison avec un langage de programmation classique, la syntaxe et la sémantique des HDL inclut des notations pour exprimer la concurrence et le temps, qui sont les principaux attributs du matériel. Les classes de langages dont la seule caractéristique est de décrire un circuit par une hiérarchie de blocs interconnectés est appelée une netlist.
3. Les HDL
But :
la simulation :
• L'un des objectifs des HDL est d'aboutir à une représentation
exécutable d'un circuit, soit sous forme autonome, soit à l'aide d'un programme externe appelé simulateur. Cette forme exécutable comporte une description du circuit à simuler, un générateur de stimuli (vecteurs de test), ainsi que le dispositif implémentant la sémantique du langage et l'écoulement du temps.
Il existe deux types de simulateurs, à temps discret, généralement pour le numérique, et à temps continu pour l'analogique. Des HDL existent pour ces deux types de simulations.
La synthèse :
• En n'utilisant qu'un sous-ensemble d'un HDL, un programme spécial
41/72
3. Les HDL
Il existe un grand nombre de HDL :
VHDL (Europe)
Verilog (USA)
SystemC
SystemVerilog
…
4. Le langage VHDL
VHDL (VHSIC Hardware Description Langage) est un langage de description de matériel, c'est-à-dire un langage utilisé pour décrire un système numérique matériel, comme, par exemple, un flip-flop (bascule D) ou un microprocesseur
Il peut modéliser un système par n'importe quelle vue, structurelle ou comportementale, à tous les niveaux de description.
De plus il peut servir non seulement à simuler un système mais aussi à le synthétiser, c'est-à-dire être transformé par des logiciels adaptés (synthétiseurs) en une série de portes logiques prêtes à être gravées sur du silicium.
VHDL est l'un des trois grands langages de description de matériel utilisés majoritairement dans l'industrie, avec VHDL et SystemC.
43/72
4. Le langage VHDL
Structure d’une description VHDL :
Une description VHDL est composée de 2 parties indissociables à savoir :
• L’entité (ENTITY), elle définit les entrées et sorties.
• L’architecture (ARCHITECTURE), elle contient les instructions VHDL permettant de réaliser le
fonctionnement attendu.
4. Le langage VHDL
Exemple : Démultiplexeur 2 vers 4 :
45/72
4. Le langage VHDL
Exemple : Démultiplexeur 2 vers 4 :
4. Le langage VHDL
Instructions concurrentes et séquentielles :
Comme tout langage de description de matériel, le VHDL décrit des structures par assemblage
d'instructions concurrentes dont l'ordre d'écriture n'a aucune importance, contrairement aux instructions séquentielles qui sont exécutées les unes après les autres, comme c'est la cas du C.
VHDL offre cependant la possibilité d'utiliser des
instructions séquentielles, plus naturelles pour l'homme, par le biais de processus process. Les processus
peuvent avoir leurs propres variables locales variable .
47/72
4. Le langage VHDL
Le fonctionnement du processus est régi par les règles suivantes :
Un processus est une boucle infinie , lorsqu'il arrive à la fin du code, il reprend automatiquement au début,
Un processus doit être sensible des points d'arrêt de façon à le
synchroniser. La synchronisation est donc indiquée par un point d'arrêt qui est évènement particulier. Il existe 2 types de points d'arrêts :
• Le processus est associé à une "liste de sensibilité" qui contient une liste de signaux qui réveillent le processus lors d'un changement d'un des signaux. Sa syntaxe est process(liste de signaux)
• Le processus a des instructions d'arrêt wait dans sa description interne. Le wait est sensible soit à un signal soit à un temps physique,
Les variables sont internes au processus et sont affectées immédiatement, contrairement aux signaux qui eux ne sont pas affectés directement mais par le biais de leur échéancier qui est mis à jour en fin de processus avec la nouvelle valeur et le temps d'affectation qui correspond à un delta-cycle après le signal ayant réveillé le processus.
4. Le langage VHDL
Exemples :
49/72
4. Le langage VHDL
Règle d’or : pas de synthèse sans simulation
testbench.
4. Le langage VHDL
Testbench :
51/72
5. Outils de développement ALTERA Software & Development Tools
Quartus II
All Stratix, Cyclone & Hardcopy Devices
APEX II, APEX 20K/E/C, Excalibur, &
Mercury Devices
FLEX 10K/A/E, ACEX 1K, FLEX 6000 Devices
MAX II, MAX 7000S/AE/B, MAX 3000A Devices
Quartus II Web Edition
Free Version
Not All Features & Devices Included
• S for Feature Comparison
5. Outils de développement ALTERA
Synthesis
3-rd Party or Altera
Placement
& Routing
Physical Synthesis
Timing &
Power Analysis IP Cores
// Begin: Write Control always @ (posedge wrbusy_int) begin
write0 <= 1'b1;
write1 <= 1'b0;
writex <= 1'b0;
end
always @ (negedge wrbusy_int) begin
write0 <= 1'b0;
end
always @ (posedge write0_done) begin
write1 <= 1'b1;
// Begin: Write Control always @ (posedge wrbusy_int) begin
write0 <= 1'b1;
write1 <= 1'b0;
writex <= 1'b0;
end
always @ (negedge wrbusy_int) begin
write0 <= 1'b0;
end
always @ (posedge write0_done) begin
write1 <= 1'b1;
// Begin: Write Control always @ (posedge wrbusy_int) begin
write0 <= 1'b1;
write1 <= 1'b0;
writex <= 1'b0;
end
always @ (negedge wrbusy_int) begin
write0 <= 1'b0;
end
always @ (posedge write0_done) begin
write1 <= 1'b1;
Report
Assembler
Over 10 Million
53/72
5. Outils de développement ALTERA
53
SignalTap II Logic Analyzer
Embedded Logic Analyzer
Downloads into Device with Design
Captures State of Internal Nodes
Uses JTAG for Communication
5. Outils de développement ALTERA
SignalTap II Logic Analyzer
55/72
5. Outils de développement ALTERA
55
Specifications FPGA
• Cyclone II EP2C35F672C6 FPGA and EPCS16 serial configuration device
I/O Devices
• Built-in USB Blaster for FPGA configuration
• 10/100 Ethernet, RS-232, Infrared port
• Video Out (VGA 10-bit DAC)
• Video In (NTSC/PAL/Multi-format)
• USB 2.0 (type A and type B)
• PS/2 mouse or keyboard port
• Line-in, Line-out, microphone-in (24-bit audio CODEC)
• Expansion headers (76 signal pins) Memory
• 8-MB SDRAM, 512-KB SRAM, 4-MB Flash
• SD memory card slot
Switches, LEDs, Displays, and Clocks
• 18 toggle switches
• 4 debounced pushbutton switches
• 18 red LEDs, 9 green LEDs
• Eight 7-segment displays
• 16 x 2 LCD display
• 27-MHz and 50-MHz oscillators, external SMA clock input
DE2 board
6. NIOS II et SoPC Builder What is Nios II?
Altera’s Second Generation Soft-Core 32 Bit RISC Microprocessor
Developed Internally By Altera
Harvard Architecture
Royalty-Free
Avalon Switch Fabric UART
GPIO Timer
SPI SDRAM Controller On-Chip
ROM On-Chip
RAM Nios II
CPU Debug Cache
57/72
6. NIOS II et SoPC Builder
Problem: Reduce Cost, Complexity & Power
Flash
SDRAM
CPU
DSP
I/O
I/O
I/O FPGA
I/O I/O I/O
CPU DSP
Solution: Replace External Devices with Programmable Logic
FPGA
6. NIOS II et SoPC Builder
Flash
SDRAM
System On A Programmable Chip (SOPC)
FPGA
59/72
6. NIOS II et SoPC Builder
FPGA Hardware Design Flow
with Quartus II and SOPC Builder
• Create FPGA project in Quartus II
• Build embedded sub-system in SOPC Builder
• Integrate sub-system in Quartus II
• Compile and generate a programming file
.sof / .pof file
6. NIOS II et SoPC Builder
On-Chip Debug Core
Off-Chip Software Trace
Memory
UART n
Timer n
SPI n
GPIO n
DMA n Instr.
Data
Address Decoder
Interrupt Controller
Wait State Generation
Data in Multiplexer
Avalon Master/
Slave Port Interfaces
Master Arbitration
Nios II System Architecture
UART 0
Timer 0
SPI 0
GPIO 0
DMA 0
Memory Nios II
CPU
61/72
6. NIOS II et SoPC Builder
Nios II Block Diagram
Program Controller
&
Address Generation
Instruction Cache clock
reset
irq[31..0]
Control Registers ctl0 to ctl4
Arithmetic Logic Unit Hardware-
Assisted Debug Module
Interrupt Controller JTAG interface
to Software Debugger
Custom Instruction
Logic
Exception Controller
Instruction Master Port
Data Cache
Data Master Port General
Purpose Registers r0 to r31
Custom I/O Signals
Nios II Processor Core
6. NIOS II et SoPC Builder
Nios II Processor Architecture
Classic Pipelined RISC Machine
−
32 General Purpose Registers
−
3 Instruction Formats
−
32-Bit Instructions
−
32-Bit Data Path
−
Flat Register File
−
Separate Instruction and Data Cache (configurable sizes)
−
Branch Prediction
−
32 Prioritized Interrupts
63/72
6. NIOS II et SoPC Builder Nios II Versions
Nios II Processor Comes In Three ISA Compatible Versions
Software
Code is Binary Compatible
• No Changes Required When CPU is Changed
− FAST: Optimized for Speed
− STANDARD: Balanced for Speed and Size
− ECONOMY: Optimized for Size
6. NIOS II et SoPC Builder
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
65/72
6. NIOS II et SoPC Builder Nios II: Hard Numbers
Nios II/f Nios II/s Nios II/e Stratix II
200 DMIPS @ 175MHz1180 LEs 1 of 8 DSP
4K Icache, 2K Dcache Stratix 2S10-C5
90 DMIPS @ 175MHz 800 LEs
4K Icache, No Dcache Stratix 2S10-C5
28 DMIPS @ 190MHz 400 LEs
No Icache, No Dcache Stratix 2S10-C5
Stratix
150 DMIPS @ 135MHz 1800 LEs1 of 8 DSP
4K Icache, 2K Dcache Stratix 1S10-C5
67 DMIPS @ 135MHz 1200 LEs
4K Icache, No Dcache Stratix 1S10-C5
22 DMIPS @ 150MHz 550 LEs
No Icache, No Dcache Stratix 1S10-C5
Cyclone
100 DMIPS @ 125MHz 1800 LEs4K Icache, 1K Dcache Cyclone 1C4-C6
62 DMIPS @ 125MHz 1200 LEs
2K Icache, No Dcache Cyclone 1C4-C6
20 DMIPS @ 140MHz 550 LEs
No Icache, No Dcache Cyclone 1C4-C6
* FMax Numbers Based Reference Design Running From On-Chip Memory (Nios II/f ≅1.15 DMIPS / MHz)
6. NIOS II et SoPC Builder
SOPC Builder
Altera, Partner & User Cores
− Processors
− Memory Interfaces
− Peripherals
− Bridges
− Hardware Accelerators
− Import User Logic Over 60
System Contents Page
67/72
6. NIOS II et SoPC Builder
Notion de bloc IP :
6. NIOS II et SoPC Builder
Notion de bloc IP :
69/72
6. NIOS II et SoPC Builder
Nios II System Design Flow
Connect Blocks
Processor Library Custom Instructions
Peripheral Library Select & Configure Peripherals, IP
IP Modules Configure Processor
C Header files
Custom Library
Peripheral Drivers
Compiler, Linker, Debugger
Software Development
User Code
Libraries
RTOS
GNU Tools Generate
SOPC Builder GUI
HDL Source Files
Testbench
Synthesis &
Fitter
User Design
Other IP Blocks
Hardware Development
Quartus II
On-Chip Debug
Software Trace Hard Breakpoints
SignalTap® II
Altera FPGA
JTAG, Serial, or Ethernet
Executable Code Hardware
Configuration File
Verification
& Debug
Nios II IDE
6. NIOS II et SoPC Builder
Nios II IDE (Integrated Development Environment)*
Leading Edge Software Development Tool
Target Connections
− Hardware (JTAG)
− Instruction Set Simulator
− ModelSim®-Altera Software
Advanced Hardware Debug Features
− Software and Hardware Break Points, Data Triggers, Trace
Flash Memory Programming
71/72
6. NIOS II et SoPC Builder
Nios II IDE
List of Open Projects
Terminal window
File Viewer Window (for C code, C++, and assembly*)