DEVELOPING A SIMPLE CUSTOM PCORE THAT READS AND

Size: px
Start display at page:

Download "DEVELOPING A SIMPLE CUSTOM PCORE THAT READS AND"

Transcription

1 DEVELOPING A SIMPLE CUSTOM PCORE THAT READS AND WRITES TO DDR AND USE ITS SLAVE REGISTERS TO COMMUNICATE WITH MICROBLAZE YUKA KYUSHIMA SOLANO University of Toronto April 10, 2014 This document has a practical example of how build a custom pcore that reads and writes to DDR. First of all, I recommend you to read and try to create a simple IPCore following the "Creating AXI-connected User-Designed Peripheral Cores" from the labs before starting this tutorial. It contains more information about what is a pcore and how it is structure. CREATION THROUGH THE CUSTOM PERIPHERAL WIZARD First, load a project that has the DDR pcore or create a new XPS project and add it. 1. After loading the project, start the wizard through the menu: Hardware->Create/Import Peripheral Wizard. 2. Select "create templates for a new peripheral". 3. Select "to the local project directory". It will put the newly created pcore in the the pcore subdirectory of the project directory. 4. Name the peripheral "read_write_ddr" 5. Select "AXI4: Burst Capable". 6. Select "User logic master support", "Software reset" and "User logic software register". 7. Number of software accessible registers: Let the default configuration for the next screens.

2 9.Next, the pcore template will be created and you will be returned to the main screen. Add the newly created IP into your design. Select and add it to your design from the IP Catalog with the default options and remember to assign it a base address and range. SOFTWARE APPLICATION With the new pcore created and added we can Generate Bitstream and Export it to SDK. We will first use the software application to read or write to DDR. In other words, we will set the address, the number of bytes to transfer and the command to request read or write using the master register of our pcore directly in the C code. For the next session we will set these parameters in the user_logic.vhd. 1. After export to SDK, create a new Xilinx C Project: File->New->Xilinx C Project. 2. Select Empty Application and name it "rw_ddr". 3. Create a C file and copy the code below and add it to the workspace/rw_ddr/src/ that you have just created. 4. Refresh it (F5) and rebuild your project. 5. Connect the Serial with the terminal and Program to the FPGA. If you have trouble to download the program to the FPGA try change mcb_ddr2_s0_axi_baseaddr to microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl in the Section to Memory Region Mapping in the lscript.ld file. 6. The output on the terminal should be: Before read or write: AAAABBBB CCCCDDDD After read command: AAAABBBB CCCCDDDD After write command: AAAABBBB AAAABBBB C code to request read and write to DDR #include <stdlib.h> #include <stdio.h> #include "xparameters.h" #define printf xil_printf #define DDR1 0xA //define a base address of your DDR #define DDR2 0xA //define another base address of your DDR #define OFFSET 0x100 //offset for the master registers #define PCORE_BASEADDR 0x77A00000 //change to your pcore base address User program

