37 sensors

This week had been exciting for me as now I have the Digilent Atlys Spartan 6 board to play with. Dr. Shawn taught me on USB over IP, to have the board connected to the server. Before doing anything, Dr. Shawn instructed me to go through the reference manual of the board first, this is very important as the connection of the jumpers should be checked before the board gets turned on. Besides the board, now I also have the Read more…

It Has Arrived

This week the board finally arrived and immediately I noticed that the ethernet jack was missing after notifying Dr. Shawn I then started testing the board with an led blink test program and verified the PIC and LEDs are working. I then moved to testing the USB with a simple comport test code to send a string and verified that the USB is connected and working properly. Next step was to test the FPGA, so firstly I tried to put Read more…

Doing Things Does Not Mean Getting Things Done!

This week I started with having both SPI master and SPI slave verified for its functionality. Besides checking for the results of waveform graph manually, I also made sure it passed the automated test bench. This applies for all four modes of SPI which differs from the aspect of clock polarity and clock phase. I was glad I finally could get it done as I had problems of simulating the output at first. I proceeded to the UART but again, Read more…

Nearly DONE

This week I managed to finish the basic version of the code. It now establishes a network and then uses CORS protocol to communicate with the client. The client will then be able to erase the FPGA or flash and write a new set of data by entering the correct sequence of commands under CORS protocol. In order to increase security, an HOTP is also required to perform some of these operations. This HOTP is generated from a random number, Read more…

Verification of Codes

I was not capable of verifying the codes that I modified because I had problems understanding how the output signal waveform should and should not be. I was frustrated with myself that I could not even understand the simple communication protocol, GPIO. Dr. Shawn was also angry and had to explain how it works in which the Wishbone bus and the GPIO signal must be observed to confirm whether or not the output works according to its inputs. Dr. Shawn Read more…

Read Flash

This week I worked on flash programming. Previously I managed to use flash driver to accomplish erase and write operations. However, the library does not include a read functionality. The code was still using NVM library to perform a read operation. I came up with a function to perform a flash read without the NVM library. It basically reads the physical address on the memory and saves it to a variable. The code can now receive data over an HTTPS Read more…

Automated Test Bench

Test bench can be deterministic or self-checking. In deterministic test bench, the design’s output are simulated according to the design’s state and inputs specified in the test bench. A designer would then have to validate that the outputs are working as it should. Meanwhile, in self-checking test bench, expected results are generated thus allowing the simulator to verify whether the actual outputs are tally to the expected outputs. This means that the designer does not have to go through the Read more…

Transmitting & Receiving The Bitstream

This week, after a lot of struggle with transmitting and receiving the bitstream, I finally managed to successfully transmit the bitstream using curl and receive it on the PIC32 and write it to the flash. HTTP 1.1 transmits long messages in 2 parts, headers, and the body. After receiving the headers a “100-Continue” header should be transmitted in order to receive the body of the message. However, in HTTP 1.0 “Expected: 100-Continue” is not needed, which means the whole message Read more…

NVM Driver

This week I was working on flash erase, write and read. Previously I used the NVM driver to access the flash. The erase size for flash is fixed to a page, which varies based on the device. The write size, however, can vary between a row, a quad-word and a word, these information are available in the data sheet. [Reference] In the NVM library, the size of write operation is set to row by default. It is possible to change the size by Read more…

A Month of Internship

This week started off with me panicking when I could not find my saved files and codes. I asked Dr. Shawn about it and he fixed it rightaway so I was able to access everything again. Turns out, it was because of a black out which affected our server. Then, I continued practicing the drawing of schematic diagram from reading the Verilog codes. Dr. Shawn helped me in explaining certain part of the codes which I did not understand. It Read more…