FPGA、數字IC系列(1)——樂鑫科技2021數字IC提前批筆試

整理樂鑫科技2021屆招聘的數字IC提前批筆試題,並做了部分答案和解析,有問題的地方歡迎一起探討。

一.單選題

1.關於跨時鐘域電路的設計,以下說法正確的是:
A: 信號經兩級D觸發器同步後即可進行跨時鐘域傳遞
B: 跨時鐘域電路存在亞穩態風險,最好避免使用
C: 跨時鐘域電路中一定存在亞穩態
D: 採用單一時鐘的電路也可能產生亞穩態

答案:B 或 D(答案暫不確定)
解析:
4 種方法跨時鐘域處理方法
(1)打兩拍,兩級觸發器同步——單bit數據跨時鐘域處理,適用於慢時鐘域數據到快時鐘域;
(2)異步雙口RAM(異步FIFO可以實現同樣效果)——多bit數據跨時鐘域處理;
(3)格雷碼轉換;
(4)加握手信號。

A:不一定,跨時鐘域時一般可以使用兩級D觸發器對信號“打兩拍”,有時需要打多拍,但是並不能按照A的說法去說。(注:兩級並不能完全消除亞穩態危害,但是提高了可靠性,減少其發生概率。總的來講,就是一級寄存器發生亞穩態的概率很大,三級及以上改善不大。)
B:亞穩態出現場景:異步信號檢測、跨時鐘域信號傳輸以及復位電路,最好避免使用,但多數情況下無法避免;
C:概率問題,可能出現,並非一定。
D:只要系統中有異步元件,亞穩態就是無法避免的,亞穩態主要發生在異步信號檢測、跨時鐘域信號傳輸以及復位電路等常用設計中。亞穩態產生原因是建立時間setup或保持時間hold不滿足,單路時鐘也有可能不滿足,此處有爭議。

2.若要將異或非門當作反相器(非門)使用,則輸入端A B端的連接方式是()
A:A或B中有一個接“0”
B:A和B並聯使用
C:A或B中有一個接"1”
D:不能實現

答案:A
解析:1與0異或非爲0,0與0異或非爲1,有一個接0後相當於非門;
1與1異或非爲1,0與1異或非爲0,有一個接1後相當於寄存器;

3.以下代碼綜合出來的D觸發器的D端邏輯表達式爲:

always @( posedge clk or negedge rst_n)
if(~rst n)
	q<= 1'b0;
else if(set)
	q<= 1'b1;
else if(wr)
	q<= wdata;

A: ~set & (we & wdata) | q
B: set | (wr | wdata) & q
C: set | wr & wdata | ~wr & q
D: set & (~wr & q) | wr & wdata & (~set)

答案:C
解析:set爲1時,q輸出1;wr與wdata同時爲1時,q輸出1;wr不爲1時,輸出上一狀態的q。

4.ModuleA/ModuleB用的是同個Clock, Clock領率80MHz。ModuleA和ModuleB同時啓動,ModuleA產生如下週期性的burst數據給ModuleB,一共產生8次burst. burst rate : 1280 Mbit/s,burst持續時間1us。burst內部速率均勻,burst週期5us,餘下的4us內沒有數據
在這裏插入圖片描述
ModuleB收到啓動信號後,需要花10us做初始化,所以先把module A的數據緩存在ModuleB內部的同步FIFO中,同步FIFO位寬32bits,初始化結束後,ModuleB以640 Mbit/s的均勻速度從FIFO中讀取數據。在滿足功能需求的前提下,爲了節省電路面積,要求FIFO size越小越好,以下四個選項的FIFO深度,選項()的FIFO深度符合要求:
A: 128
B: 64
C: 96
D: 160

答案:A
解析:
考慮最大數據情況,在ModuleB啓動的10us內,ModuleA一直在傳輸數據,一共2us有效數據,需要存儲 1280Mbit/s * 2us = 2560 bit;在第11us,ModuleA傳輸數據 1280Mbit/s * 1us = 1280 bit,ModuleB讀取 640 Mbit/s * 1us = 640 bit,需要存儲 1280 - 640 = 640 bit,此時共需存儲 2560 + 640 = 3200 bit。
考慮讀取,前15us共寫入 3 * 1280=3840,讀取 5*640=3200,需要存儲640。
綜合考慮,最大需要存3200bit,深度需要 3200 / 32 = 100,選A的128較爲合適。

