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 | |
## 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] |