FPGA was a completely new thing to me before participating in this program. I learned a lot of things while writing blogs for this program. The list of all the blogs is given below:
- Spartan-6 VS Spartan-7 (Comparison)
- Getting Started with Arty S7-50
- Implementing MicroBlaze based Microcontroller on Arty S7-50
- Interacting with DDR3 SDRAM on Arty S7-50
- Transfer data over UartLite on Arty S7-50
- Image Processing (Box Blur) on Arty S7-50 (Project)
- Working with XADC on Arty S7-50
- Image Processing (Box Blur) with multiple box sizes (Adding a sensor)
- Reducing time to send over UartLite (Experiment)
- Summary for Arty S7-50 (Summary)
My aim was to implement image processing on the Arty board. I divided my project into smaller subprojects. Then combined them into one single project.
- Spartan-6 VS Spartan-7: In this blog, I compared the basic feature differences between the Spartan-6 series and the Spartan-7 series FPGAs.
- Getting Started with Arty S7-50: In this blog, I showed how to use the constraint files in any HDL design to access various LEDs, switches and push buttons available on the board.
- Implementing MicroBlaze based Microcontroller: This blog shows the steps to create your first MicroBlaze based custom microcontroller. And also how to include the LEDs and the push buttons in your microcontroller design and access them in Vitis.
- Interacting with DDR3 SDRAM: The Arty S7 board has a 256MB DDR3 SDRAM on it. It can be accessed using the Memory Interface Generator (MIG IP) in the block design. And the memory locations can be accessed using the Xil_Out8() and the Xil_In8() functions in Vitis.
- Transfer data over UartLite: In this blog, I showed how to send data over serial terminal using the UartLite IP and access it on your PC.
- Image Processing (Box Blur): In this blog, I combined all the previous learnings together to create an image processing algorithm based on the Box Blur algorithm. Initialized an image as an array, the code processed this array and stored the blurred image into a new array and sent it to the PC over serial connection.
- Working with XADC: Spartan-7 have a builtin ADC. In this blog, I showed how to insert it into our design and use it to get analog data from an IR sensor.
- Image Processing with multiple box sizes: I added the XADC to my previous design for image processing and connected a sensor to the A0 pin on the board. Whenever the IR sensor senses an IR signal, it increases the box size by 1 (max value 3). Higher box sizes will produce more blurred images.
- Reducing time to send data over UartLite: In this blog, I tried to minimize the time taken for sending the blurred image from the board to the PC by minimizing delay. I also calculated the minimum delay required for the data to be successfully captured by the PC.
While writing these blogs, I encountered many errors. But one by one they got solved. The Xilinx forum and the E14 community helped a lot in resolving these errors. So, I would like to thank them for helping me out.