Programmable Logic Design I

Similar documents
Programmable Logic Design I

EE 367 Logic Design Lab #1 Introduction to Xilinx ISE and the ML40X Eval Board Date: 1/21/09 Due: 1/28/09

EE 1315 DIGITAL LOGIC LAB EE Dept, UMD

CPLD Experiment 4. XOR and XNOR Gates with Applications

Experiment # 4 Introduction to FPGAs - Detour Signal Lab

Using Synplify Pro, ISE and ModelSim

Xilinx Tutorial Basic Walk-through

Revision: February 27, E Main Suite D Pullman, WA (509) Voice and Fax

Xilinx Schematic Entry Tutorial

ECE 4305 Computer Architecture Lab #1

Programmable Logic Design Techniques I

Step 1: Downloading the source files

Xilinx ISE/WebPack: Introduction to Schematic Capture and Simulation

University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science. EECS 150 Spring 2000

University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science

TLL5000 Electronic System Design Base Module. Getting Started Guide, Ver 3.4

ANADOLU UNIVERSITY DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING. EEM Digital Systems II

Design a three-input, two-output sequential digital circuit which functions as a digital locking mechanism. LOCK ALARM

ECE 491 Laboratory 1 Introducing FPGA Design with Verilog September 6, 2004

UNIVERSITY OF CALIFORNIA, DAVIS Department of Electrical and Computer Engineering. EEC180A DIGITAL SYSTEMS I Winter 2015

ECT 224: Digital Computer Fundamentals Using Xilinx StateCAD

Xilinx ISE Synthesis Tutorial

Verilog Design Entry, Synthesis, and Behavioral Simulation

and 32 bit for 32 bit. If you don t pay attention to this, there will be unexpected behavior in the ISE software and thing may not work properly!

TLL5000 Electronic System Design Base Module

EET2141 Project 2: Binary Adder Using Xilinx 7.1i Due Friday April 25

Using ChipScope. Overview. Detailed Instructions: Step 1 Creating a new Project

EECS 140 Laboratory Exercise 4 3-to-11 Counter Implementation

Circuit design with configurable devices (FPGA)

Xilinx ChipScope ICON/VIO/ILA Tutorial

Lab 1: Introduction to Verilog HDL and the Xilinx ISE

COE 200 LABORATORY MANUAL

Circuit Design and Simulation with VHDL 2nd edition Volnei A. Pedroni MIT Press, 2010 Book web:

A B A+B

Introduction. About this tutorial. How to use this tutorial

Implementing a Verilog design into the UWEE CPLD Development Board Using Xilinx s ISE 7.1i Software: A Tutorial

Tutorial: ISE 12.2 and the Spartan3e Board v August 2010

ENGN 1630: CPLD Simulation Fall ENGN 1630 Fall Simulating XC9572XLs on the ENGN1630 CPLD-II Board Using Xilinx ISim

Lab 6: Intro to FPGAs

Using XILINX WebPACK Software to Create CPLD Designs

CSE P567 - Winter 2010 Lab 1 Introduction to FGPA CAD Tools

Introduction to Nexys 2 board - Detour Signal Lab

University of Florida EEL 3701 Dr. Eric M. Schwartz Madison Emas, TA Department of Electrical & Computer Engineering Revision 1 5-Jun-17

FPGA Introductory Tutorial: Part 1

Actel Libero TM Integrated Design Environment v2.3 Structural Schematic Flow Design Tutorial

Lab 4: Digital Electronics BMEn 2151 Introductory Medical Device Prototyping Prof. Steven S. Saliterman

University of Florida EEL 3701 Dr. Eric M. Schwartz Department of Electrical & Computer Engineering Revision 0 12-Jun-16

EE121 Foundation Review Session Page 1 of 16 Winter Learning to Love Xilinx Foundation 4.1i in 40 Easy Steps

EE 231 Fall Lab 1: Introduction to Verilog HDL and Altera IDE

Tutorial: Working with Verilog and the Xilinx FPGA in ISE 9.2i

Copyright 2011 R.S.R. Electronics, Inc. All rights reserved. 04/11. Ver. 1.0web

Digital Electronics & Computer Engineering (E85)

ECEN 449: Microprocessor System Design Department of Electrical and Computer Engineering Texas A&M University. Laboratory Exercise #1 Using the Vivado

Terasic DE0 Field Programmable Gate Array (FPGA) Development Board

Tutorial: Working with the Xilinx tools 14.4

EE183 LAB TUTORIAL. Introduction. Projects. Design Entry

Laboratory of Digital Circuits Design: Design, Implementation and Simulation of Digital Circuits Using Programmable Devices

475 Electronics for physicists Introduction to FPGA programming

Banks, Jasmine Elizabeth (2011) The Spartan 3E Tutorial 1 : Introduction to FPGA Programming, Version 1.0. [Tutorial Programme]

Digilab 2 XL Reference Manual

Boise State University Digital Systems Laboratory

CSE 591: Advanced Hardware Design and Verification (2012 Spring) LAB #0

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011

Getting started with the Xilinx Project Navigator and the Digilent BASYS 2 board.

The Alarm System: The alarm system to be designed has the following inputs.

Physics 623. FPGA I Construction of a Synchronous Counter Aug. 4, 2008

Lab 3 Sequential Logic for Synthesis. FPGA Design Flow.

Digital Circuit Design Using Xilinx ISE Tools

Xilinx ISE8.1 and Spartan-3 Tutorial (Prepared by Kahraman Akdemir based on Professor Duckworth's Tutorials updated September 2006)

Xilinx Project Navigator Reference Guide

Tutorial on Quartus II Introduction Using Schematic Designs

SOPC LAB1. I. Introduction. II. Lab contents. 4-bit count up counter. Advanced VLSI Due Wednesday, 01/08/2003

To practice combinational logic on Logisim and Xilinx ISE tools. ...

Physics 623. Programmable Gate Array Experiment Nov. 30, 2006

EE 1315: DIGITAL LOGIC LAB EE Dept, UMD

CS152 FPGA CAD Tool Flow University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Sciences

After opening the Programs> Xilinx ISE 8.2i > Project Navigator, you will come to this screen as start-up.

NIOS CPU Based Embedded Computer System on Programmable Chip

Tutorial on FPGA Design Flow based on Xilinx ISE Webpack andisim. ver. 1.0

Lecture 1: Introduction Course arrangements Recap of basic digital design concepts EDA tool demonstration

Introduction to WebPACK 4.1 for FPGAs. Using Xilinx WebPACK Software to Create FPGA Designs for the XSA Board

ELEC 204 Digital System Design LABORATORY MANUAL

EE 314 Spring 2003 Microprocessor Systems. Parallel Printer Port Use and Digital-to-Analog Conversion

SCHEMATIC DESIGN IN QUARTUS

The board is powered by the USB connection, so to turn it on or off you plug it in or unplug it, respectively.

Lab 2: Barrel Shifter Design

Introduction to Verilog and XILINX

Lab 1 Modular Design and Testbench Simulation ENGIN 341 Advanced Digital Design University of Massachusetts Boston

ChipScope Demo Instructions

Introduction to WebPACK 6.1. Using Xilinx WebPACK Software to Create FPGA Designs for the XSA Board

CS2204 DIGITAL LOGIC & STATE MACHINE DESIGN SPRING 2011

Altera Quartus II Tutorial ECE 552

Programming Xilinx SPARTAN 3 Board (Simulation through Implementation)

Introduction to WebPACK 5.2 for FPGAs. Using Xilinx WebPACK Software to Create FPGA Designs for the XSB-300E Board

EE 330 Laboratory 3 Layout, DRC, and LVS Fall 2015

Xilinx ISE8.1 and Spartan-3 Tutorial EE3810

VHDL introduction Notes

Using the Agilent Technologies Series Logic Analysis System with the Xilinx ChipScope ILA

Adding the ILA Core to an Existing Design Lab

Tutorial on Quartus II Introduction Using Verilog Code

Transcription:

Programmable Logic Design I Read through each section completely before starting so that you have the benefit of all the directions. Put on a grounded wrist strap (cf. Getting Started) before touching the Digilab boards. Introduction During the last lab you built simple logic circuits on breadboards using TTL logic circuits on 7400 series chips. This process is simple and easy for small circuits. With increasing complexity of the logic circuitry, the possibility of wiring errors grows and it becomes increasingly difficult to debug the circuit. Another problem is in the difficulty of finding all the needed logic circuitry on available chips. To address these problems the electronics industry has developed the concepts of Programmable Logic Devices (PLD s) and of Field Programmable Gate Arrays (FPGA s). The basic idea behind these devices is the notion that logic circuitry of arbitrary complexity can be constructed from simple gates connected with appropriate links and the technical advance, that has made this possible, is the development of large gate arrays with computer programmable links. The design process then consists of specifying the logic design by means of a logic design language such as VHDL or by entering it on a schematic layout. A computer program then turns this design into a series of instructions that are downloaded into the chip to establish the desired logic circuitry. Facilities are provided to specify the pin-out of the logic, to control placement of logic circuits on the chip and to impose timing constraints. Design Tools For our designs we will be using the Xilinx Corporation (www.xilinx.com) ISE Foundation 9.2i. We will start by entering our design in the form of a circuit schematic but, in later stages of the labs, we will also use a high level design language, VHDL, to benefit from its power and flexibility. In our designs we will sample only a few of the features and capabilities of this software package which is widely used in the electronics industry today. Hardware We will download our designs into a Digilab D2XL board connected to a Digilab Digital I/O board (DI01) shown in Figure 1 below. The FPGA chip on the D2XL board is a member of the Spartan II family, the XC2S30, with package type tq144, embodying 972 logic cells with a total of 30,000 gates. While this size of device was state-of-the-art a few years ago, rapid advances in technology have pushed the largest device sizes to many millions of gates. The D2XL board s I/O resources are limited to a single pushbutton and one LED for use with a test program to verify proper operation. A large variety of I/O devices, however, are available on the DI01 board attached to the D2XL by means of two 40 pin connectors. Our two experiments will exploit the features of the D2XL/DI01 combination to design a number of circuits that will demonstrate the usefulness of the discussed procedure. 1

Getting Started Hooking up the Hardware The circuitry is extremely delicate and can easily be destroyed if handled improperly. Static electricity which is easily generated is particularly dangerous and care must be taken to wear a grounded wrist strap when handling the circuitry. Your instructor will show you how to use it properly. Your two boards should be connected to one another, with power cord installed and with a programming cable, from the parallel port of the PC to the JTAG connector of the D2XL, attached. Ask your instructor for help if this is not the case. Figure 1: The D2XL and DI01 boards with programming cable attached. 2

Testing the D2XL board You should have a Xilinx ISE 9.2i icon on your screen. Double click on it to open the software. As a first program to download we want to use Di01Demo (C:/Digilent/ Di01Demo.ise) to test the integrity of the D2XL board and of the attached Digital I/O 1 board. If another project automatically opens up, close it from the File menu and use Figure 2: Project Navigator Open Project from the same menu to open Di01Demo. If you are successful, you should get a screen display analogous to that in Figure 2. You actually need to double-click on the 3 rd line in the top left window to get the display such as in the top right window. The above four windows represent the design environment for the project, with Sources in the top left window, the Processes for a given Source below it, the contents of selected files in the right hand window and text files underneath. On top of the Sources window is a tab to select the type of sources to be displayed. In this instance the sources are those associated with Synthesis/Implementation, but we will also be interested with sources for Behavioral Simulation there. 3

Before proceeding we need to check that we have selected the proper chip and simulation software. If you right-click the xcs230-tq144 icon in the Sources window and select Properties you should trigger a pop of the window such as shown below: Figure 3: Project Properties Check that the Device and Package types are correctly selected, i.e. such as above, and under Simulator choose ISE Simulator (VHDL/Verilog) and VHDL for the Preferred Language. When you are satisfied, close the window. Extensive help files are available online and at this time it would be a good idea to go to the Help menu and select Help Topics -> FPGA Design -> FPGA Design Flows and read the chapter FPGA Design Flow Overview. To test our board we are going to select the Synthesis/Implementation sources, to select Di01Demo-Behavioral and in the Processes window to expand the Generate Programming File and then double-click on Configure Device (impact). Doing this puts the program through all of the necessary steps to generate the file for downloading to the FPGA and to initiate the downloading process. If you are prompted to do so, choose the Configure devices using Boundary Scan bullet and select Automatically connect a cable and identify a Boundary Scan chain. You will then be asked to assign a new configuration file, open dio1demo.bit. If all goes well, you should wind up with a page such as shown in Figure 4. You may need to click on the boundary scan tab at the bottom of the main window to get to the right display. Following instructions, right-click on the device there and select Program and, if there are no problems, success will be signaled by a Program Succeeded announcement. At this time the 7-segment display should be cycling through the numbers 0 to 9, the slide switches should control their corresponding LED s and depressing the 4

push buttons (use the grounded wrist wrap) should interrupt the display on the 7-segment chip opposite of the button. Also, the push button on the D2XL card, when depressed, should light up the LED marked LD1. If the Program Succeeded message came up and the board did not program properly, unplug the board for 15 seconds, plug it back in and select program again. Figure 4: Programming page. 5

If this is so, then the D2XL board and the DI/O1 board are in proper working order and we can go on to our first project. Important Xilinx design notes: 1. Create your own directory in the D drive, D:\. Anything put into the root directory C:/ will be wiped out as soon as you log off. All of your work must be saved in your new D-drive directory or in its subdirectories. As a back-up, it is a good idea to copy your directory contents onto a flash drive before logging off. 2. Your directory and subdirectories CANNOT contain any spaces. 3. DO NOT name any of your projects or design elements by any reserved logical names such as, AND, OR, COUNTER, BUS, OUTPUT, etc 4. If you ignore any of these three notes, your project will not work! You will have to start the project over from the beginning. Depending on the project this could cost you a considerable amount of time. In addition, if one of your projects fails for one of these three reasons, points will be deducted from your lab score. 5. If implementing your design to your D2XL and D101 boards does not work, try restarting the board by disconnecting it from the power supply. Design Project I For our first project we will use Schematic Entry to design a circuit with a single AND gate. We will use ISE Simulator to test proper operation for our design, attach push buttons to the two inputs and an LED to the output, download the design into the FPGA and test operation of the completed circuit. Schematic Entry Go to the Help window, select Help Topics and then read the chapter FPGA Design/Design Entry/Schematics. Close the current project and refrain from saving the configuration file. Select File New Project to get to the Project Wizard. Choose a Project Name, Project Location on the D drive and Schematic for Top-Level Source Type. Check that the appropriate hardware is selected (see before) and that ISE Simulator is chosen. Do not create a new source nor add an old one at this time, but continue until the process finishes and displays the Design Environment again. Select the Synthesis/Implementation tab; click on your device name and in the Processes window click Create New Source. From the choices given, select Schematic and give it a name of your choosing. When the Wizard finishes, a schematic entry window is created representing your schematic file with an extension.sch. Open that window. Click on the Symbols tab in the sources window; choose Logic from the categories in the sources window. (If your Sources window is too small and you cannot get the symbols or categories scroll bars to work, increase the height of the Sources window.) Select and2 under symbols and place it in the schematic entry window. You may wish to magnify the drawing for better viewing. Next add input and output buffers to the two inputs and to one output using the buf symbol. (The buffers are needed to interface between different technologies of logic devices; they can be found in the Buffer category.) You will need the wiring tool to make the connections. Each input needs an 6

input marker and the output needs an output marker, which can be generated by clicking on the I/O Marker icon. Edit the default names to change them to IN_1, IN_2 and OUT_1 respectively. Save your design and go to Tools and Check Schematic to verify your design. If there are no errors, you can go on to the next step. Your design should look as in Figure 5. Print out the window with your schematic. Figure 5: AND Logic Design. Modeling the Design We must now model the design, in order to see that it satisfies our design goals. Select the Behavioral Simulation tab for Sources, click on the.sch file and in Processes create New Source, Test-bench Waveform and give it some appropriate name. In the Timing Window of Figure 6, select Combinatorial for the clocks and leave everything else as it is. The next window, shown in Figure 7, gives you the opportunity of setting a train of input pulses to test your logic design. Note that the two inputs should be chosen to exhaust all possible ways of feeding the circuit. Save your file and go back to the Sources window with the Behavioral Simulation tab depressed. Under processes select Xilinx ISESimulator, double click on Simulate Behavioral Model and you should be rewarded with a result such as Figure 8. Check the outcome over to assure yourself that the simulation indeed represents what you expect from your circuit, i.e. AND gate. Print out the window with results of your simulation. Assigning Pins Next we must assign pins to our device. Checking the DI01 Manual, we note on p.2 that the eight LED drive signals are active high. Correspondingly we will attach the output of our AND to the drive signal of LED 1. On p. 4 we note that activating a pushbutton connects its output to Vdd or logic high. Thus we will want to tie our inputs to the outputs of pushbuttons 1 and 2. Next we check the DI01/D2XL pin correspondence chart and note that LD1 is connected to FPGA pin 93 and that BTN1 and BTN2 are connected to pins 84 and 85. In order to implement the needed connections, select the.sch file in the Sources window with tab set to Synthesis/Implementation and double click on Assign Package Pins in the Processes window under User Constraints. Answer Yes that you do want to create an.ucf file. In the.ucf file, enter p84, p85 and p93 in the Loc column for I/O components In_1, In_2 and Out_1 respectively and then save the file choosing Synplify Verilog Default: [] as the bus delimiter. Implementing the Design Select the.sch file in the Sources window. Then under the Processes tab go to Generate programming and double click Configure Device [impact] to generate the appropriate files and download them to the FPGA. Follow the same steps you did in 7

Figure 6: Timing choices for ISE simulator. the initial tests of the boards. Ignore any warnings about clocks. You should once again see Programming Succeeded as an indication that no errors were found in your design and that the download was successfully accomplished. Testing the Design Manually verify that BTN1 and BTN2 are inputs to an AND circuit whose result is displayed in LD1. 8

Figure 7: Simulation logic train. 9

Figure 8: The Test-Bench with input and output logic levels. Design Project II Following analogous procedure as above, implement, simulate, download and test the circuit in Figure 9, which creates a NOR gate from 4 NAND s. Note that wires can be connected to each other, but only one wire can be connected to a pin. Finish the circuit by adding input and output (I/O) buffers and giving appropriate labels to the I/O 10

lines. You can once again use BTN1 and BTN2 for inputs and LD1 for the output. Verify that the truth table for a two-input NOR gate is satisfied. Figure 9: A two-input NOR circuit constructed from NAND's. Design Project III One of the huge advantages of this form of design is that macros of arbitrary complexity can be constructed, stored and reused in future designs. Our collection of symbols contains many such macros. For our next design, we will use one of them, CB4RE, a 4 Bit Cascadable Binary Counter with Clock Enable and Synchronous Clear, to construct a counter that will count from 0 to 5, then reset and continue counting. We will save our design as a new macro to be used in our next experiment. The design in Figure 10 is an implementation of such a counter. Write down a truth table for this counter using values for the clock (clk), counter enable (cen), clear (clr) and sufficient number of clock cycles to show the full, repetitive operation of the counter. What is meant by synchronous clear? You may wish to consult the Symbol Info tab for the CB4RE counter. A new wrinkle in this design is the presence of a bus which is a collection of individual signals. It is automatically created when a wire, drawn with the wiring tool, is labeled as a vector e.g. btout(3:0). Individual elements of the bus are selected via bus taps with their names specified by using the netname tool. In our case these names are btout(0) to btout(3). You may need to use the Rotate command located in the Edit menu to orient the bus tabs properly. Create the schematic entry in Figure 10; check for errors and save the file. The device that we wish to build will have 3 inputs marked ce for Clock Enable, clr for Clear and clk for Clock. Outputs will consist of a bus 4-bits wide, btout(3:0). Start a new project with schematic entry at the highest level. Enter your design in the now usual fashion naming the inputs ce, clk and clr. To generate a bus for output, draw a line using the wiring tool and give it a name btout(3:0). The program will change the line into a thicker bus-line in accordance with the name. Attach the bus taps to the bus. For that, 11

click on the Add Bus Tap icon, possibly correct your tap s orientation with the Rotate icon, and then click on the tap attached to the cursor when close to the bus line. Depending on program settings, the taps may be named automatically, in the order they are added, as btout(0),, btout(3). Otherwise, you may need to name the bus tap within its Object Properties. There should be two names there, vector for the bus as a whole and scalar name for the tap. You only need to change the scalar name. That will also become the name for any attached wire. Another way to add the bus taps is to click, after the Add Bus Tap icon, onto the pins of the component that needs to be connected to the bus, as in adding I/O markers. However, there is even less control then on tap addition than in the procedure above. In any case, you need to end up with the named connections to the bus, such as btout(0) to btout(3). Names can be also changed using net name under the Add menu. Be sure to click directly on the wire for chosen name to apply. You can use the increase the name feature to ease the amount of typing. An output marker needs to be attached to the bus. Be sure to save your design and to check for errors. Most often the errors are in poorly connected wires such as to the bus taps. Within the schematic, individual wires can be clicked on to highlight the connections and find the names assigned to the connections that may be mentioned in error messages. If no errors are found, go back to Project and create a new source of type Testbench Waveform using a single clock. Provide changes in the logic states of ce and clr to fully test your design. Save this Figure 10: A 0 to 5 counter. 12

file and go to Simulate Behavioral Model. Verify that your logic is working properly by examining the outputs on the Wave plot below (Figure 11). You may have to extend the simulation time to see a full clock cycle. In the toolbar, make sure the simulation ran for at least 10000ns. If not, modify it on the drop down menu in the toolbar and hit the run for specified time under the Simulation menu. Note that the btout bus is given numerically after each clock transition and that it can be expanded to look at the individual bit states as well. Does the output agree with your expected Truth Table? Print the window with sample results of your simulation. Next select your.sch file in Sources. Print the window with the schematic. Double click Create Schematic Symbol in Processes under Design Utilities. In your schematic entry page, verify that the new symbol is available for future use. It should carry the name of your schematic file. Design Project IV Today s lab is the introductory part of a two lab series that will result in the construction of a counter to count from 0 to 60 with the counts displayed on our 7- segment displays. If you have arrived this far, with time remaining, you may wish to continue with next week s lab and construct the 0 to 60 counter that is at the heart of our stopwatch design. 13

Figure 11: Testbench Waveforms for 0 to 5 Counter. 14