ECE 699: Lecture 9. Programmable Logic Memories

Similar documents
ECE 545: Lecture 11. Programmable Logic Memories. Recommended reading. Memory Types. Memory Types. Memory Types specific to Xilinx FPGAs

ECE 545: Lecture 11. Programmable Logic Memories

ECE 448 Lecture 13. FPGA Memories. George Mason University

ECE 545 Lecture 17 RAM. George Mason University

Lecture 11 Memories in Xilinx FPGAs

CDA 4253 FGPA System Design Xilinx FPGA Memories. Hao Zheng Comp Sci & Eng USF

ECE 448 Lecture 5. FPGA Devices

ECE 545 Lecture 12. FPGA Resources. George Mason University

ECE 545 Lecture 12. FPGA Embedded Resources 12/8/11. Resources. Recommended reading. Use of Embedded FPGA Resources in SHA-3 Candidates

Midterm Exam. Solutions

VHDL: Modeling RAM and Register Files. Textbook Chapters: 6.6.1, 8.7, 8.8, 9.5.2, 11.2

ELE432. ADVANCED DIGITAL DESIGN HACETTEPE UNIVERSITY ROUTING and FPGA MEMORY. In part from ECE 448 FPGA and ASIC Design with VHDL

ECE 448 Lecture 5. FPGA Devices

Hardware Design with VHDL Design Example: BRAM ECE 443

CPE 626 Advanced VLSI Design Lecture 7: VHDL Synthesis

EE 459/500 HDL Based Digital Design with Programmable Logic. Lecture 15 Memories

Block RAM. Size. Ports. Virtex-4 and older: 18Kb Virtex-5 and newer: 36Kb, can function as two 18Kb blocks

ECE 645: Lecture 1. Basic Adders and Counters. Implementation of Adders in FPGAs

ECE 545 Lecture 8. Data Flow Description of Combinational-Circuit Building Blocks. George Mason University

Field Programmable Gate Array

HDL Coding Style Xilinx, Inc. All Rights Reserved

COVER SHEET: Total: Regrade Info: 2 (6 points) 3 (8 points) 4 (10 points) 8 (12 points) 6 (6 points) 7 (6 points) 9 (30 points) 10 (4 points)

COVER SHEET: Total: Regrade Info: 5 (5 points) 2 (8 points) 6 (10 points) 7b (13 points) 7c (13 points) 7d (13 points)

Topics. Midterm Finish Chapter 7

ECE 545 Lecture 6. Behavioral Modeling of Sequential-Circuit Building Blocks. George Mason University

Laboratory Memory Components

Digital System Construction

Lecture 12 VHDL Synthesis

CprE 583 Reconfigurable Computing

Programmable Logic. Simple Programmable Logic Devices

Today. Comments about assignment Max 1/T (skew = 0) Max clock skew? Comments about assignment 3 ASICs and Programmable logic Others courses

CDA 4253 FPGA System Design Op7miza7on Techniques. Hao Zheng Comp S ci & Eng Univ of South Florida

Field Programmable Gate Array (FPGA)

Basic FPGA Architecture Xilinx, Inc. All Rights Reserved

Topics. Midterm Finish Chapter 7

The Virtex FPGA and Introduction to design techniques

ECEU530. Project Presentations. ECE U530 Digital Hardware Synthesis. Rest of Semester. Memory Structures

EECS 151/251A Spring 2019 Digital Design and Integrated Circuits. Instructor: John Wawrzynek. Lecture 18 EE141

ECE 448 Lecture 3. Combinational-Circuit Building Blocks. Data Flow Modeling of Combinational Logic

ECE 448 Lecture 3. Combinational-Circuit Building Blocks. Data Flow Modeling of Combinational Logic

Digital Design Laboratory Lecture 2

CPE 626 Advanced VLSI Design Lecture 6: VHDL Synthesis. Register File: An Example. Register File: An Example (cont d) Aleksandar Milenkovic

ECEU530. Last Few Lectures. ECE U530 Digital Hardware Synthesis. What is on Quiz 2. Projects. Today:

FSM Components. FSM Description. HDL Coding Methods. Chapter 7: HDL Coding Techniques

Schedule. ECE U530 Digital Hardware Synthesis. Rest of Semester. Midterm Question 1a

PINE TRAINING ACADEMY

Timing in synchronous systems

Assignment. Last time. Last time. ECE 4514 Digital Design II. Back to the big picture. Back to the big picture

Lecture 7. Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits. Hardware Description Language)

FPGA Architecture Overview. Generic FPGA Architecture (1) FPGA Architecture

