從暑假第二週(7/1)為期八個禮拜的實習時光
終於在上個禮拜五結束
因為我是科技部計畫替代 所以實習站就是實驗室
除了有專題生來學程式的日子外
其他時間就只有我跟專題partner(也有過計畫)
在空蕩蕩 冷氣很冷的Lab裡 做計劃、睡覺、打電腦==
-------------------------------------------------------------------------
窩的科技部計畫內容與專題蠻相似的
主要是做影像處理的電路設計
以Verilog、Hspice和Matlab撰寫並實現硬體架構
整體分兩大部分 (1) 電壓控制SRAM (2) 邊緣偵測電路
我當初丟的計畫書 裡面有設計一種
利用XOR來選擇電壓大小的記憶體 但實作後發現
Hspice模擬的功率消耗過大 完全不符合低功耗
以及降低電壓來達到減少耗能的效果
所以只好放棄這提案 另尋他法@@
過了一個禮拜後 又想到一種不需靠外加邏輯閘
單純利用反相位線(BLB)來控制電壓的供應
在寫入(write)數據為0時 給予極低的電壓值
反之寫1就用正常電壓 如此一來不僅在功耗上有明顯的降低
模擬波形也能做到全擺幅(確保在更低的工作電壓能正常運作)
使用.18製程模擬較低電壓(1.2V)之波形圖 ↓
比起傳統6T SRAM和其他paper提出的記憶體
本架構能減少50%~60%的能量損耗
而另一項指標 靜態雜訊邊緣(Static Noise Margin, SNM)
用於檢測SRAM內部抗雜訊能力的方式
當雜訊過大時 可能會使錯誤的數據寫入cell中
因此一個記憶體的SNM大小也是關鍵
我參考了一篇專門研究增強SNM能力的文獻
雖然不清楚還能不能做到更好 但是對於一個初學者而言
這概念已經很實用 所以將此做為參考
電壓控制SRAM的SNM蝴蝶圖 ↓
完成記憶體的部分後 再來就是邊緣偵測的電路ㄌ
本計畫採用影像處理的Sobel演算法
過程會先將圖片做灰階化(Matlab處理)
再轉譯成像素數據(pixel data) 之後就交給主電路模擬
由於遇到多位元的輸入輸出、運算、處理
我不知道怎用Hspice實現QQ 並且大型電路的Gate-Level層
也較難直接撰寫 因此選擇Verilog設計再好不過了!
尤其數位IC包括通訊晶片 邏輯閘多到靠北
Verilog自動模擬成Gate-Level等級方便許多(不過聽說常常有錯==)
剛開始動工的時候非常艱困 或許是太久沒碰類C語言了
coding的時候 語法看似沒錯 但是邏輯跟想像的不同
導致輸入data後的運算結果全錯...
只好翻出大二硬體描述語言的書來看(反正碩走通訊IC也是用Verilog)
計畫提出的架構是利用 數據在暫存器和主記憶體之間的傳輸
將圖片的像素資料逐一放入Register中運算
並把該模板的data直接輸出 再組合成完整的圖像
這樣的設計可以避免較高的記憶體使用率
以及減少SRAM運算上的功率消耗
經過Sobel演算法的模擬結果 ↓
(xp.jpg 64×64)
(Lena.jpg 64×64)
之後有用python跑過相同的圖 結果是相同的(本來就該一樣==)
現在只差Gate-Level硬體實現了
幸好教授看到目前的進度 勉強能接受
不然暑假剩餘的兩個禮拜 估計也是得肝下去...
-------------------------------------------------------------------------
老實說 我覺得這暑假還是挺懶散的@@
雖然有做一些計畫 不過依然沒做完ㄏ
老師希望這個"預計執行8個月"的科技部計畫
能夠在暑假兩個月內整個完成 然後一直用推甄要看成品的理由
不斷催促進度哀
至於開學會變輕鬆 還是更辛苦呢? 窩怕爆。