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

14 – Removing Icache from AEMB

My new task is to remove the Icache module from AEMB. Basically Icache holds all instructions before execution by the core. Icache acquires the instructions from whatever is holding them externally and keeps them for processing. Icache controls the Instructions WB interface through the ich_hit signal. When the processor needs an instruction that’s not available in Icache, the ich_hit signal is driven low which starts a wishbone transaction to fetch the instruction from the external source holding it. Moreover, the Read more

Week6: Finishing Schematics and PCB Footprints

Continuing from where we left off last week, we make a few last-minute additions to the Spartan-6 schematics and design the footprints of the components in preparation for PCB design. Just a short post this week, but click here to skip to the conclusion. Hardware Schematics With all the pins of the PIC18 routed, it was time to do the same for the Spartan-6. With a total of 144 pins, two out of four of the Spartan-6 LX9 banks remained Read more

Week 4: SHA1 driver

This week, I was given a task to write a driver for the Secure Hash Algorithm 1 (SHA-1), which ultimately produces a 160-bit of hash value. It wasn’t as simple as I thought it would be as it’s quite different from the drivers that I wrote earlier. Apart from understanding how’s the communications between the driver and the accelerator,  I also had to learn how to utilise inline-assembly in  C/C++ codes, which has taken up quite a lot of my Read more

Week 8: Remoteproc + Raspberry Pi

This week, the nature of my main task changed a little. From developing the remoteproc driver for X86 architecture I’m now required to do it for the raspberry pi which uses an ARM processor. This is because the main product of our company is not completely ready, and my supervisor wanted me to test my findings on something solid to really prove that the remoteproc framework is 100% usable. The compilation technique also changed because of this. Now I have Read more

W07- (cont) Pipeline Implementation in Java (Execute Stage)

After putting my current project on halt for a week time, finally I’m back to track to work on my T3ras project. This week I focus mainly on the execute stage in pipeline to execute and manipulate each of the MicroBlaze instruction sets into semantics operation written in Java. Since there are around 90+ instruction sets that need to be taken care of and thus it’s easier to get them sorted out by family first before start writing the source Read more