Cracking Digital VLSI Verification Interview 第一章


歡迎關注個人公眾號摸魚范式,后台回復pdf獲得全文的pdf文件

Digital Logic Design

Number Systems, Arithmetic and Codes

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

a)17

b)-17

a: 對17輾轉相除,得到其二進制為010001,八進制為21,十六進制為0x11。注意二進制必須是010001,而不是10001,不能缺少符號位

b: 根據17的二進制,-17的二進制數原碼位110001,取反加一得到補碼為101111,因此八進制為57,十六進制為0x2f

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

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

ans=3*161+10*160=58

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

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

十進制 二進制 格雷碼
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的個數為奇數或者偶數。因此奇偶校驗分為兩種,奇校驗和偶校驗。

計算校驗位需要對二進制碼中的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碼,它和四位自然二進制碼相似,各位的權值為8、4、2、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實現二分頻和四分頻

二分頻:

四分頻:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM