---
# System prepended metadata

title: SOCStudy.md

---

# Lab 1
---

透過VM 使用vitis hls 設計出乘法器ip並export到vivado接線並生成bitstream，load到pynq上執行並成功得到相對應結果。

---
# Lab 2 
---

實作FIR filter 用MAXI和Stream兩個interface實作，介紹了在vitis hls中設定interface的方法，還多了kv260的FPGA板子的設定和如何運作。

---
# Lab3

---

lab3是要寫verilog code ，而實作的design也是FIR11，主要的module是testbench、FIR和兩個SRAM，SRAM分別是tape和input data，透過testbench傳到FIR，再將data傳到SRAM存放，因為FIR的design裡面只能包含一個MUL和一個ADD，之間的interface如下：
![](https://hackmd.io/_uploads/ryYuJQ-Z6.png)
左側還要再加上 testbench 的 block。

在lab3上花的時間是目前的lab中花最久的，主要是卡在data和cofficient的傳遞，因為要先送到fir design再傳到bram去存放，而且在fir裡也不能用register存放，所以才會有比較多的問題產生，但最後還是有在時間內繳交作業，但是performance的部分就不是到很好。

---
# Lab4-1

---
在lab4-1主要是把firmware從spi-flash讀到user bram裡面存放，主要的目的是想減少讀取firmware的時間，主要的設計就是把wishbone和bram之間的handshake建構起來。

---
# lab4-2

---
lab4-2主要是將4-1設計出來的ex-mem再配上lab3的fir，兩者結合再加上一個address decode的module，從wishbone讀進來的address分成兩條路，分別讀進fir或是firmware，當初一直找不到卡住的原因，後來才發現原來是沒有處理到wb_ack_o這個信號，所以一直卡住值到timeout，解決之後也就順利繳交作業了。

---

# lab5

---

lab5的部分主要是去了解整個design和各個ip，去了解他們之間的關係，也是目前lab之中一個比較晚整的設計，simulation上就只是照著指令跑而已，主要是透過block design去了解整個運作，搭配上講義和助教的講解，對於了解整個lab5是相當有幫助的。

---

# lab6

---
在lab6的部分，主要是將4種firmware整合起來並用FPGA實作，類似於4-2的部分是，也是要做decode，一部分是uart，一部分是ex-mem，在一開始在整合的時候，可能對於整個架構不是太了解，在user project的部分有點搞混了，搭配上uart的design，module之間的實例化就有點複雜，在不斷的try and error之後就有成功跑出結果了，不過不知道為什麼在整合過後的uart在jupyter notebook一直print出亂碼，hello的h看起來像越南字的ũ，但是在單獨uart的實作上是可以正常print hello，我看討論區也有其他同學遇到問題，嘗試了一些方法後還是有點怪怪的，但是剩下的character都正常，也因為時間不多了就先整理好做成報告繳交了。

---

## labD

---

labD的部分沒有花太多時間做，因為時間有限加上final project也同步進行，我們有制定出prefetch scheme ，bank interleave的部分也有設計好，wishbone的decode到不同的bank也有做設計，但不幸的是最後跑模擬的時候還是有一些bug，導致結果錯誤，所以就把我們有做的部分寫成report，並把source code上傳到github。

---

# Final project

final project的部分我們這組是做uart加上fifo的優化，最後實作出來看的出來因為有fifo的緣故，讓每一筆data傳出去的時間有重疊的部分，所以整體傳送完的時間大幅度的降低，也有implement到FPGA上作驗證，也是有成功輸出結果的。

---

# Github link

## lab1 ~ lab4-1

https://github.com/sssh311318/nthu_SoC

## lab4-2

https://github.com/thhongee/SoC_lab4_2

## lab6

https://github.com/thhongee/SoC_Lab_06

## labD

https://github.com/thhongee/SoC_LabD_SDRAM

## final project

https://github.com/thhongee/SoC_fINAL

---

