Cracking Digital VLSI Verification Interview 第一章

Digital Logic Design

Number Systems, Arithmetic and Codes

[1] 將下列十進制數轉換爲有符號二進制,八進制和十六進制,使用盡量少的比特位

a)17異步

b)-17函數

a: 對17展轉相除,獲得其二進制爲010001,八進制爲21,十六進制爲0x11。注意二進制必須是010001,而不是10001,不能缺乏符號位ui

b: 根據17的二進制,-17的二進制數原碼位110001,取反加一獲得補碼爲101111,所以八進制爲57,十六進制爲0x2f編碼

二進制轉八進制,取三合一,二進制轉十六進制,取四合一3d

[2] 0x3A的十進制數是多少?

ans=3*16^1+10*16^0=58code

[3] 什麼是格雷碼,格雷碼相對於普通二進制碼有什麼好處?

格雷碼是一種二值編碼,相鄰的編碼之間只有一位的區別。所以與普通二進制碼相比,在遞增時出錯機率更加小。下表是3bit的格雷碼編碼:blog

十進制 二進制 格雷碼
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

此外,因爲格雷碼中比特位變化比較少,與二進制碼相比,使用格雷碼的功耗更加低遞歸

[4] 什麼是奇偶校驗位,如何計算?

奇偶校驗位是在一串二進制碼的最後添加的一位,它使得整個二進制串的1的個數爲奇數或者偶數。所以奇偶校驗分爲兩種,奇校驗和偶校驗。ip

計算校驗位須要對二進制碼中的1進行計數。若是1的數量爲奇數,而且使用偶校驗,則校驗位爲1,使得總體1的個數爲偶數。若是1的數量爲偶數,而且使用偶校驗,則校驗位爲0,使得總體1的個數爲偶數。奇校驗相似。奇偶校驗位能夠經過對全部的比特位進行異或獲得。

[5] 計算二進制數111001的奇校驗位

111001中1的個數爲4個,因此校驗位爲1,帶上校驗位之後爲1110011,1的個數爲5,爲奇數

[6] 什麼是BCD碼,他和二進制碼有什麼區別?十進制27的二進制碼和BCD碼是什麼?

BCD碼也稱二進碼十進數,BCD碼可分爲有權碼和無權碼兩類。其中,常見的有權BCD碼有8421碼、2421碼、5421碼,無權BCD碼有餘3碼、餘3循環碼、格雷碼。8421BCD碼是最基本和最經常使用的BCD碼,它和四位天然二進制碼類似,各位的權值爲八、四、二、1,故稱爲有權BCD碼。

2的二進制位0010,7的二進制位0111,十進制27的8421BCD碼爲,00100111,二進制碼爲11011

Basic Gates

[7] 如下哪一個是通用門?爲何?

  • AND
  • NAND
  • OR
  • NOR
  • XOR

通用門是能夠實現任何布爾函數而無需使用任何其餘門類型的門。 與非門或非門是通用門。

[8] 如何使用兩個兩輸入與非門實現,兩輸入與門,兩輸入或門,非門?

與門:

或門:

非門:

[9] 如何使用兩個兩輸入或非門實現,兩輸入與門,兩輸入或門,非門?

與門:

或門:

非門:

[10] 用一個2:1MUX構成下面的門

  • 非門
  • 兩輸入與門
  • 兩輸入或門
  • 兩輸入或非門
  • 兩輸入與非門
  • 兩輸入異或門

非門:

與門:

或門:

或非門:用或門和非門組成

與非門:用與門和非門組成

異或門:

[11] 異或門在數據通訊中的典型應用是什麼?

一般被用於錯誤檢測,例如,奇偶校驗,CRC校驗,ECC。異或門也能夠用於僞隨機數生成。

[12] 三輸入與非門的輸出什麼時候爲0?

全部輸入都爲1

[13] 如何使用異或門實現一個非門

Combinational Logic Circuits

[14] 請用2:1選擇器實現4:1選擇器

[15] 什麼是環形振盪器?若是每一個門的延遲是2ps,使用三個非門的環形振盪器的頻率是什麼?

環形振盪器能夠由奇數個非門組成,非門或者反相器鏈接成鏈後,最後一個輸出反饋回第一個反相器。

