I have finished Lab 7! This one was quite a bit longer for me and took three or four nights to get through.



Through Avnet, Xilinx and Element14, a training program to learn about the Zynq 7000 platform which is System On Chip combining an FPGA with an ARM processor. This comes to the students as complete development board packed with goodies like a wireless chip from MuRata (BT/BTLE/WIFI), 8GB Flash memory, onboard RAM, USB to JTAG (JTAG programmable over USB), Arduino-style headers (3.3V compatible only), Microphone, Bi-Color LED, and two additional expansion ports.


See all blog posts for this training here.


Lab 7 - Importing custom IP into the Vivado library

This lab shows how a user can import pre-made IP into Vivado. If you were; for instance; working with a team, someone could send you a file that they created for a hardware PWM controller. You can easily pull that in and add it to your project; and all your future projects in Vivado. This is called the "IP Catalog". The lesson walks through importing a PWM controller, then having the student manually update & link things in code. This includes declaring & mapping ports.


The main part of this deals with using VHDL (Hardware Description Files) files. I had never worked with them before so spent some time learning about them. In essence they are words to describe a hardware layout. It verbally describes the input/output ports, inner connections and wiring. It may sound complex; but makes a lot of sense once one has a basic understanding of the concept.



I found that I had incorrectly typed one of the instructions - I declared the PWM port as "std_logic_Vector" instead of "std_logic". This took a while to trace out since the line which was underlined in red wasn't where the actual problem was created. I had seen the red underline early in the lesson; but ignored it until the end hoping that it was just waiting for another part of the lesson to correct the fault. I tried to "run synthesis" to validate the design; and that's where Vivado halted me with an error message.



This shows where the problem actually occurred.


The use of pre-packaged stuff is very powerful. I saw that Vivado comes with lots and lots of options for free and "paid" IP that users can easily call up and link into their program. I'm looking forward to the next lab where we add a software interface and hopefully start blinking some real LED!