DSD Lab 14 Handout
DSD Lab 14 Handout
DSD Lab 14 Handout
Islamabad
Digital System Design LAB
EXPERIMENT # 14: Adding ILA and VIO Cores for Remote Monitoring
and Control
Name of Student:
Roll No.:
Date of Experiment:
Marks obtained:
Remarks:
Instructor’s Signature:
2. Resources Required
• A Computer
• Xilinx ISE
• Spartan 2 or Spartan 3E board
3. Introduction
This lab comprises four primary steps: You will configure the design by using the ChipScope Pro
analyzer tool; use the Core Generator to add ILA and VIO cores to the design; modify the clock
design in order to add the cores; and, finally, configure and control the design.
Note: You can download the lab files for this module from the Xilinx FTP site at
ftp://ftp.xilinx.com/pub/documentation/education/chipscope-9-rev1-print.zip.
Verify that the hardware is set up properly by checking the following settings.
• Digilentinc parallel configuration cable is connected to the parallel port of your machine and
the J7 JTAG connection on the Spartan-3 FPGA starter board.
• Board is powered and turned on.
This is a simple clock design that is now working properly. The design uses one of the available
pushbuttons to reset the clock to zero. In addition to using the
7-segment display, the design uses eight LEDs to reflect activity. The board is slated for
environmental testing to confirm the proper operation of the FPGA in various environments.
Select Start → Programs → Xilinx ISE → Project Navigator to open the Project
Navigator in the ISE software
In the dialog box that opens, select Auto Detect Cable Type, leave the other settings at their
default values, and click OK
A new dialog box opens, confirming the JTAG devices for the Spartan-3 FPGA starter board.
Click OK. Right-click the XC3S200 device in the New Project pane and select Configure
Click Select New File from the dialog box that opens
Observe the configuration status bar in the lower-right corner of the ChipScope Pro analyzer
display. Close the ChipScope Pro analyzer window
Observe the correct operation of the timer design on the Spartan-3 FPGA starter board
You can use an ILA core to monitor signals within the design and a VIO core to control
the reset and show board activity.
To accomplish this, use the ICON, ILA, and VIO cores. The ILA and VIO cores require
the following parameters.
ILA core:
o Define one trigger port with nine inputs: eight for LEDs and one for reset
VIO core:
o Define eight inputs for LEDs and one input to monitor reset
o Define two outputs: one as a reset and the other as a VIO console/board select,
allowing you to control the board from either the VIO console or the board
Using the Core Generator, generate an ICON core to use in this design.
Select Start → Programs → ChipScope Pro 9.2i → ChipScope Pro Core Generator
Click Save
In the ICON Parameters dialog box, define the number of control ports as 2. Leave the rest of the
options at their default. Click Next
In the Example and Template Options dialog box, set the following:
HDL Language
Using the Core Generator, generate an ILA core to use in this design.
After the ICON core has been generated, click Start Over
Notice that the Output Netlist location is already defined, as is the device type.
Trigger Width: 9
Click Next
Select 1024 as the sample data depth and select Data Same as Trigger. Click Next
In the Example and Template Options dialog box, set the following:
HDL Language
Using the Core Generator, generate a VIO core to use in this design.
After the ILA core has been generated, click Start Over
Confirm that the Output Netlist location and device family are correct
Select Enable Synchronous Input Port (do not use Asynchronous) and define a width of 9 bits
Click Next
In the Example and Template Options dialog box, set the following:
HDL Language
Verilog users: Copy the ICON, ILA, and VIO modules into clock_part2.v.
From the Project Navigator in the ISE software, double-click clock_part2.v in the Sources window
Scroll to the bottom of the file. Copy the ICON core module declaration to the clipboard
Select the clock_part2.v file already opened. Above the clock_part2 module, paste the ICON core
module declaration into this file
Look for the comment “Paste ChipScope Pro Core Modules here”
Repeat detailed steps 2 through 6 for the ILA and VIO cores
Save clock_part2.v
Copy the ICON, ILA, and VIO wire declarations and core instances into clock_part2.v.
Modify the clock design in order to add the ChipScope Pro software cores that you have
defined using the Core Generator. Perform the appropriate signal associations.
Select the icon_xst_example.v file. Copy the ICON core wire declarations and ICON core instance
Select the clock_part2.v file. Scroll down to the comment “Paste ChipScope Pro Core Instances here”
Paste the ICON core wire declarations and ICON core instance here
Repeat detailed steps 1 through 3 for the ILA and VIO core wire declarations and core instances
In clock_part2.v, for the ILA and VIO core wire declarations sections, delete the control and clk wire
declarations because they have already been defined as part of the ICON core
In the port map for the ILA core instance, tie the control port to control0 and tie the clk port to clk50
In the port map for the VIO core instance, tie the control port to control1 and tie the clk port to clk50
Add the appropriate connections to and from the ILA and VIO cores. Generate the
programming file.
In the clock_part2.v file, directly below the last core instance, un-comment the following lines of code
These were the signals that you had defined for the trigger inputs and VIO inputs and outputs above.
Save clock_part2.v
Select clock_part2.v in the Sources window. In the Processes window, expand Implement Design,
right-click Translate, and select Properties
A new dialog box opens, confirming the JTAG devices for the Spartan-3 FPGA starter board.
Click OK
Right-click the XC3S200 device in the New Project pane and select Configure
Click Select New File from the dialog box that opens
After successful configuration, observe normal operation of the clock LEDs and 7-segment display on
the board.
Observe that the ChipScope Pro analyzer has found two cores, Unit0: (ILA) and Unit1: (VIO), and that
the waveform display is populated with the defined trigger inputs.
Click the Run button and capture data within the waveform display
DataPort[0-7] represent LED0 through LED7 on the Spartan-3 FPGA board. Because you are
capturing the LED signals, there is a minimal amount of activity on a few channels, reflecting the state
at the time of capture.
Set up the VIO Console with LEDs for the output signals and buttons for the inputs.
Notice the arrows within the value field associated with the blue input signals—these are the LEDs that
are operating.
Also observe that the green signals represent outputs and the blue signals represent inputs. Familiarize
yourself with the different controls available in the horizontal toolbar, such as Sampling Period
In the VIO Console window, right-click SyncIn[0] and select Type → LED → RED → High