In 2018, we had our first Path to Programmable class. I described how the class was conceived by the element14 team, and why we are committed to providing element14 members training on programmable logic devices in a previous blog, Final Words and Future Opportunities on the Path to Programmable: Summary, Projects, Conclusions and Thank Yous. Path to Programmable provide some of our member-engineers who had limited experience designing with programmable devices a training program. The trainees received a Development Board for MiniZed Single-core Zynq 7Z007S and we gave them access to the MiniZed Speedway Design training. Then we had them complete the training and labs while we monitored, read, and enjoyed their blogs.
Now we are ready to graduate our first class, with more classes to come. To graduate, a trainee had to complete all lessons and labs and create a project of their choice that included the MiniZed. I'll give you a brief of the projects below, but each trainee that accomplished these requirements will receive:
|Designing with Xilinx® FPGAs: Using Vivado||FLUKE 3000 FC - Wireless Digital Multimeter||Pro's Kit Electronic Tool Kit|
So, without further adieu, here is a brief summary of the graduation projects:
While this project could easily have been done with a microcontroller, and often is, avnrdf decided to build one with the Minized, using both its PS and PL. Here's how it works: "The WS2812 RGB LED uses a single wire serial protocol that infers '1's and '0's by varying the width of a pulse. The project moves the serial output generation & refresh to the PL. The idea is that software in the PL simply writes 'data' to an 'address' in the BRAM (which corresponds to the RGB data of a LED of a given index), and the logic in the PL independently iterates through all the data in the BRAM using the other port, refreshing the LEDs. the main parts are the application that runs in the PS, the AXI4-Lite interface, a custom AXI to BRAM interface, dual port BRAM, a custom BRAM to RGB interface and a RGB to WS2812 generator. I could have used memory mapped BRAM using the Xilinx AXI-BRAM IP, but decided to build a custom interface that uses registers."
Designed by aspork42 and based in the FPGA fabric, "it generates an interrupt every "N" clock cycles; and I mapped it to the 48 MHz clock. This interrupt then feeds into the interrupt concatenator as interrupt #0. I used the IP Library to find new IP and import into my hardware design."
Continuing, "I then exported the hardware and made a new workspace & BSP in the SDK utility. I started with some base code in the SDK and got it working with my new hardware to run things. So I'm using both the PS + PL. I had to re-map the interrupt which was used in the base program to the one generated from Vivado."
This project started out as something interesting using the PMOD TDM114 camera module. To control the camera module, "I'm going to use a X-Y gimbal made from RC servos. I will run the servos from the MiniZed. To do this, I have modified the code from the IP training to run two RC servos instead (and addition to) the PL LEDs." (Designed by rsc)
This project was quite a surprise to me. But kk99 stated that "I have a really nice sensor module called GDK101 which measures gamma radiation in range up to 200 usV/h. This sensor has really simple communication interfaces: I2C or UART. There is also analog output which could be used for verifying the energy spectrum analysis of gamma photons." [His] plan [was] to use this module to measure gamma radiation and the energy spectrum analysis of gamma photons. The first step was to setup an I2C controller in PS of the MiniZed and communicate with sensor module. The second stop was to use the ADC sensor and create in PL a multichannel analyzer to see the spectrum. See the video below.
The microphones included on the Minized board are surface mount ST MEMS (Micro-Electro-Mechanical Systems) connected directly to Zync - 7000 AP SoC on the MiniZed board. It can take the PDM (pulse density modulation) from the microphone and convert it to 16 bit PCM (pulse code modulation) in two's complement format at a decimated sampling rate suitable for audio. mconners found an example project that would help him. He already had a version of MATLAB, which was necessary to conduct this experiment. That, along with System Generator utility of the Vivado design suite allow him to model circuits in MATLAB, using Xilinx IP blocks, and then export that design out to Vivado to program the FPGA.
I built this project mainly out of my need to watch videos on multiple devices. I use it to see them on my laptop, tablet, mobile device, so I maintain a copy of videos on all these devices and believe me it is a hectic. So I had the Minized Board run a webserver using a Linux Image with Python Integration so that I can do server side programing using Python. The Python Server handles those Requests regarding Setting the Led Color and Interacting with Sensors, so all these can be done from our web browser Iself. For Implementing a Webserver on minized i needed to run an Application which handles TCP/IP and Application Layer in OSI model, moreover, i need to connect to the Network through on board Murata 1DX WiFi module. (Designed by mu.udhay )
What's Next: Path To Programmable 2
I'd like to thank everyone who participated in the first Path to Programmable program. I'd also like to thank Xilinx and Avnet for sponsoring the program. Finally, I'd like to thank our Web Designer Pauline Chan ( pchan ) for all the hard work in posting the program on element14.
We are already planning our next Path to Programmable program, open to all element14 members. The training is being developed right now for the Ultra96-V2 which will be the focus of Path 2. So, stay tuned. I will be making an announcement sometime in Spring 2019.