5.欲產生序列信號11010111,則至少需要()級觸發器
A: 3
B: 4
C: 2
D: 5

答案:A
解析:8位序列,23=8。

二:多選題

1.以下方法哪些是進行面積優化( )。
A: 串行化
B: 資源共享
C: 流水線設計
D: 寄存器配平
E: 邏輯優化
F: 關鍵路徑優化

答案:ABE
解析:
面積優化,提高資源利用率以降低功耗要求:串行化,資源共享,邏輯優化;
速度優化,提高運行速度:流水線設計,寄存器配平,關鍵路徑優化。

2.下面哪些屬於動態驗證範疇( ).
A: 形式驗證
B: Modelsim仿真
C: 後仿
D: STA

答案:BC
解析:
A,形式驗證是一種靜態的驗證手段,它根據電路結構靜態地判斷兩個設計在功能上是否等價,常用來判斷一個設計在修改前和修改後其功能是否保持一致。它運行時無須測試向量,但是必須有一個參照設計和一個待驗證的設計;
B,Modelsim仿真中既可以功能仿真(靜態),也可以時序仿真(動態),時序仿真時利用網表文件”.vo”和延時文件”.sdo”;
C,後仿,時序仿真加入佈局佈線的連線延時,屬於動態時序分析;
D,Static Timing Analysis,靜態時序分析;

前仿是針對RTL的功能驗證,
後仿是針對是綜合後(加入約束,延時等信息)的網表文件,在前仿的基礎上加入了延時信息的功能仿真,同時驗證了設計的時序以及功能都正確。

3.在異步設計中的對跨時鐘處理的信號,功能驗證時般需要考慮以下哪些因素()
A: 信號變化的最小寬度
B: 信號高電平有效還是低電平有效
C: 時鐘頻率
D: 相位和抖動

答案:ABC
解析:相位和抖動是考慮時序仿真所用,其他都是正常的功能仿真時要考慮的,比如在Modelsim的功能仿真(前仿)時,TestBench需要考慮ABC內容。

4.可綜合的verilog語法包括( )
A: for
B: wait
C: assign
D: initial
E: time
F: always
G: generate

答案:ACFG
解析:無。

5.在高速的系統設計中,下列哪種優化方案的可以提高系統的工作頻率()
A:樹型結構
B:遲置信號後移
C:流水線
D:資源共享

答案:ABC
解析:D是資源優化,樹形結構、遲置信號後移、流水線均能提高系統工作頻率。

三.填空題

1.assign重寫一段代碼。
在這裏插入圖片描述
答案:assign out = (in&(a^b))|(~in&{in[6:0],1’b0});
解析: in[i]=1時,a[i]^b[i];
In[i]=0時,左移一位,最低位補零。

2.將2004個叫1"異或起來的結果爲(0)。
解析:偶數個1異或爲0.

3.用2048x12的ROM芯片,最多能實現()個輸入 ()個 輸出的組合邏輯的數。
答案:11,12
解析:2048=211,2048深度,是11位地址位,2048*12表示11位輸入地址、12位輸出數據(ROM只能輸出)。

4.一個4bits的輸入A,AE= 4’b0, A中從MSB開始出現的第個1的位置表示爲B。 e.g.: A= 4’b0111. B= 2’b10 (從MSB開始,第一個1出現在A的bit2)
B[1]= () B[0]= ().

答案:A[3]|(~A[3]&A[2]),A[3]|(!A[3:2]&A[1])
解析: A[3]=1時,B=2’11,B[1]=1,B[0]=1;
A[3]=0,A[2]=1時,B=2’10,B[1]=1,B[0]=0;
A[3]=0,A[2]=0,A[1]=1時,B=2’01,B[1]=0,B[0]=1;
A[3]=0,A[2]=0,A[1]=0,A[0]=1時,B=2’00,B[1]=0,B[0]=0;