3 int main() { //base address that we will read from volatile unsigned int *ddr1_addr = (volatile unsigned int *) DDR1; //base address the we will write to volatile unsigned int *ddr2_addr = (volatile unsigned int *) DDR2; //base address of our pcore (slave registers) volatile unsigned int *pcore_addr = (volatile unsigned int *) PCORE_BASEADDR; //base address of our pcore (master registers) volatile unsigned char *pcore_mst_addr = (volatile unsigned char *) (PCORE_BASEADDR + OFFSET); ddr1_addr[0] = 0xAAAABBBB; //write a random value in the DDR1 base address //this value will copy to DDR2 ddr2_addr[0] = 0xCCCCDDDD; //write a random value in the DDR2 base address //this value will be overwrited printf("before read or write: %8x %8x \n\r", ddr1_addr[0], ddr2_addr[0]); Read command Control Register (C_BASEADDR + OFFSET + 0x0): -- bit 0 - Rd (Read Request Control) -- bit 1 - Wr (Write Request Control) -- bit 2 - BL (Bus Lock Control) -- bit 3 - Brst (Burst Assertion Control) pcore_mst_addr[0] = 0x01; -- Addrress Register (C_BASEADDR + OFFSET + 0x4): -- bit Target Address (This 32-bit value is used to populate the -- IP2Bus_Mst_Addr(0:31) address bus during a Read or Write -- user logic master operation) //Address to read from: 0xA pcore_mst_addr[4] = 0x00; pcore_mst_addr[5] = 0x00; pcore_mst_addr[6] = 0x00; pcore_mst_addr[7] = 0xA0; -- Byte Enable Register (C_BASEADDR + OFFSET + 0x8): -- bit Master BE (This 16-bit value is used to populate the -- IP2Bus_Mst_BE byte enable bus during a Read or Write user -- logic master operation for single data beat transfer) pcore_mst_addr[8] = 0xFF; pcore_mst_addr[9] = 0xFF; -- Length Register (C_BASEADDR + OFFSET + 0xC): -- bit Reserved -- bit Transfer Length (This 12-bit value is used to populate the -- IP2Bus_Mst_Length(0:11) transfer length bus which specifies -- the number of bytes (1 to 4096) to transfer during user logic -- master Read or Write fixed length burst operations) //We will transfer only 4 bytes pcore_mst_addr[12] = 0x04; pcore_mst_addr[13] = 0x00; pcore_mst_addr[14] = 0x00; -- Go Register (C_BASEADDR + OFFSET + 0xF): -- bit Go Port (Write to this byte address initiates the user -- logic master transfer, data key value of 0x0A must be used) -- //Go command pcore_mst_addr[15] = 0x0A; printf("after read command: %8x %8x\n\r", ddr1_addr[0], ddr2_addr[0]); Write command

4 pcore_mst_addr[0] = 0x02; //Set the address to write to: 0xA pcore_mst_addr[4] = 0x00; pcore_mst_addr[5] = 0x00; pcore_mst_addr[6] = 0x10; pcore_mst_addr[7] = 0xA0; //Go command pcore_mst_addr[15] = 0x0A; printf("after write command: %8x %8x\n\r", ddr1_addr[0], ddr2_addr[0]); } return 0; To transfer more than 4 bytes, enable the burst bit and put the number of bytes we want to transfer in the Length Register. Try to change other parameters to see what happens. CHANGING THE USER_LOGIC.VHD In this section you will change your user_logic generated when you created your pcore. You can find the user_logic.vhd in the folder \pcores\read_write_ddr_v1_00_a\hdl\vhdl. It is in this file that you will put your own VHDL processes and customize your pcore. For now, only do the following changes: --ADDED after line: --USER signal declarations added here, as needed for user logic Signals for read and write to DDR Explanation of the added signals rd_addr address of read from DDR -- wr_addr address of write to DDR -- rd_en read from DDR is enabled signal rd_addr, wr_addr : std_logic_vector(c_mst_awidth-1 downto 0); signal rd_en : std_logic; type SEARCH_RW_SM_TYPE is (SEARCH_RW_IDLE, SEARCH_READ_INIT, SEARCH_READ_GO, SEARCH_WRITE_INIT, SEARCH_WRITE_GO); signal search_rw_sm_state : SEARCH_RW_SM_TYPE; --END_ADDED --EDITED -- rip control bits from master model registers --mst_cntl_rd_req <= mst_reg(0)(0);

5 --mst_cntl_wr_req <= mst_reg(0)(1); mst_cntl_bus_lock <= '0'; --mst_reg(0)(2); mst_cntl_burst <= '1'; --mst_reg(0)(3); --mst_ip2bus_addr <= mst_reg(7) & mst_reg(6) & mst_reg(5) & mst_reg(4); mst_ip2bus_be <= x"ffff"; --mst_reg(9) & mst_reg(8); mst_xfer_reg_len <= x"00040"; --mst_reg(14)(3 downto 0) & mst_reg(13) & mst_reg(12); mst_xfer_length <= mst_xfer_reg_len(c_length_width-1 downto 0 ); --END_EDITED --EDITED if ( Bus2IP_Clk'event and Bus2IP_Clk = '1' ) then if ( Bus2IP_Resetn = '0' or mst_cmd_sm_clr_go = '1' ) then mst_go <= '0'; elsif ( mst_cmd_sm_busy = '0' and mst_cntl_rd_req = '1') then --mst_byte_we(go_byte_lane) = '1' and --Bus2IP_Data((GO_BYTE_LANE-(GO_BYTE_LANE/BE_WIDTH)*BE_WIDTH)* (GO_BYTE_LANE-(GO_BYTE_LANE/BE_WIDTH)*BE_WIDTH)*8)= GO_DATA_KEY ) then mst_go <= '1'; elsif ( mst_cmd_sm_busy = '0' and mst_cntl_wr_req = '1') then mst_go <= '1'; null; --END_EDITED downto --ADDED after line: IP2Bus_Error <= '0'; --Process to read from the bus and store in the fifo --and read from the fifo and write to the bus --slv_reg0 is rd_addr and slv_reg1 is wr_addr SEARCH_SM_RW_PROC: process(bus2ip_clk) is constant IMAGE_WIDTH : integer := 640; constant IMAGE_HEIGHT : integer := 480; constant PACKET_SIZE : integer := 64; //it will transfer 64 bytes each time begin if Rising_Edge(Bus2IP_Clk) then --Initial values if ( Bus2IP_Resetn = '0' ) then search_rw_sm_state <= SEARCH_RW_IDLE; mst_cntl_wr_req <= '0'; mst_cntl_rd_req <= '0'; rd_en <= '0'; rd_addr <= slv_reg0; wr_addr <= slv_reg1;

6 case search_rw_sm_state is when SEARCH_RW_IDLE => Go to read states if (rd_en = '0') then if (f_full = '0') then search_rw_sm_state <= SEARCH_READ_INIT; mst_cntl_rd_req <= '1'; rd_en <= '1'; Go to write states search_rw_sm_state <= SEARCH_WRITE_INIT; mst_cntl_wr_req <= '1'; rd_en <= '0'; when SEARCH_READ_INIT => if(bus2ip_mst_cmdack = '1') then search_rw_sm_state <= SEARCH_READ_GO; mst_cntl_rd_req <= '0'; when SEARCH_READ_GO => if(bus2ip_mst_cmplt = '1') then search_rw_sm_state <= SEARCH_RW_IDLE; if (rd_addr = slv_reg0 + (IMAGE_WIDTH*IMAGE_HEIGHT*2 - PACKET_SIZE)) then rd_addr <= slv_reg0; rd_addr <= rd_addr + PACKET_SIZE; when SEARCH_WRITE_INIT => if(bus2ip_mst_cmdack = '1') then search_rw_sm_state <= SEARCH_WRITE_GO; mst_cntl_wr_req <= '0'; when SEARCH_WRITE_GO =>

7 if(bus2ip_mst_cmplt = '1') then search_rw_sm_state <= SEARCH_RW_IDLE; if (wr_addr = slv_reg1 + (IMAGE_WIDTH*IMAGE_HEIGHT*2 - PACKET_SIZE)) then wr_addr <= slv_reg1; wr_addr <= wr_addr + PACKET_SIZE; when others => search_rw_sm_state <= SEARCH_RW_IDLE; end case; end process SEARCH_SM_RW_PROC; --use the read address when read is enabled, otherwise use write address mst_ip2bus_addr <= rd_addr when rd_en = '1' wr_addr; --END_ADDED This code basically read 64 bytes each time from DDR write to it 64 bytes each time. The base address for read is saved at slv_reg0 and the base address for write is saved at slv_reg1. We can set these address in the software, which make easier in case you want to change them. The number of bytes that is actually transfer is 680*480*2 (, you can change it, only make sure that it is multiple of 64). Actually, when you read from DDR the data is stored at the FIFO and when you write to DDR the data is read from FIFO and put on the Bus to be transferred to DDR. After make all this changes, you can save it and Generate Netlist, Bitstream and Export to SDK. You can create a new workspace to not overwrite your software application. Then, create a new Xilinx C Project as above, copy the following C code in your src folder, connect the Serial and Program to FPGA. C code to request read and write to DDR #include <stdlib.h> #include <stdio.h> #include "xparameters.h" #define printf xil_printf #define DDR1 0xA //define a base address of your DDR #define DDR2 0xA //define another base address of your DDR #define OFFSET 0x100 //offset for the master registers #define PCORE_BASEADDR 0x77A00000 //change to your pcore base address User program int main() {

8 //base address that we will read from volatile unsigned int *ddr1_addr = (volatile unsigned int *) DDR1; //base address the we will write to volatile unsigned int *ddr2_addr = (volatile unsigned int *) DDR2; //base address of our pcore (slave registers) volatile unsigned int *pcore_addr = (volatile unsigned int *) PCORE_BASEADDR; //base address of our pcore (master registers) volatile unsigned char *pcore_mst_addr = (volatile unsigned char *) (PCORE_BASEADDR + OFFSET); ddr1_addr[0] = 0xAAAABBBB; ddr2_addr[0] = 0xCCCCDDDD; //write a random value in the DDR1 base address //this value will copy to DDR2 //write a random value in the DDR2 base address //this value will be overwrited //write to slave registers pcore_addr[0] = DDR1; //address to read pcore_addr[1] = DDR2; //address to write int i = 0; while(1){ //for(i = 0; i < 640*480*2, i++){ printf("%8x %8x\n\r", ddr1_addr[i], ddr2_addr[i]); //} } } return 0; If you want to write any value to the slave registers in your pcore and read this value in the software application you should write the code in the SLAVE_REG_WRITE_PROC in the user_logic. An example is given below. SLAVE_REG_WRITE_PROC : process( Bus2IP_Clk ) is begin ( ) when others => --null; //write to slave register 2 slv_reg2 <= x"eeeeffff"; end case; end process SLAVE_REG_WRITE_PROC; Then to read this value in the software application only add the line below. //read from slave register 2 printf("slv_reg2: %8x", pcore_addr[2]); Now you already know how to create a simple pcore that reads and writes to the DDR and how to use its slave registers to communicate with MicroBlaze. I hope this tutorial has helped. For more information or bug reports contact me at yuka.kyushimasolano@mail.utoronto.edu.

ROBOTIC ARM CONTROLLED BY VIDEO INPUT

ROBOTIC ARM CONTROLLED BY VIDEO INPUT UNIVERSITY OF TORONTO ECE532 - DIGITAL SYSTEM DESIGN ROBOTIC ARM CONTROLLED BY VIDEO INPUT FINAL DESIGN REPORT Izaz Ullah Willian Rigon Silva Yuka Kyushima Solano April 9th, 2014 1 Table of Contents 1

More information

Fixed-point Multiply and Accumulator IP Exercise

Fixed-point Multiply and Accumulator IP Exercise Electrical and Computer Engineering Fixed-point Multiply and Accumulator IP Exercise By Prawat Nagvajara Synopsis Design and implement a fixed-point multiply accumulator (Fig. 1) custom Intellectual Property

More information

Spartan-6 LX9 MicroBoard Embedded Tutorial. Tutorial 2 Adding EDK IP to an Embedded System

Spartan-6 LX9 MicroBoard Embedded Tutorial. Tutorial 2 Adding EDK IP to an Embedded System Spartan-6 LX9 MicroBoard Embedded Tutorial Tutorial 2 Adding EDK IP to an Embedded System Version 13.1.01 Revision History Version Description Date 13.1.01 Initial release for EDK 13.1 5/16/2011 Table

More information

The Definitive Guide to Hardware/Software Interfacing with the XUP-Virtex2P-Pro Development System

The Definitive Guide to Hardware/Software Interfacing with the XUP-Virtex2P-Pro Development System The Definitive Guide to Hardware/Software Interfacing with the XUP-Virtex2P-Pro Development System Introduction Philip Amberg and Andrew Giles 4/14/2007 In this guide we will walk through setting up a

More information

Lab 1 - Zynq RTL Design Flow

Lab 1 - Zynq RTL Design Flow NTU GIEE, MULTIMEDIA SYSTEM-ON-CHIP DESIGN Lab 1 - Zynq RTL Design Flow Pin-Hung Kuo May 11, 2018 1 INTRODUCTION In this lab, we are going to build a simple Zynq system on ZedBoard. This system works as

More information

Creating an OPB IPIF-based IP and Using it in EDK Author: Mounir Maaref

Creating an OPB IPIF-based IP and Using it in EDK Author: Mounir Maaref Application Note: Embedded Processing XAPP967 (v1.1) February 26, 2007 Creating an OPB IPIF-based IP and Using it in EDK Author: Mounir Maaref Abstract Adding custom logic to an embedded design targeting

More information

Module 3: Adding Custom IP to an Embedded System

Module 3: Adding Custom IP to an Embedded System For Academic Use Only Systemy wbudowane laboratorium Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Zakład InŜynierii Komputerowej Module

More information

Firstly, lets build the example design that shall be used throughout this tutorial by following the steps below:

Firstly, lets build the example design that shall be used throughout this tutorial by following the steps below: Embedded Debugging Techniques In this simple tutorial, we shall be exploring the various debugging techniques; such as behavioural simulation and hardware debugging techniques such as the ILA and cross

More information

QSPI Flash Memory Bootloading In Standard SPI Mode with KC705 Platform

QSPI Flash Memory Bootloading In Standard SPI Mode with KC705 Platform Summary: QSPI Flash Memory Bootloading In Standard SPI Mode with KC705 Platform KC705 platform has nonvolatile QSPI flash memory. It can be used to configure FPGA and store application image. This tutorial

More information

Nerdy Musical Keyboard

Nerdy Musical Keyboard ECE532 Group Report Nerdy Musical Keyboard Edward S. Rogers Sr. Department of Electrical and Computer Engineering University of Toronto April 7 th, 2009 Sida Shen sida.shen@utoronto.ca ShiKuan Yu shikuan.yu@utoronto.ca

More information

ECEN 449: Microprocessor System Design Department of Electrical and Computer Engineering Texas A&M University

ECEN 449: Microprocessor System Design Department of Electrical and Computer Engineering Texas A&M University ECEN 449: Microprocessor System Design Department of Electrical and Computer Engineering Texas A&M University Prof. Sunil P Khatri (Lab exercise created and tested by Ramu Endluri, He Zhou, Andrew Douglass

More information

Lab Exercise 4 System on chip Implementation of a system on chip system on the Zynq

Lab Exercise 4 System on chip Implementation of a system on chip system on the Zynq Lab Exercise 4 System on chip Implementation of a system on chip system on the Zynq INF3430/INF4431 Autumn 2016 Version 1.2/06.09.2016 This lab exercise consists of 4 parts, where part 4 is compulsory

More information

Building an Embedded Processor System on a Xilinx Zync FPGA (Profiling): A Tutorial

Building an Embedded Processor System on a Xilinx Zync FPGA (Profiling): A Tutorial Building an Embedded Processor System on a Xilinx Zync FPGA (Profiling): A Tutorial Embedded Processor Hardware Design October 6 t h 2017. VIVADO TUTORIAL 1 Table of Contents Requirements... 3 Part 1:

More information

Building an Embedded Processor System on Xilinx NEXYS3 FPGA and Profiling an Application: A Tutorial

Building an Embedded Processor System on Xilinx NEXYS3 FPGA and Profiling an Application: A Tutorial Building an Embedded Processor System on Xilinx NEXYS3 FPGA and Profiling an Application: A Tutorial Introduction: Modern FPGA s are equipped with a lot of resources that allow them to hold large digital

More information

Writing Basic Software Application

Writing Basic Software Application Lab Workbook Introduction This lab guides you through the process of writing a basic software application. The software you will develop will write to the LEDs on the Zynq board. An AXI BRAM controller

More information

Xilinx Platform Studio tutorial

Xilinx Platform Studio tutorial Xilinx Platform Studio tutorial Per.Anderson@cs.lth.se April 12, 2005 This tutorial intend to show you how to create an initial system configuration. From Xilinx Platform Studio(XPS) version 6.1 this has

More information

Microblaze for Linux Howto

Microblaze for Linux Howto Microblaze for Linux Howto This tutorial shows how to create a Microblaze system for Linux using Xilinx XPS on Windows. The design is targeting the Spartan-6 Pipistello LX45 development board using ISE

More information

Instantiation. Verification. Simulation. Synthesis

Instantiation. Verification. Simulation. Synthesis 0 XPS Mailbox (v2.00a) DS632 June 24, 2009 0 0 Introduction In a multiprocessor environment, the processors need to communicate data with each other. The easiest method is to set up inter-processor communication

More information

The Zynq Book Tutorials

The Zynq Book Tutorials The Zynq Book Tutorials Louise H. Crockett Ross A. Elliot Martin A. Enderwitz Robert W. Stewart Department of Electronic and Electrical Engineering University of Strathclyde Glasgow, Scotland, UK v1.2

More information

Use Vivado to build an Embedded System

Use Vivado to build an Embedded System Introduction This lab guides you through the process of using Vivado to create a simple ARM Cortex-A9 based processor design targeting the ZedBoard development board. You will use Vivado to create the

More information

Application Note for EVP

Application Note for EVP Sundance Multiprocessor Technology Limited Application Note Form : QCF32 Date : 11 Februay 2009 Unit / Module Description: SMT111-SMT372T-SMT946 Unit / Module Number: Document Issue Number: 1.0 Issue Date:

More information

ChipScope Inserter flow. To see the Chipscope added from XPS flow, please skip to page 21. For ChipScope within Planahead, please skip to page 23.

ChipScope Inserter flow. To see the Chipscope added from XPS flow, please skip to page 21. For ChipScope within Planahead, please skip to page 23. In this demo, we will be using the Chipscope using three different flows to debug the programmable logic on Zynq. The Chipscope inserter will be set up to trigger on a bus transaction. This bus transaction

More information

Tutorial 1: C-Language

Tutorial 1: C-Language Tutorial 1: C-Language Problem 1: Data Type What are the ranges of the following data types? int 32 bits 2 31..2 31-1 OR -2147483648..2147483647 (0..4294967295 if unsiged) in some machines int is same

More information

Spartan-6 LX9 MicroBoard Embedded Tutorial. Lab 6 Creating a MicroBlaze SPI Flash Bootloader

Spartan-6 LX9 MicroBoard Embedded Tutorial. Lab 6 Creating a MicroBlaze SPI Flash Bootloader Spartan-6 LX9 MicroBoard Embedded Tutorial Lab 6 Creating a MicroBlaze SPI Flash Bootloader Version 13.1.01 Revision History Version Description Date 13.1.01 Initial release for EDK 13.1 5/17/11 Table

More information

Lab 3: Adding Custom IP to an Embedded System Lab

Lab 3: Adding Custom IP to an Embedded System Lab For Academic Use Only Lab 3: Adding Custom IP to an Embedded System Lab Targeting MicroBlaze on Spartan -3E Starter Kit This material exempt per Department of Commerce license exception TSU Lab 3: Adding

More information

Spartan-6 LX9 MicroBoard Embedded Tutorial. Tutorial 1 Creating an AXI-based Embedded System

Spartan-6 LX9 MicroBoard Embedded Tutorial. Tutorial 1 Creating an AXI-based Embedded System Spartan-6 LX9 MicroBoard Embedded Tutorial Tutorial 1 Creating an AXI-based Embedded System Version 13.1.01 Revision History Version Description Date 13.1.01 Initial release for EDK 13.1 5/15/2011 Table

More information

Hello World on the ATLYS Board. Building the Hardware

Hello World on the ATLYS Board. Building the Hardware 1. Start Xilinx Platform Studio Hello World on the ATLYS Board Building the Hardware 2. Click on Create New Blank Project Using Base System Builder For the project file field, browse to the directory where

More information

Adding Custom IP to an Embedded System Using AXI

Adding Custom IP to an Embedded System Using AXI Lab Workbook Adding Custom IP to an Embedded System Using AXI Adding Custom IP to an Embedded System Using AXI Introduction This lab guides you through the process of adding a custom peripheral to a processor

More information

TP : System on Chip (SoC) 1

TP : System on Chip (SoC) 1 TP : System on Chip (SoC) 1 Goals : -Discover the VIVADO environment and SDK tool from Xilinx -Programming of the Software part of a SoC -Control of hardware peripheral using software running on the ARM

More information

ECEN 449: Microprocessor System Design Department of Electrical and Computer Engineering Texas A&M University

ECEN 449: Microprocessor System Design Department of Electrical and Computer Engineering Texas A&M University ECEN 449: Microprocessor System Design Department of Electrical and Computer Engineering Texas A&M University Prof. Sunil Khatri TA: Monther Abusultan (Lab exercises created by A. Targhetta / P. Gratz)

More information

Adding Custom IP to the System

Adding Custom IP to the System Lab Workbook Introduction This lab guides you through the process of creating and adding a custom peripheral to a processor system by using the Vivado IP Packager. You will create an AXI4Lite interface

More information

CS360 Midterm 1 - February 21, James S. Plank. Put all answers on the answer sheet. In all of these questions, please assume the following:

CS360 Midterm 1 - February 21, James S. Plank. Put all answers on the answer sheet. In all of these questions, please assume the following: CS360 Midterm 1 - February 21, 2017 - James S. Plank Put all answers on the answer sheet. In all of these questions, please assume the following: Pointers and longs are 4 bytes. The machine is little endian

More information

Use Vivado to build an Embedded System

Use Vivado to build an Embedded System Introduction This lab guides you through the process of using Vivado to create a simple ARM Cortex-A9 based processor design targeting the ZedBoard or Zybo board. Where the instructions refer to both boards,

More information

Microblaze MCS Tutorial (updated to Xilinx Vivado ) (thanks to Kurt Wick from UMN with comments on changes from Vivado 2015.x to 2016.

Microblaze MCS Tutorial (updated to Xilinx Vivado ) (thanks to Kurt Wick from UMN with comments on changes from Vivado 2015.x to 2016. Microblaze MCS Tutorial (updated to Xilinx Vivado 2016.2) (thanks to Kurt Wick from UMN with comments on changes from Vivado 2015.x to 2016.x) This tutorial shows how to add a Microblaze Microcontroller

More information

Xilinx Vivado/SDK Tutorial

Xilinx Vivado/SDK Tutorial Xilinx Vivado/SDK Tutorial (Laboratory Session 1, EDAN15) Flavius.Gruian@cs.lth.se March 21, 2017 This tutorial shows you how to create and run a simple MicroBlaze-based system on a Digilent Nexys-4 prototyping

More information

LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v3.00.a)

LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v3.00.a) DS799 March 1, 2011 LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v3.00.a) Introduction The AXI Video Direct Memory Access (AXI VDMA) core is a soft Xilinx IP core for use with the Xilinx Embedded

More information

Quick Start Guide ZedboardOLED Display Controller IP v1.0

Quick Start Guide ZedboardOLED Display Controller IP v1.0 Quick Start Guide Introduction This document provides instructions to quickly add, connect and use the ZedboardOLED v1.0 IP core. A test application running on an ARM processor system is used to communicate

More information

Impulse Embedded Processing Video Lab

Impulse Embedded Processing Video Lab C language software Impulse Embedded Processing Video Lab Compile and optimize Generate FPGA hardware Generate hardware interfaces HDL files ISE Design Suite FPGA bitmap Workshop Agenda Step-By-Step Creation

More information

University of Toronto ECE532 Digital Hardware Lab 5: Adding a User-Designed Peripheral

University of Toronto ECE532 Digital Hardware Lab 5: Adding a User-Designed Peripheral Version 1.5 8/16/2004 This lab can be started during Lab 4 and completed during Lab 5, if necessary. Goals Add a user designed peripheral to a basic MicroBlaze system. Demonstrate the required structure

More information

NIOS Character. Last updated 7/16/18

NIOS Character. Last updated 7/16/18 NIOS Character Last updated 7/16/18 Character Buffer Block Diagram CLK RST Clock Reset_bar CLK RST PLL 25MHz* CPU Onchip Memory JTAG UART Timer System ID S M S S S S S M S Character Buffer DMA Dual Port

More information

Partial Reconfiguration of a Processor Tutorial. PlanAhead Design Tool

Partial Reconfiguration of a Processor Tutorial. PlanAhead Design Tool Partial Reconfiguration of a Processor Tutorial PlanAhead Design Tool Notice of Disclaimer The information disclosed to you hereunder (the "Materials") is provided solely for the selection and use of Xilinx

More information

LED display manager documentation

LED display manager documentation LED display manager documentation Clément Foucher (homepage) Clement.Foucher@laas.fr LAASCNRS Laboratoire d'analyse et d'architecture des systèmes Version 1.0 This work is licensed under the Creative Commons

More information

ArduCAM-M-2MP Camera Shield

ArduCAM-M-2MP Camera Shield 33275-MP ArduCAM-M-2MP Camera Shield 2MP SPI Camera Hardware Application Note Rev 1.0, Mar 2015 33275-MP ArduCAM-M-2MP Hardware Application Note Table of Contents 1 Introduction... 2 2 Typical Wiring...

More information

LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v3.01.a)

LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v3.01.a) DS799 June 22, 2011 LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v3.01.a) Introduction The AXI Video Direct Memory Access (AXI VDMA) core is a soft Xilinx IP core for use with the Xilinx Embedded

