L1 VHDL Intro
L1 VHDL Intro
Text-books
1. Digital System Design using VHDL by C.H. Roth. 2. Circuit Design with VHDL by Volnei A. Pedroni;
Reference Book
1. 2. 3. 4. 5. 6. 7. 8. VHDL Primer by J. Bhasker; Addison Wesley Longman Pub. Introduction to Digital Systems by M. Ercegovec, T. Lang and L.J. Moreno; Wiley VHDL: Analysis & Modeling of Digital Systems by Z. Navabi; MGH VHDL Programming by Examples by Douglas L. Perry; TMH VHDL by Douglas Perry The Designer Guide to VHDL by P.J. Ashendem; Morgan Kaufmann Pub. Digital System Design with VHDL by Mark Zwolinski; Prentice Hall Pub. Digital Design Principles and Practices by John F. Wakerly, Prentice Hall (third Edition) 2001 includes Xilinx student edition).
Overview
What is digital system design? Use of available digital components Microprocessor, e.g. Pentium Micro-controller, e.g. 8051 Digital processing units, e.g. counters, shift registers. Combine them to become a useful system
What is VHDL?
VHDL
V H I S C Very High Speed Integrated Circuit Hardware Description Language IEEE Standard 1076-1993
History of VHDL
Designed by IBM, Texas Instruments, and Intermetrics as part of the DoD funded VHSIC program Standardized by the IEEE in 1987: IEEE 1076-1987 Enhanced version of the language defined in 1993: IEEE 1076-1993 Additional standardized packages provide definitions of data types and expressions of timing data IEEE 1164 (data types) IEEE 1076.3 (numeric) IEEE 1076.4 (timing)
Procedural programming languages provide the how or recipes for computation for data manipulation for execution on a specific hardware model Hardware description languages describe a system Systems can be described from many different points of view Behavior: what does it do? Structure: what is it composed of? Functional properties: how do I interface to it? Physical properties: how fast is it?
Usage
Descriptions can be at different levels of abstraction Switch level: model switching behavior of transistors Register transfer level: model combinational and sequential logic components Instruction set architecture level: functional behavior of a microprocessor Descriptions can used for Simulation Verification, performance evaluation Synthesis First step in hardware design
Design Simulation
verify system/subsystem/chip performance prior to design implementation
Design Synthesis
automated generation of a hardware design
RTL Simulation Validation Logic Simulation Verification Fault Simulation Timing Simulation Circuit Analysis Design Rule Checking
Logic Design
Circuit Design
Design flows operate at multiple levels of abstraction Need a uniform description to translate between levels Increasing costs of design and fabrication necessitate greater reliance on automation via CAD tools $5M - $100M to design new chips Increasing time to market pressures
Physical Design
VHDL Model
Functional Design
VHDL Model
Logic Simulation
Synthesis
Timing Extraction
Automation of design refinement steps Feedback for accurate simulation Example targets: ASICs, FPGAs
Design is structured around a hierarchy of representations HDLs can describe distinct aspects of a design at multiple levels of abstraction
Geometric
Geometric
Functional
Geometric
Geometric
Entity Declaration
entity NAME_OF_ENTITY is port (signal_names: mode type; signal_names: mode type; : signal_names: mode type); end [NAME_OF_ENTITY] ;
NAME_OF_ENTITY: user defined signal_names: list of signals (both input and output) mode: in, out, buffer, inout type: boolean, integer, character, std_logic
Architecture
Behavioral Model:
architecture architecture_name of NAME_OF_ENTITY is
-- Declarations .. ..
begin
-- Statements
end architecture_name;
Half Adder
library ieee; use ieee.std_logic_1164.all; entity half_adder is port( x,y: in std_logic; sum, carry: out std_logic); end half_adder; architecture myadd of half_adder is begin sum <= x xor y; carry <= x and y; end myadd;
Entity Examples
entity half_adder is port( x,y: in std_logic; sum, carry: out std_logic); end half_adder;
A B C SUM FULL ADDER CARRY
Architecture Examples: Behavioral Description Entity FULLADDER is port ( A, B, C: in std_logic; SUM, CARRY: in std_logic); end FULLADDER; Architecture CONCURRENT of FULLADDER is begin SUM <= A xor B xor C after 5 ns; CARRY <= (A and B) or (B and C) or (A and C) after 3 ns; end CONCURRENT;
A B C
HA
C
HA
C
Test Benches
Testing a design by simulation Use a test bench model
an architecture body that includes an instance of the design under test applies sequences of test values to inputs monitors values on output signals
either using simulator or with a process that verifies correct operation