GPIO custom bus completed

During my 10th week at Aeste, I continued my unfinished business from the 9th week: bit banging the gpio to implement a custom 8 bits wide bus. I spent most of my time this week debugging the gpio driver for the custom bus. My code was ready at the beginning of the week, but it was buggy, and didn’t quite work. One of the most crucial problem is to set the right timing as when to set or read the Read more…

Week 1101

My last week surprisingly didn’t involve any more hardware and I had opportunity to play again with some good old C. The task for this week was to write the missing software part for the ECDSA, that is the whole algorithm for signature generation and verification (keeping in mind that scalar point multiplication and SHA-1 portion is already taken care of in hardware). The only difficulty was that numbers are well above the int range so I had to write Read more…

Week7: PCB Component Placement and Decoupling Capacitors

With the footprints done, wrestling with PCB design continues as usual with component placement and routing. Also this week, I hit a minor snag with regards to simple yet confusing aspect of my task. Blow-by-blow account below, but click here to leap to the summary. Layout & Design Rules As mentioned last week, the end-product will fit the Arduino form factor. The initial schematic had 54 digital I/O pins, but during the laying out of parts on the board a Read more…

15- A new AEMB.

I’ve managed to completely remove the Icache from AEMB. Simulation and FPGA implementation were both a success. However, after the edits AEMB now runs slower because it has to fetch each and every one of it’s instructions through at least two Wishbone cycles. It’s worth mentioning that Before removing the Icache at some points AEMB managed to execute instruction in one clock cycle. Thus I believe there is a big room for improvement even though it won’t be an easy Read more…

Week 08 – HTTP2.c Meets SD-SPI.c

Continuing from the last week, the reason that why the connection will be timed out when uploading a larger file is due to the modification I made to calculate the data size uploaded. The method was removed for the mean time and tested the code out. It turns out that the minor modification to the tightest loop is working partially, some data was written into the SD card successfully with some other garbage data. There are two observations that I Read more…

Week 5: SHA1 Driver (cont.) & RC4 Driver

This is my fifth week at AESTE, undeniably, I have learned a lot and I think that my programming skills is gradually improving as I implement my tasks. I have spent the first 2 days to continue implementing the SHA1 driver as it was unfinished last week. Later, my program for this driver was tested by a simulator- GTKWave and I found out that there were quite a few of tiny mistakes in my codes. My colleague, Mostafa and I Read more…

Week 9: Rpi GPIO bit banging

This week has been the shortest one since I started my internship at Aeste because we were having holidays for the Raya Aidilfitri. During the 3 working days of the week, I worked on the GPIO driver to let two raspberry pi communicate with each other. After some discussions with my supervisor, I decided to make a synchronous bus using the GPIO because it is the easier option. There are several ways of controlling the raspberry pi’s GPIO: wiringpi C Read more…

Week 1100

This week was more general as I was mainly trying to optimize all the modules I did so far, cleaning codes and git. From notable things, I managed to cut the number of LUTs in ECDSA module from last week’s 2200 to 1601 while the number of slice registers went up by only 100 from 1200 to 1298. That makes a huge difference! Escpecially that, this can be used to speed up the multiplier 4 times (and basically the whole Read more…

W08-Check run on existing pipeline implementation

This week task is to continue testing on all the instruction set schematics that I have implemented in the pipeline. I need to make sure the correct instruction is fetch according the to the program counter and later decode and execute it according the instruction fetched. Thus, I need to write assembler codes that contains simple arithmetic operation based on the pseudo opcodes for each instruction sets and compile them to hex file format so that I could test run my Read more…

Week 07 – Minor Modifications

The previous function of reading a sector is using a 512 bytes buffer, by doing minor modifying on the tightest loop to write into a pointer instead of a buffer. The function can read from sector indefinitely (theoretically) using multi-block read. If a read is less than 512 bytes, it will perform a single-block read instead. The next modification in the uploading bitstream is a bit tricky. First, the data from the Ethernet can be found in a Special Function Read more…