The Xilinx Spartan-3E FPGA family. Field Programmable Gate Array (FPGA) Configurable Logic Block (CLB) –Look-up table (LUT) –Register –Logic circuit Adder.

Slides:



Advertisements
Similar presentations
VHDL Lecture 1 Megan Peck EECS 443 Spring 08.
Advertisements

Spartan II Features  Plentiful logic and memory resources –15K to 200K system gates (up to 5,292 logic cells) –Up to 57 Kb block RAM storage  Flexible.
FPGA-Based System Design: Chapter 3 Copyright  2004 Prentice Hall PTR SRAM-based FPGA n SRAM-based LE –Registers in logic elements –LUT-based logic element.
History TTL-logic PAL (Programmable Array Logic)
ECE C03 Lecture 161 Lecture 16 Introduction to VHDL Prith Banerjee ECE C03 Advanced Digital Design Spring 1998.
ECE C03 Lecture 17ECE C03 Lecture 61 Lecture 17 VHDL Structural Modeling Prith Banerjee ECE C03 Advanced Digital Design Spring 1998.
COE 405 Basic Concepts in VHDL Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh.
02/02/20091 Logic devices can be classified into two broad categories Fixed Programmable Programmable Logic Device Introduction Lecture Notes – Lab 2.
FPGAs and VHDL Lecture L12.1. FPGAs and VHDL Field Programmable Gate Arrays (FPGAs) VHDL –2 x 1 MUX –4 x 1 MUX –An Adder –Binary-to-BCD Converter –A Register.
ECE C03 Lecture 18ECE C03 Lecture 61 Lecture 18 VHDL Modeling of Sequential Machines Prith Banerjee ECE C03 Advanced Digital Design Spring 1998.
The Spartan 3e FPGA. CS/EE 3710 The Spartan 3e FPGA  What’s inside the chip? How does it implement random logic? What other features can you use?  What.
ECE C03 Lecture 121 Lecture 12 Introduction to VHDL Hai Zhou ECE 303 Advanced Digital Design Spring 2002.
Introduction to VHDL CSCE 496/896: Embedded Systems Witawas Srisa-an.
Topics of Lecture Structural Model Procedures Functions Overloading.
1/31/20081 Logic devices can be classified into two broad categories Fixed Programmable Programmable Logic Device Introduction Lecture Notes – Lab 2.
Topics Entity DeclarationsEntity Declarations Port ClausePort Clause Component DeclarationComponent Declaration Configuration DeclarationConfiguration.
FPGAs and VHDL Lecture L13.1 Sections 13.1 – 13.3.
ECE C03 Lecture 141 Lecture 14 VHDL Modeling of Sequential Machines Hai Zhou ECE 303 Advanced Digital Design Spring 2002.
VHDL. What is VHDL? VHDL: VHSIC Hardware Description Language  VHSIC: Very High Speed Integrated Circuit 7/2/ R.H.Khade.
Package with 4-valued logic Signal Attributes Assertion Data Flow description.
The Xilinx Spartan 3 FPGA EGRE 631 2/2/09. Basic types of FPGA’s One time programmable Reprogrammable (non-volatile) –Retains program when powered down.
Introduction to VHDL (part 2)
1 H ardware D escription L anguages Basic Language Concepts.
System Arch 2008 (Fire Tom Wada) /10/9 Field Programmable Gate Array.
1 H ardware D escription L anguages Modeling Complex Systems.
George Mason University ECE 545 – Introduction to VHDL Timing Event-driven simulation ECE 545 Lecture 8.
The Xilinx Spartan 3 FPGA EGRE 631 2/2/09. Basic types of FPGA’s One time programmable Reprogrammable (non-volatile) –Retains program when powered down.
VHDL Introduction. V- VHSIC Very High Speed Integrated Circuit H- Hardware D- Description L- Language.
VHDL IE- CSE. What do you understand by VHDL??  VHDL stands for VHSIC (Very High Speed Integrated Circuits) Hardware Description Language.
2-Jun-16EE5141 Chapter 3 ä The concept of the signal ä Process concurrency ä Delta time ä Concurrent and sequential statements ä Process activation by.
ECE 448 Lecture 6 FPGA devices
Basic Modeling Constructs Instructors: Fu-Chiung Cheng ( 鄭福炯 ) Associate Professor Computer Science & Engineering Tatung University.
BR 1/991 Issues in FPGA Technologies Complexity of Logic Element –How many inputs/outputs for the logic element? –Does the basic logic element contain.
1 ECE 545 – Introduction to VHDL Dataflow Modeling of Combinational Logic Simple Testbenches ECE 656. Lecture 2.
VHDL Very High Speed Integrated Circuit Hardware Description Language Shiraz University of shiraz spring 2011.
Modern VLSI Design 4e: Chapter 8 Copyright  2008 Wayne Wolf Topics VHDL register-transfer modeling: –basics using traffic light controller; –synthesis.
Electrical and Computer Engineering University of Cyprus LAB 1: VHDL.
© 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only Basic FPGA Architecture FPGA Design Flow Workshop.
(1) Basic Language Concepts © Sudhakar Yalamanchili, Georgia Institute of Technology, 2006.
15-Dec-15EE5141 Chapter 4 Sequential Statements ä Variable assignment statement ä Signal assignment statement ä If statement ä Case statement ä Loop statement.
ESS | FPGA for Dummies | | Maurizio Donna FPGA for Dummies Basic FPGA architecture.
1 Part III: VHDL CODING. 2 Design StructureData TypesOperators and AttributesConcurrent DesignSequential DesignSignals and VariablesState Machines A VHDL.
© 조준동 2008 ECE C03 Lecture 121 Lecture 12 Introduction to VHDL Hai Zhou ECE 303 Advanced Digital Design Spring 2002.
04/26/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Introduction to VHDL 12.2: VHDL versus Verilog (Separate File)
VHDL Programming Fundamentals Presented By Dr. Pradyut Kumar Biswal Department of Electronics, IIIT Bhubaneswar.
Apr. 3, 2000Systems Architecture I1 Introduction to VHDL (CS 570) Jeremy R. Johnson Wed. Nov. 8, 2000.
IAY 0600 Digital Systems Design Event-Driven Simulation VHDL Discussion Alexander Sudnitson Tallinn University of Technology.
May 9, 2001Systems Architecture I1 Systems Architecture I (CS ) Lab 5: Introduction to VHDL Jeremy R. Johnson May 9, 2001.
1/8/ L10 AttributesCopyright Joanne DeGroat, ECE, OSU1 Language Attributes and Package Standard A very useful aspect of the language.
George Mason University Behavioral Modeling of Sequential-Circuit Building Blocks ECE 545 Lecture 8.
Generic constants Generate statements. Generic constant declaration entity identifier is [generic (generic_interface_list);] [port (port_interface_list);
Case Study: Xilinx Synthesis Tool (XST). Arrays & Records 2.
Dataflow modelling Lecture 4. Dataflow modelling Specifies the functioning of a circuit without explicitly refer to its structure Functioning is described.
Issues in FPGA Technologies
Introduction to VHDL.
Basic Language Concepts
Systems Architecture Lab: Introduction to VHDL
Topics SRAM-based FPGA fabrics: Xilinx. Altera..
B e h a v i o r a l to R T L Coding
CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC
Field Programmable Gate Array
Field Programmable Gate Array
Field Programmable Gate Array
FIGURE 7.1 Conventional and array logic diagrams for OR gate
CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC
RTL Style در RTL مدار ترتيبي به دو بخش (تركيبي و عناصر حافظه) تقسيم مي شود. مي توان براي هر بخش يك پروسس نوشت يا براي هر دو فقط يك پروسس نوشت. مرتضي صاحب.
Modeling Complex Behavior
Sequntial-Circuit Building Blocks
Implementing Logic Gates and Circuits
FPGA’s 9/22/08.
Presentation transcript:

The Xilinx Spartan-3E FPGA family

Field Programmable Gate Array (FPGA) Configurable Logic Block (CLB) –Look-up table (LUT) –Register –Logic circuit Adder Multiplier Memory Microprocessor Input/Output Block (IOB) Programmable interconnect

Xilinx FPGA families High performance –Virtex (1998) 50K-1M gates, 0.22µm –Virtex-E/EM (1999) 50K-4M gates, 0.18µm –Virtex-II (2000) 40K-8M gates, 0.15µm –Virtex-II Pro/X (2002) 50K-10M gates, 0.13µm –Virtex-4 (2004) [LX, FX, SX] 50K-10M gates, 90nm –Virtex-5 (2006) [LX, LXT, SXT] 65nm Low cost –Spartan-II (2000) 15K-200K gates, 0.22µm –Spartan-IIE (2001) 50K-600K gates, 0.18µm –Spartan-3 (2003) 50K-5M gates, 90nm –Spartan-3E (2005) 100K-1.6M gates, 90nm

Spartan-3E architecture

Four Types of Interconnect Tiles

Array of Interconnect Tiles

Interconnect Types

Simplified IOB Diagram 3.3V low-voltage TTL (LVTTL) Low-voltage CMOS (LVCMOS) at 3.3V, 2.5V, 1.8V, 1.5V, or 1.2V 3V PCI at 33 MHz, 66 MHz HSTL I and III at 1.8V SSTL I at 1.8V and 2.5V LVDS, Bus LVDS, mini-LVDS, RSDS Differential HSTL, SSTL 2.5V LVPECL inputs

Spartan-3 CLB array

Arrangement of Slices within the CLB

Resources in a Slice

Simplified Diagram of the Left- Hand SLICEM

LUT Resources in a Slice

Dedicated Multiplexers

Carry Logic

Using the Carry Logic

RAM16X1D Dual-Port Usage

Logic Cell SRL16 Structure

Block RAM

Dedicated 18x18bit Multiplier

DCM Functional Blocks and Associated Signals Clock-skew Elimination Frequency Synthesis Phase Shifting

Simple DCM usage

Digilent Nexys2

Basic modeling constructs

Entity Declaration entity identifier is [port (port_interface_list);] {entity_declarative item} end [entity] [identifier]; interface_list <= (identifier {, …} : [mode] subtype_indication [:= expression]){; …} mode <= in | out | inout

Entity Declaration entity adder is port ( a : in word; b : in word; sum : out word); end entity adder; entity adder is port ( a, b : in word; sum : out word); end entity adder; entity and_or_inv is port ( a1, a2, b1, b2 : in bit := '1'; y : out bit ); end entity and_or_inv; entity top_level is end entity top_level;

Entity Declaration entity program_ROM is port ( address : in std_ulogic_vector(14 downto 0); data : out std_ulogic_vector(7 downto 0); enable : in std_ulogic ); subtype instruction_byte is bit_vector(7 downto 0); type program_array is array (0 to 2**14 - 1) of instruction_byte; constant program : program_array := ( X"32", X"3F", X"03", -- LDA $3F03 X"71", X"23", -- BLT $23 others => X"00„ ); end entity program_ROM;

Architecture Body architecture identifier of entity_name is {block_declarative_item} begin {concurrent_statement} end [architecture][identifier];

Architecture Body entity adder is port ( a : in word; b : in word; sum : out word); end entity adder; architecture abstract of adder is begin add_a_b : process (a, b) is begin sum <= a + b; end process add_a_b; end architecture abstract;

Signal declaration and assignment signal identifier {, …} : subtype_indication [:=expression]; [label:] name <= [delay_mechanism] waveform; waveform <= (value_expression [after time_expression]){, …} y <= not or_a_b after 5 ns;

Discrete event simulation Transaction –After signal assignment, new value at simulaton time T Active signal –Signal is updated at time T Event –New value /= old value

Discrete event simulation Initialization phase –Each signal is given an initial value –Simulation time is set to 0 –Each process is activated –Signals assigned, transactions scheduled Simulation cycle –Signal update Advance time to the next transaction Perform all scheduled transactions for this time –Process execution Wake processes which is sensitive to the previous events New events may occur

Signal assignment entity and_or_inv is port ( a1, a2, b1, b2 : in bit := '1'; y : out bit ); end entity and_or_inv; architecture primitive of and_or_inv is signal and_a, and_b : bit; signal or_a_b : bit; begin and_gate_a : process (a1, a2) is begin and_a <= a1 and a2; end process and_gate_a; and_gate_b : process (b1, b2) is begin and_b <= b1 and b2; end process and_gate_b; or_gate : process (and_a, and_b) is begin or_a_b <= and_a or and_b; end process or_gate; inv : process (or_a_b) is begin y <= not or_a_b; end process inv; end architecture primitive;

Signal assignment stimulus_05_3_a : process is begin or_a_b <= '1' after 20 ns, '0' after 40 ns; wait; end process stimulus_05_3_a; architecture test of fg_05_04 is constant prop_delay : time := 5 ns; signal a, b, sel, z : bit; begin mux : process (a, b, sel) is begin case sel is when '0' => z <= a after prop_delay; when '1' => z <= b after prop_delay; end case; end process mux;

Signal assignment clock_gen : process (clk) is begin if clk = '0' then clk <= '1' after T_pw, '0' after 2*T_pw; end if; end process clock_gen; process_05_3_b : process is constant T_pw : delay_length := 10 ns; begin clk <= '1' after T_pw, '0' after 2*T_pw; wait for 2*T_pw; end process process_05_3_b;

Signal attributes S’delayed(T) –A signal that takes on the same value as S but is delayed by time T S’stable(T) –A Boolean signal that is true if there has been no event on S in time T interval T up to the current time, othervise false S’quiet(T) –A Boolean signal that is true if there has been no transaction on S in time T interval T up to the current time, othervise false S’transaction –A signal of type bit that changes value from ‘0’ to ‘1’ or vice versa each time there is a transaction on S

Signal attributes S’event –True if there is an event on S in the current simulation cycle, false otherwise S’active –True if there is a transaction on S in the current simulation cycle, false otherwise S’last_event –The time interval since the last event on S S’last_active –The time interval since the last transaction on S S’last_value –The value of S just before the last event on S

Examples constant Tpw_clk : delay_length := 10 ns; constant Tsu : delay_length := 4 ns; if clk'event and (clk = '1' or clk = 'H') and (clk'last_value = '0' or clk'last_value = 'L') then assert d'last_event >= Tsu report "Timing error: d changed within setup time of clk"; end if; assert (not clk'event) or clk'delayed'last_event >= Tpw_clk report "Clock frequency too high";

Wait statement [label:] wait [on signal_name {, …}] [until boolean_expression] [for time_expression];

Examples half_add : process is begin sum <= a xor b after T_pd; carry <= a and b after T_pd; wait on a, b; end process half_add; half_add : process (a, b) is begin sum <= a xor b after T_pd; carry <= a and b after T_pd; end process half_add;

Examples entity mux2 is port ( a, b, sel : in bit; z : out bit ); end entity mux2; architecture behavioral of mux2 is constant prop_delay : time := 2 ns; begin slick_mux : process is begin case sel is when '0' => z <= a after prop_delay; wait on sel, a; when '1' => z <= b after prop_delay; wait on sel, b; end case; end process slick_mux; end architecture behavioral;

Examples wait until clk = '1'; report "clk rising edge detected"; wait on clk until reset = '0'; report "synchronous reset detected"; wait until trigger = '1' for 1 ms; if trigger'event and trigger = '1' then report "trigger rising edge detected"; else report "trigger timeout"; end if;

Examples test_gen : process is begin test0 <= '0' after 10 ns, '1' after 20 ns, '0' after 30 ns, '1' after 40 ns; test1 <= '0' after 10 ns, '1' after 30 ns; wait; end process test_gen;

Delta delay Signal assignment without after equivalent to a delay of 0 fs BUT the signal value does not change as soon as the signal assignment statement is executed Assignment schedules a transaction for the signal The process does NOT see the effect of the assignment until it next time resumes