More information

LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v2.00.a)

LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v2.00.a) DS799 December 14, 2010 LogiCORE IP AXI Video Direct Memory Access (axi_vdma) (v2.00.a) Introduction The AXI Video Direct Memory Access (AXI VDMA) core is a soft Xilinx IP core for use with the Xilinx

More information

The Zynq Book. for Zybo and ZedBoard

The Zynq Book. for Zybo and ZedBoard The Zynq Book Tutorials for Zybo and ZedBoard The Zynq Book Tutorials for Zybo and ZedBoard Louise H. Crockett Ross A. Elliot Martin A. Enderwitz David Northcote Series Editors: Louise H. Crockett and

More information

Getting Started Guide

Getting Started Guide Series PMC-VFX70 Virtex-5 Based FPGA PMC Module Getting Started Guide ACROMAG INCORPORATED Tel: (248) 295-0310 30765 South Wixom Road Fax: (248) 624-9234 P.O. BOX 437 Wixom, MI 48393-7037 U.S.A. solutions@acromag.com

More information

Interrupt Creation and Debug on ML403

Interrupt Creation and Debug on ML403 Interrupt Creation and Debug on ML403 This tutorial will demonstrate the different debugging techniques used for debugging Interrupt based applications. To show this we will build a simple Interrupt application