三個反相器,信號須要通過兩次反饋,即2*3個反相器,振盪頻率爲1/(6*2ps) = 1000/12 GHz = 83.33 GHz

Sequential Circuits and State Machines

[16] 同步電路和異步電路有什麼不一樣?

時序電路分爲兩種,同步時序電路和異步時序電路

同步時序電路在適中的上升沿或者降低沿改變狀態和輸出值。常見的例子是flip-flop,在時鐘邊沿根據輸入改變輸出。

異步時序電路的狀態和輸出值是根據使能信號進行控制,這更加相似於一個帶有反饋的組合邏輯。

[17] 闡述創建時間和保持時間

創建時間是在時鐘進行有效轉換前數據信號應該保持穩定的最短期。

保持時間是在時鐘進行有效轉換後數據信號應該保持穩定的最短期。

[18] 解釋什麼是clock skew

時鐘信號到達兩個FF的時間差稱之爲clock skew(時鐘偏斜)

例如圖中兩個FF的時鐘,雖然是同一個時鐘源,可是因爲走線的延遲,致使a的時鐘比b的快。

[19] 下圖output delay爲10ns,setup time爲5ns,hold time爲2ns,組合邏輯delay爲10ns,請計算該電路的最大工做頻率

創建時間約束爲 $t_{clk-q}+t_{plogic}+t_{setup}<=T$ ,即 $T>=25ns$ ,最大工做頻率爲40Mhz

[20] 觸發器和鎖存器的區別什麼?

觸發器和鎖存器都是存儲信息的基本單元。一個觸發器或者鎖存器可以存儲一bit的信息。二者的主要不一樣點是,觸發器只在時鐘上升沿或者降低沿根據採樣改變輸出,而鎖存器在enable信號拉高期間都會跟隨輸入。

[21] 什麼是競爭?何時會出現?如何避免?

當輸出取決於不一樣信號的順序或者時序時,被稱爲競爭。競爭能夠分爲兩種

  1. 實際的硬件中的競爭
  2. 仿真行爲中的競爭

實際硬件中的競爭:以SR鎖存器爲例,當SR都是1的時候,輸出爲1,此時若是SR同時變成0,那麼Q和Q'就會進入競爭的狀況。能夠經過添加合適的邏輯避免。

仿真行爲中的競爭:例以下面的代碼

always @(posedge clk or posedge reset)
    if (reset) X1 = 0; // reset
    else X1 = X2;
always @(posedge clk or posedge reset)
    if (reset) X2 = 1; // reset
    else X2 = X1;

因爲使用了阻塞賦值,便會發生競爭的狀況,經過改成非阻塞賦值能夠解決

[22] 用2:1mux實現D觸發器

[23] 用D觸發器實現T觸發器

T觸發器,T爲0時輸出不變,1時翻轉。寫出真值表就能看出來,將輸入和Q異或再輸入到D端。

[24] 用JK觸發器實現D觸發器

J=D,K=D'

[25] 行波進位加法器和超前進位加法器的區別是?

行波進位加法器

結構相似於咱們拿筆在紙上作加法的方法。從最低位開始作加法,將進位結果送到下一級作和。因爲本級的求和須要等待前一級的進位結果才能夠獲得,因此對於兩個N-bit的求和。即便有N個一位的全加器,也須要N個延遲。
超前進位加法器

事實上,在如下兩種狀況中,Ci=1:

  1. Ai和Bi都爲1
  2. Ai和Bi有一個爲1,且Ci-1爲1

其對應的表達式爲

遞歸後

能夠看出每一級的進位信號能夠不經過上一級的結果產生,只與輸入有關係。所以減小了時間。

[26] 實現一個32bit寄存器須要幾個flip-flop?

一個FF存儲一bit信息,所以須要32個FF。

[27] mealy型FSM和moore型FSM有什麼區別?

mealy型FSM的輸出和當前的狀態以及當前的輸入有關係。

moore型FSM的輸出只和當前的狀態有關係。

[28] 九個狀態的記錄最少須要幾個FF?

2^3 < 9 < 2^4,所以是4個

[29] 使用盡量少的DFF實現二分頻和四分頻

二分頻:

四分頻:

相關文章
相關標籤/搜索