1. 程式人生 > >UNISOC-數位電路設計工程師-幾道筆試題整理

UNISOC-數位電路設計工程師-幾道筆試題整理

1、三極體作開關時工作在什麼區域()

A.飽和、放大 B.擊穿、截止 C.放大、擊穿 D.飽和、截止

解析:一共有放大區,飽和區 ,截止區三個區
工作在開關狀態時是截止和飽和(飽和區-開關接通,截止區-開關斷開)
作為放大器用時工作在放大區

2、匯流排中的序列匯流排有()

A.SPI B.UART C.SDIO D.IIS
解析:可自行百度

3、程序中的訊號賦值語句,其訊號更新是

A.按順序完成;   B.立即完成;  C.在程序的最後完成; D.都不對

4、兩個時鐘()頻,()時鐘。

A.同,一定是同步
B.同,可以是同步
C.不同,一定是非同步
D.不同,可以是非同步

解析:這道題答案我不確定,上述選擇題均有可能是多選。

5、數字晶片設計時降低晶片功耗的方法

解析:晶片功耗分為動態功耗和靜態功耗兩大部分。

動態功耗是電路在工作時(翻轉時)所消耗的能量。對於CMOS電路來說,它又分為開關功耗和短路功耗。開關功耗為電路翻轉時對負載電容充電的功耗,短路功耗為輸入翻轉時,PMOS和NMOS同時開啟的瞬間電流形成的功耗。用公式描述可寫為:

Pdyn = (CL * Vdd2 * Ptran * F) + (ttran * Vdd * Ipeak * F)

其中,CL為電路總負載電容;Vdd為工作電壓;Ptran為工作電路所佔比例;F為工作時鐘頻率;ttran為PMOS,NMOS同時導通時間;Ipeak為短路電流。

公式中第一部分為開關功耗,第二部分為短路功耗。一般來說,只要gate的slew足夠小,也就是ttran足夠快,短路功耗一般可以忽略。

從公式中可以看到降低動態功耗的思路,可以從Vdd、F、CL和降低gate翻轉次數等方面來設計降低功耗的方案。

靜態功耗是電路在沒有翻轉時,電晶體中漏電流造成的功耗。根據重要性可以分為以下四個部分:

1、亞域值漏電流Isub: 從Drain經過弱反形層流向Source的電流
2、柵電流Igate:由於隧道效應和熱載流子效應,由Gate經薄柵氧流向Sub的電流
3、由Gate引起的Drain電流IGIDL:由於Drain端的強電場引起的由Drain流向Sub的電流
4、結反偏電流Irev:反偏結耗盡區少子漂移和電子空穴對產生形成的由Drain、Source到Sub的電流。

在數字IC設計中,我們常見的降低功耗的方法有哪些呢?方法如下:

1、clock gating 門控時鐘技術

眾所周知,在數字IC設計中,時鐘訊號的翻轉率是比較高的,因此它的功耗約佔整個晶片功耗的20-30%。傳統的設計方法是時鐘訊號一直是存活著的(常開),門控時鐘技術就是根據設計,將暫時不用的模組的時鐘訊號通過一個控制訊號gating住,降低這個模組的時鐘訊號翻轉率,從而降低晶片功耗的一種技術。clock gating的加法也有很多,有在rtl級就例化進來的gating(往往是比較root的gating),也有綜合階段工具自動加進來的。從數字前端設計的角度,clock gating是想越靠近root端越好(因為一個gating可以控制更多的暫存器或者時鐘單元),一旦將某個gating關掉,能夠節省較多的功耗。因此,在數字後端實現過程中,經常會碰到到gating使能端E pin的setup比較難meet,主要原因是這類gating比較靠近root導致的。關於如何fix clock gating使能端的setup會在後續更新文章中做詳細的分析。
在這裡插入圖片描述

2、power gating

在數字IC後端設計中,經常採用這個策略降低功耗。在後端實現過程中,加入MTCMOS來控制標準單元的開關。
在這裡插入圖片描述

3、Multi vt cells

這個就是在數字IC後端設計實現過程中,將某些不是critical path的地方儘量用HVT或者RVT,降低leakage。當然這個需要與performance,area做一個tradeoff。因為用HVT或者RVT,由於timing不好meet,工具優化的比較困難,可能反而會導致面積越優化越大。

4、DVFS技術

DVFS(Dynamic Voltage and Frequency Scaling)動態電壓頻率調節本質上是一種低功耗技術,目的是根據的晶片當時的實際功耗需要設定工作電壓和時鐘頻率,這樣可以保證提供的功率既滿足要求又不會過剩,從而可以降低功耗。比如數字晶片中,CPU模組(比如8核cpu),在需要跑分的時候,將給cpu供電的電壓通過軟體調節到更高的電壓(overdrive),獲得一個更高的頻率。在實際某個應用場景下,可能cpu只需要一個較低的頻率時,可以將電壓調節成一個較低的電壓(underdrive)來實現。

一味的降頻降壓當然是不能降低功耗的,因為低頻下執行可能使系統處理任務的時長增加,從而整體上可能反而增加了功耗。所以DVFS的核心是動態調整的策略,其目的是根據當時的系統負載實時調整,從而提供滿足當時效能要求的最低功率,也就達到了最低功耗。制定調整策略前,先找出系統中的耗電大戶即CPU GPU這些模組。需要統計出這些模組的負載情況,基本的策略當然是工作負載增加則升頻升壓,工作負載降低則降頻降壓。

5、Well bias

這個方法可以動態調整偏置電壓,從而實現降低功耗的目的。

6、使用2輸入NOR和INV實現2輸入同或邏輯,儘量門使用少

筆試的時候這道題做的有點問題,真不應該。。。(手動狗頭)
在這裡插入圖片描述
這道題的同或邏輯是可以實現的,但所用的gate是不是最少我並不確定。

7、一個16bit寬的AFIFO,輸入寫時鐘為100MHZ,每100個週期寫入80個數據; 輸出讀時鐘為90MHZ,每20個週期讀18個數據; 設一個package為8Kbit,且兩個package之間傳送間距足夠大。

1)求AFIFO的最小深度 2)若100個週期寫入了100個數據,求AFIFO的最小深度

解析:前面一篇部落格中提到過相關做法
算出寫資料的最大burst_length。考慮最壞情況
1)條件給出,每100個寫時鐘,寫入80個數據,那麼在背靠背的情況下,burst_length = 2*80=160

最後,fifo_depth = burst_length - burst_length * X/Y * r_clk/w_clk=160*{1-(18/20)*(90/100)}=34.2
所以此時AFIFO的最小深度應該為35

2)同理fifo_depth = burst_length - burst_length * X/Y * r_clk/w_clk=200*{1-(18/20)*(90/100)}=38
所以此時AFIFO的最小深度應該是38