A(0)

advertisement
Electronics in High Energy Physic
Introduction to Electronics in HEP
Field Programmable Gate Arrays
Part 2
based on the lecture of S.Haas
Outline
Part 1
• Programmable Logic
• CPLD
• FPGA
–
–
–
–
Architecture
Examples
Features
Vendors and Devices
coffee break
Part 2
• VHDL
– Introduction
– Examples
• Design Flow
–
–
–
–
Entry Methods
Simulation
Synthesis
Place & Route
• IP Cores
• CERN Tools & Support
2
Introduction to VHDL
VHDL Language
• Hardware Description Language (HDL)
– High-level language for to model, simulate, and synthesize
digital circuits and systems.
• History
– 1980: US Department of Defense Very High Speed
Integrated Circuit program (VHSIC)
– 1987: Institute of Electrical and Electronics Engineers ratifies
IEEE Standard 1076 (VHDL’87)
– 1993: VHDL language was revised and updated
• Verilog is the other major HDL
– Syntax similar to C language
• At CERN VHDL is mostly used for FPGA design
• Many tools accept both Verilog and VHDL
4
Terminology
• Behavioral modeling
– Describes the functionality of a component/system
– For the purpose of simulation and synthesis
• Structural modeling
– A component is described by the interconnection of lower
level components/primitives
– For the purpose of synthesis and simulation
• Synthesis:
– Translating the HDL code into a circuit, which is then
optimized
• Register Transfer Level (RTL):
– Type of behavioral model used for instance for synthesis
5
Digital Circuits and VHDL Primitives
• Most digital systems can be described based on a few
basic circuit elements:
– Combinational Logic Gates:
• NOT, OR, AND
– Flip Flop
– Latch
– Tri-state Buffer
• Each circuit primitive can be described in VHDL and
used as the basis for describing more complex circuits.
6
Digital Circuit Primitives
•
•
•
•
Combinational Logic Gates: NOT, OR, AND
Flip Flop/Latch
Tri-state Buffer
Logic gates can be modeled using concurrent signal
assignments:
Z
Y
X
W
U
V
<=
<=
<=
<=
<=
<=
not A;
A or B;
C and D;
E nor F;
B nand D;
C xor F;
C
D
X
AND
E
W
F
NOR
• It is possible to design circuits from logic gates in this way
• For design entry it is preferable to use other VHDL structures
that allow circuit descriptions at a higher level of abstraction
7
Combinatorial Logic: Decoder
entity decoder is
port (
A : in std_logic_vector(1 downto 0);
Z : out std_logic_vector(3 downto 0)
);
end entity decoder;
Interface
architecture when_else of decoder is
begin
Z <= "0001" when A = "00" else
"0010" when A = "01" else
"0100" when A = "10" else
"1000" when A = "11" else
"XXXX";
end architecture when_else;
Functionality
Example: 2-to-4 decoder
Z(3)
A(1)
Z(2)
A(0)
Z(1)
Z(0)
A(1..0)
Z(3..0)
0
0
0
0
0
1
0
1
0
0
1
0
1
0
0
1
0
0
1
1
1
0
0
0
8
4-to-1 Multiplexer
entity mux is
port (
a, b, c, d: in std_logic;
s: in std_logic_vector(1 downto 0);
y: out std_logic);
end entity mux;
architecture mux1 of mux is
begin
process (a, b, c, d, s)
begin
case s is
when "00“ => y <= a;
when "01" => y <= b;
when "10" => y <= c;
when "11" => y <= d;
end case;
end process;
end architecture mux1;
a
b
y
c
d
S(1) S(0)
9
Sequential Logic: D-Flip Flop
architecture rtl of D_FF is
begin
process (Clock, Reset) is
begin
if Reset = ‘1’ then
Q <= ‘0’;
if rising_edge(Clock) then
Q <= D;
end if;
end process;
end architecture rtl;
Flip-flop
D
Clock
D
Q
Q
R
Reset
10
Binary Counter
entity counter is
generic (n : integer := 4);
port (
clk : in std_logic;
reset: in std_logic;
count: out std_logic_vector(n-1 downto 0)
);
use ieee.numeric_std.all;
end entity counter;
• This example is not explicit on
the primitives that are to be
used to construct the circuit.
• The “+” operator is used to
indicate the increment
operation.
architecture binary of counter is
begin
process (clk, reset)
variable cnt : unsigned(n-1 downto 0);
begin
if reset = '1' then -- async reset
cnt := (others => '0');
elsif rising_edge(clk) then
cnt := cnt + 1;
end if;
count <= std_logic_vector(cnt);
end process;
end architecture binary;
11
State Machine
If a trigger signal is received, will stretch it to 2 cycles and wait for accept signal
entity trigger is
port (
clk, reset:
in
trigger, accept : in
active:
out
end entity trigger;
std_logic;
std_logic;
std_logic);
architecture rtl of trigger is
type state_type is (s0, s1, s2);
signal cur_state,
next_state: state_type;
begin
registers: process (clk, reset)
begin
if (reset='1') then
cur_state <= s0;
elsif rising_edge(clk) then
cur_state <= next_state;
end if;
end process;
curr_state
trigger
clk
State
Transition
Logic
Output
Logic
accept
R
reset
12
State Machine (cont.)
process (cur_state, trigger, accept) is
begin
case cur_state is
when s0 =>
active <= '0';
if (trigger = '1') then
next_state <= s1;
else
next_state <= s0;
end if;
when s1 =>
active <= '1';
next_state <= s2;
when s2 =>
active <= '1';
if (accept = '1') then
next_state <= s0;
else
next_state <= s2;
end if;
end case;
end process;
S0
accept
trigger
S1
S2
clk
curr_state
State
Transition
Logic
Output
Logic
R
13
FPGA Design Flow
Design Entry/RTL Coding
Design Specification
Behavioral or Structural Description of Design
RTL Simulation
• Functional Simulation
• Verify Logic Model & Data Flow
(No Timing Delays)
LE
MEM
Synthesis
I/O
• Translate Design into Device Specific Primitives
• Optimization to Meet Required Area & Performance Constraints
Place & Route
• Map Primitives to Specific Locations inside
Target Technology with Reference to Area &
• Performance Constraints
• Specify Routing Resources to Be Used
14
FPGA Design Flow
tclk
Timing Analysis
- Verify Performance Specifications Were Met
- Static Timing Analysis
Gate Level Simulation
- Timing Simulation
- Verify Design Will Work in Target Technology
Program & Test
- Program & Test Device on Board
15
Design Entry Methods
Text-based: emacs VHDL-mode
• Special mode for editing
VHDL source files in
emacs
• Features:
–
–
–
–
Syntax colouring
Automatic completions
Automatic indentation
Templates for all VHDL
constructs
– Launching external VHDL
compiler
17
Design Entry: Visual Elite HDL
• HDL design and verification environment
• Features:
– Enables graphical and text-based design entry methods
– Design verification using built-in or external simulator
– Generation of synthesizable VHDL or Verilog code
appropriate for the selected synthesis tool
• Design unit types:
–
–
–
–
–
Block Diagram
HDL Code
State Diagram
Flowchart
Truth Table
18
Block Diagram
• Hierarchical design
methods:
– top-down
– bottom-up
• Contents of a block can
be any type of design unit
• Top-level block diagram:
– Partitioning of the design
– Connections between the
underlying HDL design
units
19
State Diagram
• “Bubble” diagram
• States
• Conditions
• Transitions
• Outputs
• Useful for developing
control modules
20
Truth Table
•
•
Normally used to describe combinatorial logic
Can also be used for sequential circuits (e.g. state machines)
21
Design Cycle: Simulation
• Functional simulation:
– simulate independent of
FPGA type
– may postpone selection
– no timing
• Timing simulation:
– simulate after place and
routing
– detailed timing
Design Entry
Simulation
Synthesis
Place & Route
Simulation
Program device & test
22
Simulation Results
Example of simulation waveforms.
Test vectors are normally defined in a VHDL unit (testbench)
23
RTL Synthesis
• Input is RTL code
• Compilation & translation
– Generates technology independent netlist
– RTL schematic (HDL code analysis)
• Technology mapping
– Mapping to technology specific structures:
•
•
•
•
•
Look-up tables (LUT)
Registers
RAM/ROM
DSP blocks
Other device specific
components/features
• Logic optimization
Design Entry
Simulation
Synthesis
Place & Route
Simulation
Program device & test
– Implementation analysis (technology view)
24
Technology Mapping Example
6-bit binary counter
Altera Stratix device
25
Design Cycle: Place and Route
• FPGA fitter
– Tools supplied by the
FPGA vendor
– Specific for each FPGA
device architecture
• Functions
– Place-and-route
– Constraints editor
– Backannotated netlist for
timing simulation
– Configuration bitstream
Design Entry
Simulation
Synthesis
Place & Route
Simulation
Program device & test
26
Example: Altera Quartus II
• Fully integrated design tool
– Multiple design entry methods
• Text-based: VHDL, Verilog,
AHDL
• Built-in schematics editor
–
–
–
–
–
Logic synthesis
Place & route
Simulation
Timing & power analysis
Create netlist for timing
simulation
– Device programming
• Xilinx ISE has similar
features
27
IP Cores & System On a
Programmable Chip (SoPC)
Macros & IP Cores
• Macros:
– Generic pre-made design blocks:
• e.g. PLL, FIFOs, DDR I/O, Multiply-accumulate, etc.
–
–
–
–
Accelerate design entry and verification
Pre-optimized for FPGA vendor architecture
Provided at no cost by the FPGA vendor to optimize performance
Instantiate block in the design:
• Makes HDL code technology dependent
• IP cores:
–
–
–
–
More complex blocks: PCI-X interface, CPU, etc.
Some are provided by the FPGA vendor
IP cores from third party suppliers cost money
Evaluation before buying usually possible
29
Macro Example
30
System On a Programmable Chip
• Many ready-made blocks for free
– RAM/FIFO
– UART
• Can buy ready-made parts, just like IC's: IP Cores
– PCI interface
– Processors (8051-style up to RISC/ARM processors)
• FPGA's with extra dedicated hardware built-in
– Gigabit serialiser
– high-end processor with RAM
• Handle different I/O standards
– LVDS, LVPECL, LVCMOS, LVTTL, PCI, PCI-X
– Programmable slew-rate, termination resistors
31
Example: Altera NIOS-II CPU
32
Tools and Support for FPGA
Design at CERN
Tools available at CERN
• Design entry:
– FPGA vendor tools
– Visual HDL
– Cadence ConceptHDL
• Simulation
– Cadence NCsim
• Synthesis
– Synplify (Synplify)
– Leonardo (Mentor)
– FPGA fitter built-in
• FPGA vendor tools:
– Altera, Xilinx, Actel, Lattice
34
Tools available at CERN (cont.)
• IP cores:
– PCI & PCI-X Master/Target for
Altera
– Altera NIOS-II Processor soft
core
– DDR SDRAM controller
– DSP cores for Altera:
• FFT, NCO, FIR
– 10/100/1000 Ethernet MAC
• If you need an IP core
contact IT-PS or the DUG
• Tools for implementing DSP
systems in FPGAs:
– Xilinx system generator for DSP
– Altera DSP builder & evaluation
kit
• Altera NIOS-II evaluation kit
• Programming cables for
FPGAs are available for
short-term loan
• Tool usage:
– Windows PC tools can be
installed from:
\\dsy-srv4\caeprogs
– CAE Sun cluster:
– login to dsy-srv
35
CERN Support for FPGA Development
• IT/PS – Tool Support
Send e-mail to: Dig-Electronics-Cae.Support@cern.ch
Direct contact: Serge Brobecker, John Evans
http://cern.ch/product-support/electronicscae.html
• Other resources:
– Mailing list for electronics designers at CERN:
cern-electronics@cern.ch
– Digital CAE User's Group (DUG):
http://wwwinfo.cern.ch/ce/dc/DUG/DUG_home.html
• Technical Training:
– Visual HDL course
– Introduction to VHDL & using the ncvhdl simulator from Cadence
http://cern.ch/humanresources/Training/tech/electronics/te_elec.asp
36
Bibliography
• Acknowledgements:
– E. van der Bij (CERN), J. Christiansen (CERN)
• Further reading:
– FPGA vendor sites:
http://www.altera.com
http://www.xilinx.com
…
– P. Alfke (Xilinx), “Field Programmable Gate Arrays in 2004”,
Proceedings of LECC’2004.
– M. Zwolinski, “Digital System Design with VHDL - 2nd Ed.”,
Prentice-Hall, 2000, (Chap. 4 & 6)
37
Download