CDA 4253 FGPA System Design Xilinx FPGA Memories

Slides:



Advertisements
Similar presentations
Survey of Reconfigurable Logic Technologies
Advertisements

Lecture 11 Xilinx FPGA Memories
FPGA Devices & FPGA Design Flow
BIST for Logic and Memory Resources in Virtex-4 FPGAs Sachin Dhingra, Daniel Milton, and Charles Stroud Electrical and Computer Engineering Auburn University.
Ring Counter Discussion D5.3 Example 32. Ring Counter if rising_edge(CLK) then for i in 0 to 2 loop s(i)
ECE 448 Lecture 7 FPGA Devices
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.
Counters Discussion D5.3 Example 33. Counters 3-Bit, Divide-by-8 Counter 3-Bit Behavioral Counter in Verilog Modulo-5 Counter An N-Bit Counter.
FPGAs and VHDL Lecture L13.1 Sections 13.1 – 13.3.
CSE140L – Lab4 Overall picture of Lab4 Tutorial on Bus & Memory Tutorial on Truth table.
George Mason University ECE 448 – FPGA and ASIC Design with VHDL Overview of Modern FPGAs ECE 448 Lecture 14.
Random-Access Memory Distributed and Block RAM Discussion D10.3 Example 41.
Memory in FPGAs مرتضي صاحب الزماني. Inferring Memory Inferring Memory in XST:  Distributed or block memory? −XST implements small RAM components on distributed.
Basic Adders and Counters Implementation of Adders in FPGAs ECE 645: Lecture 3.
ECE 448 – FPGA and ASIC Design with VHDL Lecture 10 Memories (RAM/ROM)
1 Part V: VHDL CODING. 2 Design StructureData TypesOperators and AttributesConcurrent DesignSequential DesignSignals and VariablesState Machines A VHDL.
Introduction to Design Tools COE Review: Tools, functions, design flow Four tools we will use in this course – HDL Designer Suite FPGA Advantage.
Designing with FPGAs ELEC 418 Advanced Digital Systems Dr. Ron Hayne Images Courtesy of Thomson Engineering.
George Mason University FPGA Memories ECE 448 Lecture 13.
George Mason University FPGA Devices & FPGA Design Flow ECE 448 Lecture 7.
System Arch 2008 (Fire Tom Wada) /10/9 Field Programmable Gate Array.
ECE 448 – FPGA and ASIC Design with VHDL Lecture 11 Memories in Xilinx FPGAs.
Digital Design: An Embedded Systems Approach Using VHDL
George Mason University ECE 645 Lecture 7 FPGA Embedded Resources.
FPGA (Field Programmable Gate Array): CLBs, Slices, and LUTs Each configurable logic block (CLB) in Spartan-6 FPGAs consists of two slices, arranged side-by-side.
ECE 448 Lecture 6 FPGA devices
Lab 05 Sen Ma.
CPE 626 Advanced VLSI Design Lecture 6: VHDL Synthesis Aleksandar Milenkovic
Introduction to Experiment 6 Internal FPGA Memories, Pseudo Random Number Generator, Advanced Testbenches ECE 448 Spring 2009.
FPGA Based System Design
Introduction to FPGA Tools
Tools - LogiBLOX - Chapter 5 slide 1 FPGA Tools Course The LogiBLOX GUI and the Core Generator LogiBLOX L BX.
Joal 2005 HT:1 Em3 Custom Designed Integrated Circuits 1 Testbenches Custom Designed Integrated Circuits.
George Mason University ECE 448 – FPGA and ASIC Design with VHDL ECE 448 Lecture 10 Memories: RAM, ROM.
Memory 설계.
Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.
FPGA Devices & FPGA Design Flow
Data Storage VHDL ET062G & ET063G Lecture 4 Najeem Lawal 2012.
CDA 4253 FPGA System Design The PicoBlaze Microcontroller
Lecture 10 Xilinx FPGA Memories Part 1
CDA 4253 FPGA System Design Sequential Circuit Building Blocks Hao Zheng Dept of Comp Sci & Eng USF.
Survey of Reconfigurable Logic Technologies
PARBIT Tool 1 PARBIT Partial Bitfile Configuration Tool Edson L. Horta Washington University, Applied Research Lab August 15, 2001.
George Mason University ECE 448 – FPGA and ASIC Design with VHDL FPGA Devices ECE 448 Lecture 5.
George Mason University FPGA Memories ATHENa - Automated Tool for Hardware EvaluatioN ECE 545 Lecture 10.
George Mason University Behavioral Modeling of Sequential-Circuit Building Blocks ECE 545 Lecture 8.
Case Study: Xilinx Synthesis Tool (XST). Arrays & Records 2.
CDA 4253 FPGA System Design Behavioral modeling of Combinational Circuits Hao Zheng Dept of Comp Sci & Eng USF.
Lecture 11 Xilinx FPGA Memories Part 2
George Mason University ECE 545 Lecture 12 FPGA Embedded Resources.
VHDL Models For Memory And Busses 구 본 진.
ECE 448 Lecture 3 Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic ECE 448 – FPGA and ASIC Design with VHDL.
Programmable Logic Memories
Field Programmable Gate Array
Field Programmable Gate Array
Field Programmable Gate Array
Programmable Logic Memories
ECE 448 Lecture 3 Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic ECE 448 – FPGA and ASIC Design with VHDL.
مدار های ترکیبی دیکدر لامپ های هفت قسمتی یکی از دیکدر هایی که اغلب به کار برده می شود،دیکدر 4 به 7 برای تبدیل کد bcd به کد هفت بیتی برای لامپ های seven.
ECE 448 Lecture 7 FPGA Devices
ECE 448 Lecture 5 FPGA Devices
ECE 545 Lecture 17 RAM.
Basic Adders and Counters Implementation of Adders
VHDL Introduction.
Behavioral Modeling of Sequential-Circuit Building Blocks
ECE 448 Lecture 3 Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic ECE 448 – FPGA and ASIC Design with VHDL.
Data Flow Description of Combinational-Circuit Building Blocks
Data Flow Description of Combinational-Circuit Building Blocks
Sequntial-Circuit Building Blocks
(Sequential-Circuit Building Blocks)
Presentation transcript:

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