More information

CE 435 Embedded Systems. Spring Lab 3. Adding Custom IP to the SoC Hardware Debug. CE435 Embedded Systems

CE 435 Embedded Systems. Spring Lab 3. Adding Custom IP to the SoC Hardware Debug. CE435 Embedded Systems CE 435 Embedded Systems Spring 2018 Lab 3 Adding Custom IP to the SoC Hardware Debug 1 Introduction The first part of this lab guides you through the process of creating and adding a custom peripheral

More information

AUTOESL AXI TRAINING: LAB EXERCISES

AUTOESL AXI TRAINING: LAB EXERCISES AUTOESL AXI TRAINING: LAB EXERCISES AutoESL AXI Training: Laboratories www.xilinx.com 1 Xilinx is disclosing this user guide, manual, release note, and/or specification (the Documentation ) to you solely

More information

The Simple MicroBlaze Microcontroller Concept Author: Christophe Charpentier

The Simple MicroBlaze Microcontroller Concept Author: Christophe Charpentier Application Note: Embedded Processing XAPP1141 (v3.0) November 9, 2010 The Simple MicroBlaze Microcontroller Concept Author: Christophe Charpentier Summary The Simple MicroBlaze Microcontroller (SMM) is

More information

CARDBUS INTERFACE USER MANUAL

