Setback in Bitstream reading

This week was one where a big setback was experienced in the stack of code for bitstream reading. The stack was then analysed to find the overhead in the code so that the target read times can be achieved. Other than that, some more modifications were made to improve the overall functionality of the program. It was certainly an eventful week. A big Woops! The error in the current code structure was found when the bitstream upload stack was being Read more

Minor Modifications

The week was spent trying to look for ways to optimize the file upload time to suit the required objective having made some strides on that path during the previous week. Apart from that, a few modifications were made to the MBR editing function. MBR Partition informations It is important to notice that before the SD card is used with the board, it may have already been formatted for use. This means that the SD card may have partitioning informations Read more

SPI bug, timing and documentation

Finalizing continues with the SPI. I have previously made a few changes in SPI while integrating it with the system but I hadn’t verified the functionality of SPI after those changes. The most notable change was that one of my if statements was mistakenly inferring a latch. The if statement was missing an else condition. I tested the SPI and it performed as intended on simulation and FPGA. Moreover, I tested the SPI driver. While the FPGA implementation wasn’t very Read more

Full speed SD card reading

The week was spent in continuing the ground work done on the Synchronous USART to optimize the Reading process which will subsequently program the FPGA. After solving the problem faced in the week before, time was spent in trying to get the SD card to read the bitstream data as fast as possible.  A lot of time was also spent to diagnosing the current writing stack to try and find the bottleneck for it and speeding up the stack as Read more

Finalizing and Documenting

This week and the coming one will all be about finalizing, testing and documenting everything. This needs to be done for all t3pi I/O devices. In addition, there is a few bugs in c3rdas accelerators that need to be solved. Currently I’m writing my technical report about my internship. I will be posting any relevant diagrams or information from my report. I hope this helps whoever is gonna use my devices later on. Picking up from last week, it has Read more

The big picture and saving time

The project becomes closer to completion with the top level creator being as done as possible. In this post I’ll start by explaining the top level creator and it’s awkward status of being “as done as possible”. Next, I’ll try to make the big picture of our project clearer by explaining the whole process step by step. Most importantly, I’ll showcase my results from analyzing the time consumed by the execution of Xilinx tools using various options. The top level Read more

Continuing Optimization

The optimization of the firmware continued with the focus being on the SD card reading stack. A look into the USART’s synchronous mode functionality was also taken to try and understand how that works. There was also a lot of time spent trying to set up scenarios to break the upload mechanism and see how the system behaves under non-standard conditions. USART synchronous mode The term USART stands for “Universal Synchronous Asynchronous Receiver Transmitter”. So far, only the “Asynchronous” functions Read more

And the optimization begins!

Following the completion of the Ping-Pong Upload mechanism, its time to step forward to system optimization for the PIC firmware. This includes many separate portions looked into during the week to try to enhance the system performance and deliverable. The tasks include: i)optimization of the read/write functions ii) clearing up flash memory for future firmware updates. Apart from that, it was also required to find possible flaws in the current code which may result in the stack to not function Read more

Bit streams, Synthesizer and Data2mem

My journey with C++ continues with three engines up and running. The bitgenerator, the software encoding bitstreams to suit our system. The software loader which runs data2mem to load the elf file into the RAM blocks on the bitstream. Last but nor least the synthesizer which runs Xilinx command line tools to transform the Verilog design into a bitstream. Picking up from last week, the software encoding the bitstream , bitgenerator, wasn’t supposed to use the Boost library to do Read more

Completed Design for the Ping Pong Upload Mechanism

As mentioned last week, the basic logic for the mechanism was devised within the PIC but it needed to be integrated to store and receive information on where the correct version of the file is saved onto the SD card from the card’s MBR itself. The biggest challenge to this problem was to safely store information onto the MBR of the SD card so that it is not damaged in the process. The MBR(Master Boot Record) is the boot sector at Read more