B[1]=1:A[3]|(~A[3]&A[2])
B[0]=1:A[3]|(!A[3:2]&A[1])

~是按位取反,!是邏輯取反(非0即1)

5.某個SRAM共12根地址線A11 -A0,32根數據線D31-D0, 如果要實現20Dytes的Memory,需要()塊這樣的SRAM?
答案:64
解析:12根地址線,存儲深度爲2^12,32根數據線有4 Bytes,即一個SRAM存儲2^14 Bytes,共需 2^20 / 2^14 = 2^6 = 64 塊。

6.已知R1= R2 = R3 = R4 = R5 = R6 = R,下圖從電源兩端向右看去的等效電阻爲(2R)。
在這裏插入圖片描述
7. 一批IC樣品在測試中發現有setup或者hold時序問題 現取A B. C、D四顆樣品進行測試A降溫後停止工作,則很可能是()問題: B升溫後停止工作,則很可能是()問題; C降壓後停止工作,則很可能是()問題,D升壓後停止工作,則很可能是()問題。
答案:hold(不確定),setup(不確定),setup,hold
解析:
電壓的關係可以確定,setup可以用提高電壓來滿足,所以C降壓後停止工作可能是setup問題,D升壓後停止工作可能是hold問題。
溫度的關係沒找到相關資料,但是按出題人的思路想,應該是和電壓的影響相反,這裏A和B猜測是hold和setup。
這裏涉及的是PVT(Process,Voltage,Temperature),本人不是做這方面的,不深入去找了。

8.下圖表示幾進制計數器
在這裏插入圖片描述
答案:五
解析:最後的Q2部分,上面1J處的意思是先把兩輸入信號做“與”運算,再將運算結果作爲JK觸發器的輸入,在Quartus中繪製原理圖如圖所示,給出Modelsim仿真,可以按照仿真波形去驗證自己畫出的波形,對Q2,顯然每5個CP時鐘出現一次高電平脈衝,五進制計數器。
在這裏插入圖片描述
在這裏插入圖片描述

9.OOP的三大特徵是(封裝性、繼承性、多態性)。

10.NAND和NOR Flash的主要區別是1.(NAND)中常存在壞塊, 2.(NAND)容量可以做到很大,3.(NAND)寫入速度比較快, 4.(NOR Flash)讀出速度比較快

四.問答題

1.請根據下面的設計描述,儘可能多的列出你所能想到的測試點。
如下圖所示異步FIFO, rdata和wdata均爲8位數據,FIFO深度爲16.當rst_n輸入爲低時,FIFO被複位,當wclk的上升沿採樣到wr爲高時,數據被寫入
FIFO;當rclk的上升沿採樣到rd爲高時,FIFO輸出數據。此外,當FIFO爲空時,empty信號輸出爲高,當FIFO滿時, full信號輸出爲高。
在這裏插入圖片描述
測試點:
(1)復位信號,復位給出後各信號狀態;
(2)讀寫同時有效時的判斷,讀寫衝突先執行讀還是先執行寫;
(3)寫溢出時的數據處理和full滿標誌位;
(4)讀爲空時的數據輸出和empty空標誌位;
(5)歡迎補充。。。

2.請實現對4*4矩陣式健盤的按鍵識別,假設每次都是單按鍵輸入,需要有去抖功能(持續20 ms以上被認爲是有效鍵值) ,模塊時鐘頻率爲1 kHZ.
要求用狀態機實現,定義狀態,畫出狀態轉移圖,並用Verilog完整描述該識別模塊。
矩陣式健盤電路結構參見下圖,其中行線1-4由識別模塊控制輸出,列線5~8爲識別模塊的輸入。
在這裏插入圖片描述
解析:可以參考單片機的矩陣鍵盤檢測(掃描法)和防抖(加延時,兩次檢測),轉成狀態機形式。

3.Verilog實現串行CRC-8,G(D)=D8+D2+D+1。
在這裏插入圖片描述
解析:狀態機,可以按照C語言的CRC-8轉成狀態機寫法,用計數器代替for循環。

歡迎關注。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章