FPGAs: FAST TRACK TO DSP

FPGA design with National Instuments

VHDL And Synthesis Review

TSEA44 - Design for FPGAs

Sequential Statement

EE178 Lecture Module 2. Eric Crabill SJSU / Xilinx Fall 2007

VHDL in 1h. Martin Schöberl

CCE 3202 Advanced Digital System Design

Midterms Exam Fall 2011 Solu6ons

Summary of FPGA & VHDL

Vivado Design Suite 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide. UG953 (v2014.2) June 4, 2014

ECE 545 Lecture 11 Addendum

CS211 Digital Systems/Lab. Introduction to VHDL. Hyotaek Shim, Computer Architecture Laboratory

EENG 2910 Project III: Digital System Design. Due: 04/30/2014. Team Members: University of North Texas Department of Electrical Engineering

Method We follow- How to Get Entry Pass in SEMICODUCTOR Industries for 3rd year engineering. Winter/Summer Training

Design Problem 5 Solution

FPGAs in a Nutshell - Introduction to Embedded Systems-

IE1204 Digital Design L7: Combinational circuits, Introduction to VHDL

Vivado Design Suite 7 Series FPGA Libraries Guide. UG953 (v ) July 25, 2012

ECEU530. Schedule. ECE U530 Digital Hardware Synthesis. Datapath for the Calculator (HW 5) HW 5 Datapath Entity

VHDL Testbench. Test Bench Syntax. VHDL Testbench Tutorial 1. Contents

Xilinx 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide for HDL Designs

FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)

COE 405, Term 062. Design & Modeling of Digital Systems. HW# 1 Solution. Due date: Wednesday, March. 14

Xilinx ASMBL Architecture

VHDL simulation and synthesis

Tutorial 4 HDL. Outline VHDL PROCESS. Modeling Combinational Logic. Structural Description Instantiation and Interconnection Hierarchy

COVER SHEET: Total: Regrade Info: 5 (14 points) 7 (15 points) Midterm 1 Spring 2012 VERSION 1 UFID:

ECE 545 Lecture 12. Datapath vs. Controller. Structure of a Typical Digital System Data Inputs. Required reading. Design of Controllers

Xilinx 7 Series FPGA Libraries Guide for HDL Designs. UG768 (v 13.4) January 18, 2012

In our case Dr. Johnson is setting the best practices

Logic Synthesis. EECS150 - Digital Design Lecture 6 - Synthesis

Writing VHDL for RTL Synthesis

The VHDL Hardware Description Language

Sequential Logic - Module 5

INTRODUCTION TO VHDL ADVANCED COMPUTER ARCHITECTURES. Slides by: Pedro Tomás. Additional reading: - ARQUITECTURAS AVANÇADAS DE COMPUTADORES (AAC)

Digital Systems Design

Implementation of Directional Median Filtering using Field Programmable Gate Arrays

CSE140L: Components and Design Techniques for Digital Systems Lab

The goal of this project is to design an FPGA-based cipher unit for the Xilinx Spartan II XC2S100 FPGA running on the XESS board.

EECS150 - Digital Design Lecture 16 - Memory

Review from last time. CS152 Computer Architecture and Engineering Lecture 6. Verilog (finish) Multiply, Divide, Shift

7-Series Architecture Overview

Control and Datapath 8

ECE 448 Lecture 4. Sequential-Circuit Building Blocks. Mixing Description Styles

CSE140L: Components and Design

EECS150 - Digital Design Lecture 10 Logic Synthesis

1 ST SUMMER SCHOOL: VHDL BOOTCAMP PISA, JULY 2013

EITF35: Introduction to Structured VLSI Design

Lattice VHDL Training

Transcription:

ECE 699: Lecture 9 Programmable Logic Memories

Recommended reading XST User Guide for Virtex-6, Spartan-6, and 7 Series Devices Chapter 7, HDL Coding Techniques Sections: RAM HDL Coding Techniques ROM HDL Coding Techniques 2

Memory Types 3

Memory Types Memory ROM RAM Memory Single port Dual port Memory With asynchronous read With synchronous read 4

Memory Types specific to Xilinx FPGAs Memory Distributed (MLUT-based) Block RAM-based (BRAM-based) Memory Inferred Instantiated Manually Using Vivado 5

Programmable Logic (PL) CLBs and IOBs Source: The Zynq Book

Programmable Logic (PL) BRAMs and DSP units Source: The Zynq Book

FPGA Distributed Memory

