Zynq 7000 SoC: Digilent CORA Z7

Wanted to start learning how to use SoCs – these are system-on-chips, an example is the Xilinx Zynq 7000. This has a processor AND an FPGA as an integrated solution.

To get started, I ordered a Cora Z7 board from Digilent; dev boards like this make it very easy to get started.

I was able to get this running following a tutorial from SimplyEmbedded on youtube:

I’m adding a few notes for clarification of use with the CORA Z7 digilent board.

First off, I wasn’t even sure how power should be supplied to the board or how it is programmed! For example, there is a 5V power connector, a USB port, and a micro USB port. By messing around, I found you can program AND power through the micro USB port. Just be careful – the first cable I used applied power, but I could not program the board. I think some cables can supply power only, and are missing the connections for sending data. Once I had the proper cable, I could auto connect to the board and program it.

Also, to work with the digilent board, I had to install the board file from the Xilinx Board Store. The files need to be placed in a specific directory, on my system: D:\Xilinx\Vivado\2020.1\data\boards\board_files.

Next create a project. This is shown in detail in the following video, adding some code to flash the LEDs and demonstrate verilog coding.

`timescale 1ns / 1ps
module top(
input button,
input button2,
output led,
output led2,
output led3
);
assign led = button;
assign led2 = button2;
assign led3 = button & button2;
endmodule
view raw top.v hosted with ❤ by GitHub
## RGB LEDs
set_property -dict { PACKAGE_PIN L15 IOSTANDARD LVCMOS33 } [get_ports { led }]; #IO_L22N_T3_AD7N_35 Sch=led0_b
#set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports { led2 }]; #IO_L16P_T2_35 Sch=led0_g
set_property -dict { PACKAGE_PIN N15 IOSTANDARD LVCMOS33 } [get_ports { led2 }]; #IO_L21P_T3_DQS_AD14P_35 Sch=led0_r
#set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led1_b }]; #IO_0_35 Sch=led1_b
#set_property -dict { PACKAGE_PIN L14 IOSTANDARD LVCMOS33 } [get_ports { led1_g }]; #IO_L22P_T3_AD7P_35 Sch=led1_g
set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led3 }]; #IO_L23N_T3_35 Sch=led1_r
## Buttons
set_property -dict { PACKAGE_PIN D20 IOSTANDARD LVCMOS33 } [get_ports { button }]; #IO_L4N_T0_35 Sch=btn[0]
set_property -dict { PACKAGE_PIN D19 IOSTANDARD LVCMOS33 } [get_ports { button2 }]; #IO_L4P_T0_35 Sch=btn[1]
view raw cora.xdc hosted with ❤ by GitHub