CARDBUS INTERFACE USER MANUAL CARDBUS INTERFACE USER MANUAL 1 Scope The COM-13xx ComBlock modules are PC cards which support communication with a host computer through a standard CardBus interface. These ComBlock modules can be used

More information

LogiCORE IP Mailbox (v1.00a)

LogiCORE IP Mailbox (v1.00a) DS776 September 21, 2010 Introduction In a multiprocessor environment, the processors need to communicate data with each other. The easiest method is to set up inter-processor communication through a mailbox.

More information

Asynchronous FIFO Architectures (Part 1)

Asynchronous FIFO Architectures (Part 1) Asynchronous FIFO Architectures (Part 1) Vijay A. Nebhrajani Designing a FIFO is one of the most common problems an ASIC designer comes across. This series of articles is aimed at looking at how FIFOs

More information

Spartan-6 LX9 MicroBoard Embedded Tutorial. Tutorial 5 Embedded Chipscope Debugging

Spartan-6 LX9 MicroBoard Embedded Tutorial. Tutorial 5 Embedded Chipscope Debugging Spartan-6 LX9 MicroBoard Embedded Tutorial Tutorial 5 Embedded Chipscope Debugging Version 13.1.01 Revision History Version Description Date 13.1.01 Initial release for EDK 13.1 5/17/2011 Table of Contents