Location of Distributed RAM Logic resources (CLB slices) RAM blocks Multipliers DSP units Logic Logic resources blocks Graphics based on The Design Warrior s Guide to FPGAs Devices, Tools, and Flows. ISBN 0750676043 Copyright 2004 Mentor Graphics Corp. (www.mentor.com) 9

SLICEL 10

Fast Carry Logic u u Each SliceL and SliceM contains separate logic and routing for the fast generation of sum & carry signals Increases efficiency and performance of adders, subtractors, accumulators, comparators, and counters Carry logic is independent of normal logic and routing resources MSB LSB Carry Logic Routing 11

Accessing Carry Logic u All major synthesis tools can infer carry logic for arithmetic functions Addition (SUM <= A + B) Subtraction (DIFF <= A - B) Comparators (if A < B then ) Counters (count <= count +1) 12

ECE 448 FPGA and ASIC Design with VHDL 13

SLICEM ECE 448 FPGA and ASIC Design with VHDL 14

Xilinx Multipurpose LUT (MLUT) 16-bit 32-bit SR 16 64 x 1 RAM 4-input 64 x 1 ROM LUT (logic) The Design Warrior s Guide to FPGAs Devices, Tools, and Flows. ISBN 0750676043 Copyright 2004 Mentor Graphics Corp. (www.mentor.com) 15

Single-port 64 x 1-bit RAM 16

Single-port 64 x 1-bit RAM 17

Memories Built of Neighboring MLUTs Memories built of 2 MLUTs: Single-port 128 x 1-bit RAM: RAM128x1S Dual-port 64 x 1-bit RAM : RAM64x1D Memories built of 4 MLUTs: Single-port 256 x 1-bit RAM: RAM256x1S Dual-port 128 x 1-bit RAM: RAM128x1D Quad-port 64 x 1-bit RAM: RAM64x1Q Simple-dual-port 64 x 3-bit RAM: RAM64x3SDP (one address for read, one address for write) 18

Dual-port 64 x 1 RAM Dual-port 64 x 1-bit RAM : 64x1D Single-port 128 x 1-bit RAM: 128x1S 19

Dual-port 64 x 1 RAM Dual-port 64 x 1-bit RAM : 64x1D Single-port 128 x 1-bit RAM: 128x1S 20

FPGA Block RAM 21

Location of Block RAMs Logic resources (CLB slices) RAM blocks Multipliers DSP units Logic Logic resources blocks Graphics based on The Design Warrior s Guide to FPGAs Devices, Tools, and Flows. ISBN 0750676043 Copyright 2004 Mentor Graphics Corp. (www.mentor.com) 22

Block RAM Configured as 1 x 36 kbit RAM or 2 x 18 kbit RAMs 23

Block RAM Simple Dual Port (SDP) = one port for read, one port for write (write_a-read_b, read_a_write_b) True Dual Port (TDP) = both ports can be used for read or write (read_a-read_b, read_a-write_b, write_a-read_b, write_a-write_b) 24

Block RAM can have various configurations (port aspect ratios) 0 1 0 2 0 4 8k x 2 4k x 4 4,095 16k x 1 8,191 0 2047 8+1 2k x (8+1) 16,383 0 1023 16+2 1024 x (16+2) 25

26

27

18k Block RAM Port Aspect Ratios 28

Block RAM Interface 29

Block RAM Ports 30

Cascadable Block RAM 31

Block RAM Waveforms READ_FIRST mode 32

Block RAM Waveforms WRITE_FIRST mode 33

Block RAM Waveforms NO_CHANGE mode 34

Features of Block RAMs 35

Inference vs. Instantiation 36

37

Generic Inferred ROM 38

Distributed ROM with asynchronous read LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; Entity ROM is generic ( w : integer := 12; -- number of bits per ROM word r : integer := 3); -- 2^r = number of words in ROM port (addr : in std_logic_vector(r-1 downto 0); dout : out std_logic_vector(w-1 downto 0)); end ROM; 39

Distributed ROM with asynchronous read architecture behavioral of rominfr is type rom_type is array (0 to 2**r-1) of std_logic_vector (w-1 downto 0); constant ROM_array : rom_type := ("000011000100", "010011010010", "010011011011", "011011000010", "000011110001", "011111010110", "010011010000", "111110011111"); begin dout <= ROM_array(to_integer(unsigned(addr))); end behavioral; 40

Distributed ROM with asynchronous read architecture behavioral of rominfr is type rom_type is array (0 to 2**r-1) of std_logic_vector (w-1 downto 0); constant ROM_array : rom_type := (X"0C4", X"4D2", X"4DB", X"6C2", X"0F1", X"7D6", X"4D0", X"F9F"); begin dout <= ROM_array(to_integer(unsigned(addr))); end behavioral; 41

