---
# System prepended metadata

title: BASE_SOC
tags: [Side Project]

---

BASE_SOC
===
###### tags: `Side Project`

## 工作日誌
- [x] 20200907 項目
:::success
- 討論系統架構
    - 架構原理說明
    - 架構可行性評估
- 安裝IDE (ISE、Quartus)
- 評估硬體需求以及各自準備器材
- Quartus環境設定
    - Darker mode example
:::
[Ref. Quartus環境設定](https://www.cnblogs.com/oomusou/archive/2008/07/07/quartus_ii_setting.html)


- [x] 20200908 項目
:::success
- 完成系統架構規劃，並進行更進一步的討論
- 完成安裝開發工具 (quartus 9.1)
    - 包含載入並測試基本模組
- 明日各自準備需要的器具(鍵盤、LCD)
:::
[Ref. Verilog HDL vs VHDL](https://www.myoschain.com/blog/124092039804485632)

- [x] 20200909 項目
:::success
- 完成4x4 鍵盤矩陣 verilog code
    - Ming : 接點補好 Bing : 加上排阻
- 兩邊電路同步
- 研究  I2C FPGA 通訊模式
    - [Ref.在FPGA中使用Verilog實現I2C通訊](https://www.itread01.com/content/1550598664.html)

:::
[Ref. 高模組化的觸控螢幕控制器的研製](http://ir.lis.nsysu.edu.tw:8080/bitstream/987654321/28573/1)
[Ref. IoT Wireless Sensors](https://sites.google.com/site/tgptechnologies/fpga-project/i2c)

- [x] 20200910 項目
:::success
- 完成 LCD_I2C 在樹梅派上的測試
    - 預備研究並實現 LCD_I2C 在樹梅派
- 盡量研究 FPGA OLED 的可行性 
    - 驅動晶片型號：sh1106
    - 目前問題：依照指示顯示之後，只有上1/6螢幕出現閃爍畫面，但是資訊也不正確 
:::

- [x] 20200911 項目
:::success
- 完成 sh1106 OLED 在樹梅派上的顯示
- 研究 FPGA OLED 的可行性 
    - sh1106 與 ssd1306 差異在於解析度不同
    - There is only one small difference between SSD1306 and SH1106: The SH1106 controller has an internal RAM of 132x64 pixel. The SSD1306 only has 128x64 pixel.
    - 目前問題：解析程式碼的時候無法得知每一行程式碼的實質用意，因此，查詢了一些關於 I2C_LCD、I2C_OLED的資料
    - [Ref1. STM32模拟IIC驱动OLED屏 原理+源码](https://blog.csdn.net/zhangdaxia2/article/details/51027241)
        - 主要說明I2C的運作原理，以及OLED資料傳送與掃描原理。
        - 網頁提供一個滿實用的程式範例，算是可以比較直觀的看到傳輸的procedure。
    - [Ref2. 12864点阵液晶显示模块的原理和实例程序（HJ12864M-1）](https://blog.csdn.net/weixin_34051201/article/details/85494292?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-6.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-6.nonecase)
        - 主要講述LCM顯示的運作原理
    - [Ref3. SSD1306(OLED驱动芯片)指令详解](https://blog.csdn.net/notMine/article/details/79317782)
        - 重點網頁，但由於sh1106資料比較少，先以1306為主
        - 主要介紹 SSD1306 系列的晶片如透過 page mode 以及 column mode來對OLED進行掃描顯示，
        - 傳輸時透過LSB傳輸，搭配 SCL、SDA傳輸
            - SCL 皆為高準位，SDA正緣(start)、SDA負緣(end)
            - 傳輸資料的時候SCL在一個方波內的SDA資料才會被傳出
        - RAM訪問模式：
            - 地址模式：PAGE之間位址不連續，所以跳躍時要特別指定
                - <img src=https://img-blog.csdn.net/20180212170945378>
            - 水平模式：PAGE之間位址是連續的(列地址到尾端時，PAGE_ADD+1)
                - <img src=https://img-blog.csdn.net/20180212171014811>
            - 垂直模式：同樣的列地址因PAGE_ADD掃到尾端時，自行+1
                - <img src=https://img-blog.csdn.net/20180212171024211>
    - [Ref5. sh1106 datasheet](https://www.velleman.eu/downloads/29/infosheets/sh1106_datasheet.pdf)
:::
- [x] 20200916-項目
:::success
- 完成細部的controller <-> memory 的規劃
- 分離 fpga 中LCD module 以及 keyboard module
    - 目前 LCD module 會隸屬在 memory 中的 machine behavior lookup table 中的 action section
    - keyboard module 由於透過 controller polling，理論上應該要放在 machine behavior lookup table
- 完成 keyboard action 以及專案同步計畫
:::
- [x] 20200917-項目
:::success
- LIN 終於完成DEBUG
- BING 目前正在處理 key_event 細部問題
    - 長短按之間以及每次按的時候的分辨準確性
- 分離 Controller、ALU 以及 Memory 至模組化
    - 應該以 BAS_SOC 作為system 的進入點，作為之後system extension 之用
:::
- [x] 20200924-項目
:::success
- BIN 找到 keybarod scanning bug
    - Still find out solution, and its a good progress
    - 5 bits 掃描技術
    - 74922 鍵盤掃描IC
- System IP diagram
    - 再次描述 Controller、Memory、ALU以及DMA之間的關係圖
    - 加入 hardware、driver 的鏈結關係
:::
- [x] 20201003-項目
:::success
- 完成 controller、driver、hardware wire conneciton
    - test with a keyboard input & led output
- 修正 wire asignee
    - hardware : 管理所有 component I/O
    - BASE_SOC : 管理內部硬體的 wire
:::
- [x] 20201010-項目
:::success
- LIN 完成 eeprom 在 raspberry 上的測試
- 針對 hardware ip diagram 構想 communication structure
    - 目前使用uart 方式通訊(baud rate 9600, 115200)
    - 現有的 I2C 模組存在FPGA，但是還未修繕好
:::
- [x] 20201017-項目
:::success
- 完成 RFID 在 Arduino 上的辨識實做
    - 樹梅派因為 driver 和 gpio version 匹配問題導致無法正常讓 reader 運作
- raspberry 通訊端模組建立準備
:::
- [x] 20201024-項目
:::success
- 樹梅派通訊模組 
    - 使用 char device 作為 kernel driver
    - 連接端目前規劃 SPI、I2C、UART
- 
:::
- [x] 20201101-項目