More information

Getting Started Guide with AXM-A30

Getting Started Guide with AXM-A30 Series PMC-VFX70 Virtex-5 Based FPGA PMC Module Getting Started Guide with AXM-A30 ACROMAG INCORPORATED Tel: (248) 295-0310 30765 South Wixom Road Fax: (248) 624-9234 P.O. BOX 437 Wixom, MI 48393-7037

More information

Microblaze MCS Tutorial for Xilinx ISE Rev 3 (December 1, 2012) added UART examples

Microblaze MCS Tutorial for Xilinx ISE Rev 3 (December 1, 2012) added UART examples Microblaze MCS Tutorial for Xilinx ISE 14.2 Rev 3 (December 1, 2012) added UART examples This tutorial shows how to add a Microblaze MCS embedded processor to a project including adding a simple C program.

More information

EDK Concepts, Tools, and Techniques

EDK Concepts, Tools, and Techniques EDK Concepts, Tools, and Techniques A Hands-On Guide to Effective Embedded System Design Notice of Disclaimer The information disclosed to you hereunder (the Materials ) is provided solely for the selection

More information

Altera s Avalon Communication Fabric

Altera s Avalon Communication Fabric Altera s Avalon Communication Fabric Stephen A. Edwards Columbia University Spring 2012 Altera s Avalon Bus Something like PCI on a chip Described in Altera s Avalon Memory-Mapped Interface Specification

More information

Copyright 2014 Xilinx

Copyright 2014 Xilinx IP Integrator and Embedded System Design Flow Zynq Vivado 2014.2 Version This material exempt per Department of Commerce license exception TSU Objectives After completing this module, you will be able

More information

Introduction to Xilinx Vivado tools

Introduction to Xilinx Vivado tools Introduction to Xilinx Vivado tools This document is meant to be a starting point for users who are new to using the Xilinx Vivado tools. The document will describe the basic steps to start, create, simulate,

More information

CCE 3202 Advanced Digital System Design

CCE 3202 Advanced Digital System Design CCE 3202 Advanced Digital System Design Lab Exercise #2 This lab exercise will show you how to create, synthesize, and test a 3-bit ripple counter. A ripple counter is simply a circuit that outputs the

More information

Lab5 2-Nov-18, due 16-Nov-18 (2 weeks duration) Lab6 16-Nov-19, due 30-Nov-18 (2 weeks duration)

Lab5 2-Nov-18, due 16-Nov-18 (2 weeks duration) Lab6 16-Nov-19, due 30-Nov-18 (2 weeks duration) CS1021 AFTER READING WEEK Mid-Semester Test NOW Thurs 8th Nov @ 9am in Goldsmith Hall (ALL students to attend at 9am) Final 2 Labs Lab5 2-Nov-18, due 16-Nov-18 (2 weeks duration) Lab6 16-Nov-19, due 30-Nov-18

More information

Synaptic Labs' AXI-Hyperbus Controller Design Guidelines

Synaptic Labs' AXI-Hyperbus Controller Design Guidelines Synaptic Labs' AXI-Hyperbus Controller Design Guidelines Table of Contents Introduction...3 1.0 Set-Up Requirements...4 Step 1: Obtain core materials...4 Step 2: License Setup...4 Step 3: Install AXI HBMC

More information

Designing Embedded AXI Based Direct Memory Access System

Designing Embedded AXI Based Direct Memory Access System Designing Embedded AXI Based Direct Memory Access System Mazin Rejab Khalil 1, Rafal Taha Mahmood 2 1 Assistant Professor, Computer Engineering, Technical College, Mosul, Iraq 2 MA Student Research Stage,

More information

GigaX API for Zynq SoC