Generic Inferred RAM 42

Distributed versus Block RAM Inference Examples: 1. Distributed single-port RAM with asynchronous read 2. Distributed dual-port RAM with asynchronous read 3. Block RAM with synchronous read (no version with asynchronous read!) More excellent RAM examples from XST Coding Guidelines. 43

Distributed single-port RAM with asynchronous read LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; entity raminfr is generic ( w : integer := 32; -- number of bits per RAM word r : integer := 6); -- 2^r = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(r-1 downto 0); di : in std_logic_vector(w-1 downto 0); do : out std_logic_vector(w-1 downto 0)); end raminfr; 44

Distributed single-port RAM with asynchronous read architecture behavioral of raminfr is type ram_type is array (0 to 2**r-1) of std_logic_vector (w-1 downto 0); signal RAM : ram_type := (others => (others => '0')); begin process (clk) begin if rising_edge(clk) then if (we = '1') then RAM(to_integer(unsigned(a))) <= di; end if; end if; end process; do <= RAM(to_integer(unsigned(a))); end behavioral; 45

Distributed dual-port RAM with asynchronous read library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity raminfr is generic ( w : integer := 32; -- number of bits per RAM word r : integer := 6); -- 2^r = number of words in RAM port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(r-1 downto 0); dpra : in std_logic_vector(r-1 downto 0); di : in std_logic_vector(w-1 downto 0); spo : out std_logic_vector(w-1 downto 0); dpo : out std_logic_vector(w-1 downto 0)); end raminfr; 46

Distributed dual-port RAM with asynchronous read architecture syn of raminfr is type ram_type is array (0 to 2**r-1) of std_logic_vector (w-1 downto 0); signal RAM : ram_type := (others => (others => '0')); begin process (clk) begin if rising_edge(clk) then if (we = '1') then RAM(to_integer(unsigned(a))) <= di; end if; end if; end process; spo <= RAM(to_integer(unsigned(a))); dpo <= RAM(to_integer(unsigned(dpra))); end syn; 47

Block RAM Waveforms READ_FIRST mode 48

Block RAM with synchronous read LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; entity raminfr is generic ( w : integer := 32; -- number of bits per RAM word r : integer := 9); -- 2^r = number of words in RAM port (clk : in std_logic; we : in std_logic; en : in std_logic; addr : in std_logic_vector(r-1 downto 0); di : in std_logic_vector(w-1 downto 0); do : out std_logic_vector(w-1 downto 0)); end raminfr; 49

Block RAM with synchronous read Read-First Mode - cont'd architecture behavioral of raminfr is type ram_type is array (0 to 2**r-1) of std_logic_vector (w-1 downto 0); signal RAM : ram_type := (others => (others => '0')); begin process (clk) begin if rising_edge(clk) then if (en = '1') then do <= RAM(to_integer(unsigned(addr))); if (we = '1') then RAM(to_integer(unsigned(addr))) <= di; end if; end if; end if; end process; end behavioral; 50

Block RAM Waveforms WRITE_FIRST mode 51

Block RAM with synchronous read Write-First Mode - cont'd architecture behavioral of raminfr is type ram_type is array (0 to 2**r-1) of std_logic_vector (w-1 downto 0); signal RAM : ram_type := (others => (others => '0')); begin process (clk) begin if (clk'event and clk = '1') then if (en = '1') then if (we = '1') then RAM(to_integer(unsigned(addr))) <= di; do <= di; else do <= RAM(to_integer(unsigned(addr))); end if; end if; end if; end process; end behavioral; 52

Block RAM Waveforms NO_CHANGE mode 53

Block RAM with synchronous read No-Change Mode - cont'd architecture behavioral of raminfr is type ram_type is array (0 to 2**r-1) of std_logic_vector (w-1 downto 0); signal RAM : ram_type := (others => (others => '0')); begin process (clk) begin if (clk'event and clk = '1') then if (en = '1') then if (we = '1') then RAM(to_integer(unsigned(addr))) <= di; else do <= RAM(to_integer(unsigned(addr))); end if; end if; end if; end process; end behavioral; 54

Criteria for Implementing Inferred RAM in BRAMs 55

FIFOs 56

FIFO Interface clk rst clk rst FIFO 8 din full dout empty 8 write read ECE 448 FPGA and ASIC Design with VHDL 57

Operation of the Standard FIFO A B C D ECE 448 FPGA and ASIC Design with VHDL 58

Operation of the First-Word Fall-Through FIFO ECE 448 FPGA and ASIC Design with VHDL 59