Recommended Reading 7 Series FPGA Memory Resources: User Guide Google search: UG473 7 Series FPGA Configurable Logic Block: User Guide Google search: UG474 Xilinx 7 Series FPGA Embedded Memory Advantages: White Paper Google search: WP377 XST User Guide for Virtex-6, Spartan-6, and 7 Series Device Google search: UG687

Memory Types

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

Memory Types Specific to Xilinx FPGAs Distributed (MLUT-based) Block RAM-based (BRAM-based) Memory Inferred Instantiated Using CORE Generator Manually

FPGA Distributed Memory 7 Series FPGAs Configurable Logic Block User Guide UG474 (v1.7) November 17, 2014

Location of Distributed RAM Logic resources (CLB slices) RAM blocks DSP units Logic resources (#Logic resources, #Multipliers/DSP units, #RAM_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)

7 Series FPGA CLB Resources

7 Series FPGA Distributed RAM Config.

Single-Port 64x1-bit Distributed RAM Four of these signal port 64x1 RAMs can be implemented in a single SLICEM to form a 64x4b RAM.

Dual-Port 64x1b Distributed RAM

7 Series FPGA ROM Configurations on LUTs Configuration Primitives: ROM64X1 ROM128X1 ROM256X1 LUTs are often used to implemented small memories with less than 256 bits.

FPGA Block RAM

(#Logic resources, #Multipliers/DSP units, #RAM_blocks) Location of Block RAMs Logic resources (CLB slices) RAM blocks DSP units Logic resources (#Logic resources, #Multipliers/DSP units, #RAM_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)

7 Series FPGA Block RAM Resources Each 36Kb block RAM can be configured as two independent 18Kb RAM blocks.

Block RAM Configurations (Aspect Ratios) 1 2 4 8k x 4 16k x 2 4,095 32k x 1 16383 8+1 4k x (8+1) 4095 32+4 1024 x 36 1023 32767

Block RAM Interface True Dual Port Ports A and B are fully independent. Each port has its own address, data in/out, clock, and WR enable. Both read/write are synchronous. Simultaneously writing to the same address causes data uncertainty.

Block RAM Interface Simple Dual Port Independent read/write ports. Max port width is 64+8b. Reading & writing to the same mem location causes data uncertainty.

VHDL Coding for Memory 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

Distributed vs Block RAMs Distributed RAM: must be used for RAM descriptions with asynchronous read. Block RAM: generally used for RAM descriptions with synchronous read. Synchronous write for both types of RAMs. Any size and data width are allowed in RAM descriptions. Depending on resource availability Up to two write ports are allowed.

Inferring ROM

Distributed ROM with Asynchronous Read library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ROM is genetic ( 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;

Distributed ROM with Asynchronous Read architecture behavioral of ROM is type rom_type is array (2**r-1 downto 0) 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(conv_integer(addr)); end behavioral;

VHDL Code for Dual-Port ROM with Sync. Read can be implemented either on LUTs or block RAMs.

VHDL Code for Dual-Port ROM with Sync. Read

Inferring RAM

Distributed Single-Port RAM with Async. Read library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity raminfr is generic ( w : integer := 32; -- number of bits per RAM word r : integer := 3 -- 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;

Distributed Single-Port RAM with Async. Read architecture behavioral of raminfr is type ram_type is array (2**r-1 downto 0) of std_logic_vector (w-1 downto 0); signal RAM : ram_type; begin process (clk) if rising_edge(clk) then if (we = '1') then RAM(conv_integer(a)) <= di; end if; end process; do <= RAM(conv_integer(a)); end behavioral;

Block RAM with Sync. Read (Read-First Mode)

Block RAM with Sync. Read (Read-First Mode)

Block RAM with Sync. Read (Read-First Mode) process (clk) begin if rising_edge(clk) then if (en = '1') then do <= RAM(conv_integer(addr)); if (we = '1') then RAM(conv_integer(addr)) <= di; end if; end process;

Block RAM with Sync. Read (Write-First Mode)

Block RAM with Sync. Read (Write-First Mode) process (clk) begin if rising_edge(clk) then if (en = '1') then if (we = '1') then RAM(conv_integer(addr)) <= di; do <= di; else do <= RAM(conv_integer(addr)); end if; end process;

Block RAM with Sync. Read (No-Change Mode)

Block RAM with Sync. Read (No-Change Mode) process (clk) begin if rising_edge(clk) then if (en = '1') then if (we = '1') then RAM(conv_integer(addr)) <= di; else do <= RAM(conv_integer(addr)); end if; end process;

Block RAM Initialization Example 1 type ram_type is array (0 to 127) of std_logic_vector(15 downto 0); signal RAM : ram_type := (others => ”0000111100110101”; Example 2 type ram_type is array (0 to 127) of std_logic_vector(15 downto 0); signal RAM : ram_type := (others => (others => ‘1’)); Example 3 type ram_type is array (0 to 127) of std_logic_vector(15 downto 0); signal RAM : ram_type := (196 downto 100 => X”B9B5”, others => X”3344”);

Block RAM Initialization from a File rams_20c.data: 001011000101111011110010000100001111 101011000110011010101010110101110111 … 101011110111001011111000110001010000 128

Block RAM Interface True Dual Port Ports A and B are fully independent. Each port has its own address, data in/out, clock, and WR enable. Both read/write are synchronous. Simultaneously writing to the same address causes data uncertainty.

Dual-Port Block RAM

Dual-Port Block RAM