GigaX API for Zynq SoC BUM002 v1.0 USER MANUAL A software API for Zynq PS that Enables High-speed GigaE-PL Data Transfer & Frames Management BERTEN DSP S.L. www.bertendsp.com gigax@bertendsp.com +34 942 18 10 11 Table of Contents

More information

Reconfigurable Architecture (8)

Reconfigurable Architecture (8) Reconfigurable Architecture (8) osana@eee.u-ryukyu.ac.jp Last week and Today Last week: minimum processor-based system CPU + BlockRAM + AXI UART-Lite Hello World from SDK Today: processor-based system

More information

Creating the AVS6LX9MBHP211 MicroBlaze Hardware Platform for the Spartan-6 LX9 MicroBoard Version

Creating the AVS6LX9MBHP211 MicroBlaze Hardware Platform for the Spartan-6 LX9 MicroBoard Version Creating the AVS6LX9MBHP211 MicroBlaze Hardware Platform for the Spartan-6 LX9 MicroBoard Version 13.2.01 Revision History Version Description Date 12.4.01 Initial release for EDK 12.4 09 Mar 2011 12.4.02

More information

İSTANBUL TECHNİCAL UNIVERSITY ELECTRİCAL ELECTRONICS ENGINEERING FACULTY

İSTANBUL TECHNİCAL UNIVERSITY ELECTRİCAL ELECTRONICS ENGINEERING FACULTY İSTANBUL TECHNİCAL UNIVERSITY ELECTRİCAL ELECTRONICS ENGINEERING FACULTY WRITING DRIVERS FOR CUSTOM PERIPHERAL RUNNİNG PARALLEL TO MICROBLAZE PROCESSOR ON FPGA BSc Thesis by Engin YÜREK Department: Electronics

More information

427 Class Notes Lab2: Real-Time Clock Lab

427 Class Notes Lab2: Real-Time Clock Lab This document will lead you through the steps of creating a new hardware base system that contains the necessary components and connections for the Real-Time Clock Lab. 1. Start up Xilinx Platform Studio

More information

LogiCORE IP AXI Video Direct Memory Access v4.00.a

LogiCORE IP AXI Video Direct Memory Access v4.00.a LogiCORE IP AXI Video Direct Memory Access v4.00.a Product Guide Table of Contents Chapter 1: Overview Feature Summary............................................................ 9 Applications................................................................

More information

LogiCORE IP AXI DMA (v4.00.a)

LogiCORE IP AXI DMA (v4.00.a) DS781 June 22, 2011 Introduction The AXI Direct Memory Access (AXI DMA) core is a soft Xilinx IP core for use with the Xilinx Embedded Development Kit (EDK). The AXI DMA engine provides high-bandwidth

More information

Vivado Design Suite User Guide. Designing IP Subsystems Using IP Integrator

Vivado Design Suite User Guide. Designing IP Subsystems Using IP Integrator Vivado Design Suite User Guide Designing IP Subsystems Using IP Integrator Notice of Disclaimer The information disclosed to you hereunder (the "Materials") is provided solely for the selection and use

More information

ECT 224: Digital Computer Fundamentals Using Xilinx StateCAD

ECT 224: Digital Computer Fundamentals Using Xilinx StateCAD ECT 224: Digital Computer Fundamentals Using Xilinx StateCAD 1) Sequential circuit design often starts with a problem statement tat can be realized in the form of a state diagram or state table a) Xilinx

More information

OPB to PLBV46 Bridge (v1.01a)

OPB to PLBV46 Bridge (v1.01a) 0 OPB to PLBV46 Bridge (v1.01a) DS726 April 24, 2009 0 0 Introduction The On-Chip Peripheral Bus (OPB) to Processor Local Bus (PLB v4.6) Bridge module translates OPB transactions into PLBV46 transactions.

More information

EDK Concepts, Tools, and Techniques

EDK Concepts, Tools, and Techniques EDK Concepts, Tools, and Techniques A Hands-On Guide to Effective Embedded System Design Notice of Disclaimer The information disclosed to you hereunder (the Materials ) is provided solely for the selection

More information

POWERLINK Slave Xilinx Getting Started User's Manual

POWERLINK Slave Xilinx Getting Started User's Manual POWERLINK Slave Xilinx Getting Started Version 0.01 (April 2012) Model No: PLALTGETST-ENG We reserve the right to change the content of this manual without prior notice. The information contained herein

More information

LogiCORE IP AXI DMA v6.01.a

LogiCORE IP AXI DMA v6.01.a LogiCORE IP AXI DMA v6.01.a Product Guide Table of Contents SECTION I: SUMMARY IP Facts Chapter 1: Overview Typical System Interconnect......................................................... 8 Operating

More information

Spartan-3 MicroBlaze Sample Project

Spartan-3 MicroBlaze Sample Project Spartan-3 MicroBlaze Sample Project R 2006 Xilinx, Inc. All Rights Reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx, Inc. All other trademarks are

More information

LogiCORE IP AXI DMA (v3.00a)

LogiCORE IP AXI DMA (v3.00a) DS781 March 1, 2011 Introduction The AXI Direct Memory Access (AXI DMA) core is a soft Xilinx IP core for use with the Xilinx Embedded Development Kit (EDK). The AXI DMA engine provides high-bandwidth

More information

Partial Reconfiguration of a Processor Peripheral Tutorial. PlanAhead Design Tool

Partial Reconfiguration of a Processor Peripheral Tutorial. PlanAhead Design Tool Partial Reconfiguration of a Processor Peripheral Tutorial PlanAhead Design Tool This tutorial document was last validated using the following software version: ISE Design Suite 14.1 If using a later software

More information

UART Interrupt Creation on Spartan 3A

UART Interrupt Creation on Spartan 3A UART Interrupt Creation on Spartan 3A This tutorial will demonstrate the UART Interrupt based application. To show this we will build a simple Interrupt application that will use the hyper-terminal to

More information

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

EENG 2910 Project III: Digital System Design. Due: 04/30/2014. Team Members: University of North Texas Department of Electrical Engineering EENG 2910 Project III: Digital System Design Due: 04/30/2014 Team Members: University of North Texas Department of Electrical Engineering Table of Content i Contents Abstract...3 Introduction...3 Report...4

