V1 | Les bases du langage VHDL |
Programmation et simulation de FPGA avec VHDL
Objectifs
|
- Cours théorique
- Support de cours imprimé et au format PDF (en anglais).
- Le formateur répond aux questions des stagiaires en direct pendant la formation et fournit une assistance technique et pédagogique.
- Activités pratiques
- Les activités pratiques représentent de 40% à 50% de la durée du cours.
- Elles permettent de valider ou compléter les connaissances acquises pendant le cours théorique.
- Exemples de code, exercices et solutions
- Un PC (Linux ou Windows) par binôme de stagiaires (si plus de 6 stagiaires) pour les activités pratiques avec, si approprié, une carte cible embarquée.
- Le formateur accède aux PC des stagiaires pour l'assistance technique et pédagogique.
- Une machine virtuelle préconfigurée téléchargeable pour refaire les activités pratiques après le cours
- Au début de chaque demi-journée une période est réservée à une interaction avec les stagiaires pour s'assurer que le cours répond à leurs attentes et l'adapter si nécessaire
- Connaissance de la technologie numérique
- Notions d'algèbre booléenne
- Quelques notions de programmation sont souhaitables (quel que soit le langage)
- Tout ingénieur ou technicien en systèmes embarqués possédant les prérequis ci-dessus.
- Les prérequis indiqués ci-dessus sont évalués avant la formation par l'encadrement technique du stagiaire dans son entreprise, ou par le stagiaire lui-même dans le cas exceptionnel d'un stagiaire individuel.
- Les progrès des stagiaires sont évalués de deux façons différentes, suivant le cours:
- Pour les cours se prêtant à des exercices pratiques, les résultats des exercices sont vérifiés par le formateur, qui aide si nécessaire les stagiaires à les réaliser en apportant des précisions supplémentaires.
- Des quizz sont proposés en fin des sections ne comportant pas d'exercices pratiques pour vérifier que les stagiaires ont assimilé les points présentés
- En fin de formation, chaque stagiaire reçoit une attestation et un certificat attestant qu'il a suivi le cours avec succès.
- En cas de problème dû à un manque de prérequis de la part du stagiaire, constaté lors de la formation, une formation différente ou complémentaire lui est proposée, en général pour conforter ses prérequis, en accord avec son responsable en entreprise le cas échéant.
Plan du cours
- Reminder on digital electronic
- Combinational Logic
- Sequential (Synchronous) Logic
- Schematics / Hierarchical representation
- Structure of an Integrated Circuit
- SSI (small scale integration), TTL
- MSI (medium scale integration), PALs, GALs, PLDs
- LSI (large scale integration), CPLDs
- VLSI (very large scale integration), ASICs, ASSPs, FPGAs
- Development of logical architectures
- Technology constraints
- Interconnection methods (SRAM, Fuse, AntiFuse, Flash)
- Clock distribution
- Logic element types
- Look Up Table
- Basic logic cell
- I/O modules
- Timing issues
- VHDL Contributions
- Benefits of VHDL programming
- The VHDL Design Flow
- Programming
- Simulation
- Synthesis
- Mapping
- Place and Route
- Timing Analysis
- Bitstream generation
- The Entity / architecture concept
- Entity declaration
- Ports
- Different styles of architecture
- Libraries and context
- Component instantiation
- Port map
- Simulation flow and environment
- The Testbench
- Getting started with the IDE
- Creating a project from scratch
- Synthesis / Translate / Map / Place and Route (PAR) /BitGen
- Report Analysis
- Assigning I/O locations using Planahead (editing constraint file)
- Schematics Views
- Analyzing the placement
- Flashing with Impact
Exercise : | Understanding the steps of design and programming | |
Exercise : | Getting started with the simulator, waveform generation and analysis |
- Lexical items
- Comments
- Identifiers and keywords
- Characters, Strings, Numbers, Bit strings
- Constants
- Signals
- Variables and aliases
- Data types
- Scalar types:
- Integer
- Real
- Enumerated type
- Physical types
- Composite types:
- Array
- Record
- Special types
- Library and Packages
- Standard package
- IEEE packages
- Std_logic_1164 package
- Multi-valued types
- Multi-driver and resolved types
- Numeric types
- Type conversion
- Aggregates
- Attributes
- Type attributes
- Signal attributes
Exercise : | Importing a predefined hardware definition in the project, instantiating a component |
- Concurrent instructions
- Component instantiation
- Signal affectation
- Simple affectation
- With… Select… When statement
- When… Else statement
- Unaffected keyword
- Variable aggregates
- Relational operators
- Arithmetic operators
- Concatenation / Slicing
Exercise : | Coding, simulating and synthesizing a bounds enforcer | |
Exercise : | Designing a 7-segment decoder | |
Exercise : | Designing a 4-bit adder |
- Sequential instructions
- Processes
- Sensitivity list, Wait statement
- Potential interpretation incoherencies between logical synthesis and simulation
- Signal affectation
- Transparent Latch
- Use of variables
- If… Then… Else statement
- Case… When statement
- Null statement
- Iterative statements:
- For loop
- While loop
- Conditional Iteration
- Numeric_std / Numeric_bit packages
- Defined Types and Operators
- Conversion functions
- Ambiguity about the types and the « use » clause
Exercise : | Coding, simulating and synthesizing a bounds enforcer | |
Exercise : | Designing a 7-segment decoder | |
Exercise : | Designing a 4-bit adder |
- Limits of asynchronous designs
- Synchronous Design, Registers and Timing
- Pipeline notion
- D Flip-flop description
- Use of Variable for synchronous process
- Variable Synthesis
- Reset and Set management
- Clock Enable
- Tri-state buffers description
- Synchronous design methodology
- Memory Synthesis
- Asynchronous RAM
- Synchronous RAM
- Single port
- Double port
- Pipelined
- ROM
- IP generator introduction
Exercise : | Designing a counter/decounter | |
Exercise : | Designing a FIFO |
- Hierarchical division
- Analysis and Elaboration
- Components and Configurations
- Components
- Configuring components instances
- Direct instantiation
- Basic configurations
- Configuration declaration
- Default binding
- Configuration specification
- Port map and Generic map
- Genericity and automatic configuration of re-usable modules
- Packages
- Package Declarations
- Package Bodies
- Using package
- Libraries
Exercise : | Designing a generic 4-digits BCD-counter and displaying it on a 7-segment display | |
Exercise : | Enhancing a 4-bit BCD-counter/decounter to create a generic one | |
Exercise : | Working with configurations | |
Exercise : | Designing a n digits BCD-counter/decounter and displaying it on a 7-segment display |
- Synthesis
- Syntactic and Semantic Restriction
- Creating synthesizable Designs
- Inferring Hardware elements
- Initialization and Reset
- Pragmas
- Testbenches
- A few basic rules for the writing of an efficient test bench
- Potential incoherencies between logical synthesis and simulation: how to avoid it
- VHDL instructions specific to simulation
- Testbench with File I/O
Exercise : | Designing and testing a logical address decoder | |
Exercise : | Simulation of sequential processes | |
Exercise : | Advanced simulation techniques Text files |