- Connect your KC705 board's USB-JTAG interface to a machine that has Vivado® IDE and cable drivers installed and power up the board.
- The Hardware Manager window opens. Click Open New
Target. The Open New Hardware Target dialog opens.
- In the Connect to field choose Local
server, and click Next.
Note: Depending on your connection speed, this may take about 10 to 15 seconds. - If there is more than one target connected to the hardware server, you see
multiple entries in the Select Hardware
Target page. In this tutorial, there is only one target as shown
in the following figure. Leave these settings at their default values, and click
Next.
- Leave these settings at their default values as shown. Click Next.
- In the Open Hardware Target Summary page, click Finish as shown in the following figure.
Wait for the connection to the hardware to complete. After the connection to the hardware target is made, the Hardware dialog shown in the following figure opens.
Note: The Hardware tab in the Debug view shows the hardware target and XC7K325T device that was detected in the JTAG chain.
- Next, program the previously created XC7K325T device using the .bit bitstream file by right-clicking the XC7K325T device, and selecting Program Device as shown in the following figure.
- In the Program Device dialog verify that the .bit file is correct for the lab that you are working on. Click
Program to program the device.
Note: Wait for the program device operation to complete. This can take a few minutes. - Verify that the JTAG to AXI Master and ILA cores are detected by locating
the hw_axi_1 and hw_ila_1 instances in the Hardware Manager window.
- You can communicate with the JTAG to AXI Master core via Tcl commands only.
You can issue AXI read and write transactions using the run_hw_axi command.
However, before issuing these transactions, it is important to reset the JTAG to
AXI Master core. Because the aresetn input port of the jtag_axi_0 core instance
is not connected to anything, you need to use the following Tcl commands to
reset the
core:
reset_hw_axi [get_hw_axis hw_axi_1]
- The next step is to create a 4-word AXI burst transaction to write to the first
four locations of the BRAM:
set wt [create_hw_axi_txn write_txn [get_hw_axis hw_axi_1] -type WRITE -address C0000000 -len 128 -data {44444444_33333333_22222222_11111111}]
where:
-
write_txn
is the name of the transaction. -
[get_hw_axis hw_axi_1]
returns the hw_axi_1 object. -
-address C0000000
is the start address. -
-len
128 sets the AXI burst length to 128 words -
-data {44444444_33333333_22222222_11111111}
is the data to be written.
Note: The data direction is MSB to the left (i.e., address 3) and LSB to the right (i.e., address 0). Also note that the data will be repeated from the LSB to the MSB to fill up the entire burst. -
- The next step is to set up a 128-word AXI burst transaction to read the contents
of the first four locations of the AXI-BRAM
core:
set rt [create_hw_axi_txn read_txn [get_hw_axis hw_axi_1] -type READ -address C0000000 -len 128]
where:
-
read_txn
is the name of the transaction. -
[get_hw_axis hw_axi_1]
returns the hw_axi_1 object. -
-address C0000000
is the start address. -
-len
128 sets the AXI burst length to 4 words.
-
- After creating the transaction, you can run it as a write transaction using the
run_hw_axi
command:run_hw_axi $wt
This command should return the following:
INFO: [Labtools 27-147] : WRITE DATA is : 44444444333333332222222211111111…
- After creating the transaction, you can run it as a read transaction using the
run_hw_axi
command:run_hw_axi $rt
This command should return the following:
INFO: [Labtools 27-147] : READ DATA is : 44444444333333332222222211111111…