More information

The SystemC Verification Standard (SCV) Stuart Swan Senior Architect Cadence Design Systems, Inc.

The SystemC Verification Standard (SCV) Stuart Swan Senior Architect Cadence Design Systems, Inc. The SystemC Verification Standard (SCV) Stuart Swan Senior Architect Cadence Design Systems, Inc. stuart@cadence.com The Verification Problem System Level Verification is typically done last, is typically

More information

Arty MicroBlaze Soft Processing System Implementation Tutorial

Arty MicroBlaze Soft Processing System Implementation Tutorial ARTY MICROBLAZE SOFT PROCESSING SYSTEM IMPLEMENTATION TUTORIAL 1 Arty MicroBlaze Soft Processing System Implementation Tutorial Daniel Wimberly, Sean Coss Abstract A Microblaze soft processing system was

More information

Imperas Peripheral Model Guide. Model Specific Information for xilinx.ovpworld.org / zynq_7000-ddrc. Imperas Software Limited

Imperas Peripheral Model Guide. Model Specific Information for xilinx.ovpworld.org / zynq_7000-ddrc. Imperas Software Limited Imperas Peripheral Model Guide Model Specific Information for xilinx.ovpworld.org / zynq_7000-ddrc Imperas Software Limited Imperas Buildings, North Weston Thame, Oxfordshire, OX9 2HA, U.K. docs@imperas.com.

More information

Active Serial Memory Interface

Active Serial Memory Interface Active Serial Memory Interface October 2002, Version 1.0 Data Sheet Introduction Altera Cyclone TM devices can be configured in active serial configuration mode. This mode reads a configuration bitstream

More information

VHDL Lexical Elements

VHDL Lexical Elements 1 Design File = Sequence of Lexical Elements && Separators (a) Separators: Any # of Separators Allowed Between Lexical Elements 1. Space character 2. Tab 3. Line Feed / Carriage Return (EOL) (b) Lexical

More information

MicroBlaze Tutorial on EDK 10.1 using Sparatan III E Behavioural Simulation of MicroBlaze System

MicroBlaze Tutorial on EDK 10.1 using Sparatan III E Behavioural Simulation of MicroBlaze System MicroBlaze Tutorial on EDK 10.1 using Sparatan III E Behavioural Simulation of MicroBlaze System Ahmed Elhossini January 24, 2010 1 Introduction 1.1 Objectives This tutorial will demonstrate process of

More information

Project Report Two Player Tetris

Project Report Two Player Tetris COMPUTER SCIENCE FACULTY OF ENGINEERING LUND UNIVERSITY Project Report Two Player Tetris Alexander Aulin, E07 (et07aa0) Niklas Claesson, E07 (et07nc7) Design of Embedded Systems Advanced Course (EDA385)

More information

Lesson 09: SD Card Interface

Lesson 09: SD Card Interface Lesson 09: SD Card Interface 1. Introduction A Secure Data (SD) card is a data storage device that can be used as massive storage in an embedded system. We will introduce a method to access data on a SD

More information

ADQ14 Development Kit

ADQ14 Development Kit ADQ14 Development Kit Documentation : P Devices PD : ecurity Class: : Release : P Devices Page 2(of 21) ecurity class Table of Contents 1 Tools...3 2 Overview...4 2.1 High-level block overview...4 3 How

More information

AXI Interface Based KC705. Embedded Kit MicroBlaze Processor Subsystem (ISE Design Suite 14.4)

AXI Interface Based KC705. Embedded Kit MicroBlaze Processor Subsystem (ISE Design Suite 14.4) AXI Interface Based KC705 j Embedded Kit MicroBlaze Processor Subsystem (ISE Design Suite 14.4) Software Tutorial Notice of Disclaimer The information disclosed to you hereunder (the Materials ) is provided

More information

LogiCORE IP AXI DMA v6.02a

LogiCORE IP AXI DMA v6.02a LogiCORE IP AXI DMA v6.02a Product Guide Table of Contents SECTION I: SUMMARY IP Facts Chapter 1: Overview Operating System Requirements..................................................... 8 Feature Summary..................................................................

More information

LogiCORE IP AXI Video Direct Memory Access v5.00.a

LogiCORE IP AXI Video Direct Memory Access v5.00.a LogiCORE IP AXI Video Direct Memory Access v5.00.a Product Guide Table of Contents Chapter 1: Overview Feature Summary............................................................ 9 Applications................................................................

More information

CS C Primer. Tyler Szepesi. January 16, 2013

CS C Primer. Tyler Szepesi. January 16, 2013 January 16, 2013 Topics 1 Why C? 2 Data Types 3 Memory 4 Files 5 Endianness 6 Resources Why C? C is exteremely flexible and gives control to the programmer Allows users to break rigid rules, which are

More information

82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide

82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide 82V391x / 8V893xx WAN PLL Device Families Device Driver Version 1.2 April 29, 2014 Table of Contents 1. Introduction... 1 2. Software Architecture... 2 2.1. Overview... 2 2.2. Hardware Abstraction Layer

More information

Generic Serial Flash Interface Intel FPGA IP Core User Guide

Generic Serial Flash Interface Intel FPGA IP Core User Guide Generic Serial Flash Interface Intel FPGA IP Core User Guide Updated for Intel Quartus Prime Design Suite: 18.0 Subscribe Send Feedback Latest document on the web: PDF HTML Contents Contents 1. Generic

More information

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

COVER SHEET: Total: Regrade Info: 5 (5 points) 2 (8 points) 6 (10 points) 7b (13 points) 7c (13 points) 7d (13 points) EEL 4712 Midterm 2 Spring 2011 VERSION 1 Name: UFID: Sign your name here if you would like for your test to be returned in class: IMPORTANT: Please be neat and write (or draw) carefully. If we cannot read

More information

LogiCORE IP AXI Master Lite (axi_master_lite) (v1.00a)

LogiCORE IP AXI Master Lite (axi_master_lite) (v1.00a) LogiCORE IP AXI Master Lite (axi_master_lite) (v1.00a) DS836 March 1, 2011 Introduction The AXI Master Lite is an AXI4-compatible LogiCORE IP product. It provides an interface between a user-created IP

More information