《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > FPGA教學——技術面試題(一)

FPGA教學——技術面試題(一)

2022-11-08
來源:FPGA設計論壇
關鍵詞: FPGA

  1.FPGA與CPLD的區(qū)別?

  微信截圖_20221108143028.png


  2.Latch和Register區(qū)別?行為描述中Latch如何產生?

  本質的區(qū)別在于:

  latch是電平觸發(fā),reg是邊沿觸發(fā)。時序設計中盡量使用reg觸發(fā)。行為描述中,如果對應所有可能輸入條件,有的輸入沒有對應明確的輸出,系統(tǒng)會綜合出latch。

  比如:

 微信截圖_20221108143105.png

  3.對競爭冒險的理解,以及如何消除?

  在組合邏輯中,由于門的輸入信號通路中經過了不同的延時,導致到達該門的時間不一致叫競爭。產生毛刺叫冒險。如果布爾式中有相反的信號則可能產生競爭和冒險現象。解決方法:

  一是添加布爾式的消去項,二是在芯片外部加電容。


  4. FPGA結構一般分為哪三個部分?

  1、可編程邏輯塊(LAB)

  2、可編程I/O模塊

  3、可編程內部連線


  5. WHEN_ELSE條件信號賦值語句和IF_ELSE順序語句的異同?

  WHEN_ELSE條件信號賦值語句中無標點,只有最后有分號;必須成對出現;是并行語句,須放在結構體中。

  IF_ELSE順序語句中有分號;是順序語句,必須放在進程中


  6. 用VHDL/Veilog?HDL語言開發(fā)可編程邏輯電路的完整流程?

  文本編輯→功能仿真→邏輯綜合→布局布線→時序仿真。

  *所謂綜合,就是根據設計功能和實現該設計的約束條件(如面積、速度、功耗和成本等)

  ,將設計輸入轉換成滿足要求的電路設計方案,該方案必須同時滿足與其的功能和約束條件。

  綜合的過程也是設計目標的優(yōu)化過程,其目的是將多個模塊化設計文件合并為一個網表文件,供布局布線使用,網表中包含了目標器件中的邏輯單元和互連的信息。

  *布局布線就是根據設計者指定的約束條件(如面積、延時、時鐘等)、目標器件的結構資源和工藝特性,以最優(yōu)的方式對邏輯元件布局,并準確地實現元件間的互連,完成實現方案(網表)到使實際目標器件(FPGA或CPLD)的變換。


  7. Quartus編譯器編譯FPGA工程最終生產兩種不同用途的文件?

  它們分別是.sof和.pof。

  sof是SRAM?Object?File,下載到FPGA中,斷電丟失。

  pof是Programmer?Object?File,下載到配置芯片中,上電重新配置FPGA。


  8.異步信號同步方式?

  單比特數據,打兩拍后檢測打拍后信號變化沿。若快時鐘域信號進入慢時鐘域,則先擴展位寬再打兩拍。

  多比特數據,使用異步FIFO橋接。在數據量不大,帶寬要求不高的場合可以采用握手同步方式(利用單比特握手信號打兩拍同步方式找到數據穩(wěn)定時刻,保證上游握手信號拉高時數據穩(wěn)定不變)。


  9. SRAM和DRAM的區(qū)別?

  SRAM是靜態(tài)隨機訪問存儲器,由晶體管存儲數據,無需刷新,讀寫速度快。DRAM是動態(tài)隨機訪問存儲器,由電容存儲數據,由于電容漏電需要動態(tài)刷新,電容充放電導致讀寫速度較SRAM低。但DRAM成本較低,適合做大容量片外緩存。


  10.邏輯設計中競爭與冒險概念,如何識別和消除?

  競爭:在組合邏輯電路中,信號經過多條路徑到達輸出端,每條路徑經過的邏輯門不同存在時差,在信號變化的瞬間存在先后順序。這種現象叫競爭。

  冒險:由于競爭而引起電路輸出信號中出現了非預期信號,產生瞬間錯誤的現象稱為冒險。表現為輸出端出現了原設計中沒有的窄脈沖,即毛刺。

  常見的邏輯代數法判斷是否有競爭冒險存在:只要輸出邏輯表達式中含有某個信號的原變量A和反變量/A之間的“與”或者“或”關系,且A和/A經過不同的傳播路徑,則存在競爭。解決辦法一是修改邏輯表達式避免以上情況,二是采樣時序邏輯,僅在時鐘邊沿采樣,三是在芯片外部并聯電容消除窄脈沖。


  11. 格雷碼特點及其應用?

  連續(xù)的格雷碼之間只有單比特信號變化,多用在異步時鐘域處理上,如異步FIFO中地址指針的索引就采用格雷碼編碼。

  分析:只有單比特信號跨時鐘域時,我們能通過雙觸發(fā)器構成的同步器在另一個時鐘域內得到有效脈沖,但多比特信號若采用同樣的方法,會出現各個比特更新時刻不一致導致數據錯誤的情況。而在異步FIFO設計中,兩側信號屬于不同時鐘域,FIFO必須通過對比來自不同時鐘域的讀寫地址指針數值給出空滿指示信號,地址指針需要多個比特信號才能代表FIFO深度。格雷碼的單比特變化特性正好適用于這一場合,使用單比特信號同步策略完全適用于格雷碼。


  12. 亞穩(wěn)態(tài)的產生原因及消除方式?

  在異步系統(tǒng)中,寄存器建立保持時間不滿足引起亞穩(wěn)態(tài)。典型的場合為數據跨時鐘域傳輸和異步復位電路。在異步傳輸過程中,通過單比特信號雙寄存器同步,多比特信號FIFO橋接的方式消除亞穩(wěn)態(tài)(實際上異步信號同步方式即為異步傳輸過程中亞穩(wěn)態(tài)的消除方式)。通過異步復位,同步釋放可消除異步復位引起的亞穩(wěn)態(tài)。


  13. 時鐘抖動和時鐘偏移的概念及產生原因,如何避免?

  時鐘抖動jitter:指時鐘信號的跳變沿不確定,故是時鐘頻率上的不一致。

  時鐘偏移Skew:指全局時鐘產生的各個子時鐘信號到達不同觸發(fā)器的時間點不同,是時鐘相位的不一致。

  jitter主要受外界干擾引起,通過各種抗干擾手段可以避免。而skew由數字電路內部各路徑布局布線長度和負載不同導致,利用全局時鐘網絡可盡量將其消除。


  14.什么是同步邏輯和異步邏輯?

  同步邏輯是時鐘之間有固定的因果關系。異步邏輯是各時鐘之間沒有固定的因果關系。

  同步時序邏輯電路的特點:各觸發(fā)器的時鐘端全部連接在一起,并接在系統(tǒng)時鐘端,只有當時鐘脈沖到來時,電路的狀態(tài)才能改變。改變后的狀態(tài)將一直保持到下一個時鐘脈沖的到來,此時無論外部輸入 x 有無變化,狀態(tài)表中的每個狀態(tài)都是穩(wěn)定的。

  異步時序邏輯電路的特點:電路中除可以使用帶時鐘的觸發(fā)器外,還可以使用不帶時鐘的觸發(fā)器和延遲元件作為存儲元件,電路中沒有統(tǒng)一的時鐘,電路狀態(tài)的改變由外部輸入的變化直接引起。


  15. 同步電路和異步電路的區(qū)別?

  同步電路:存儲電路中所有觸發(fā)器的時鐘輸入端都接同一個時鐘脈沖源,因而所有觸發(fā)器的狀態(tài)的變化都與所加的時鐘脈沖信號同步。

  異步電路:電路沒有統(tǒng)一的時鐘,有些觸發(fā)器的時鐘輸入端與時鐘脈沖源相連,只有這些觸發(fā)器的狀態(tài)變化與時鐘脈沖同步,而其他的觸發(fā)器的狀態(tài)變化不與時鐘脈沖同步。


  16. 時序設計的實質?

  時序設計的實質就是滿足每一個觸發(fā)器的建立/保持時間的要求。


  17. 建立時間與保持時間的概念?

  建立時間:觸發(fā)器在時鐘上升沿到來之前,其數據輸入端的數據必須保持不變的最小時間。

  保持時間:觸發(fā)器在時鐘上升沿到來之后,其數據輸入端的數據必須保持不變的最小時間。


  18. 為什么觸發(fā)器要滿足建立時間和保持時間?

  因為觸發(fā)器內部數據的形成是需要一定的時間的,如果不滿足建立和保持時間,觸發(fā)器將進入亞穩(wěn)態(tài),進入亞穩(wěn)態(tài)后觸發(fā)器的輸出將不穩(wěn)定,在0和1之間變化,這時需要經過一個恢復時間,其輸出才能穩(wěn)定,但穩(wěn)定后的值并不一定是你的輸入值。這就是為什么要用兩級觸發(fā)器來同步異步輸入信號。這樣做可以防止由于異步輸入信號對于本級時鐘可能不滿足建立保持時間而使本級觸發(fā)器產生的亞穩(wěn)態(tài)傳播到后面邏輯中,導致亞穩(wěn)態(tài)的傳播。


  19. 什么是亞穩(wěn)態(tài)為什么兩級觸發(fā)器可以防止亞穩(wěn)態(tài)傳播?

  這也是一個異步電路同步化的問題。亞穩(wěn)態(tài)是指觸發(fā)器無法在某個規(guī)定的時間段內到達一個可以確認的狀態(tài)。使用兩級觸發(fā)器來使異步電路同步化的電路其實叫做“一位同步器”,他只能用來對一位異步信號進行同步。兩級觸發(fā)器可防止亞穩(wěn)態(tài)傳播的原理:假設第一級觸發(fā)器的輸入不滿足其建立保持時間,它在第一個脈沖沿到來后輸出的數據就為亞穩(wěn)態(tài),那么在下一個脈沖沿到來之前,其輸出的亞穩(wěn)態(tài)數據在一段恢復時間后必須穩(wěn)定下來,而且穩(wěn)定的數據必須滿足第二級觸發(fā)器的建立時間,如果都滿足了,在下一個脈沖沿到來時,第二級觸發(fā)器將不會出現亞穩(wěn)態(tài),因為其輸入端的數據滿足其建立保持時間。同步器有效的條件:第一級觸發(fā)器進入亞穩(wěn)態(tài)后的恢復時間 + 第二級觸發(fā)器的建立時間 < = 時鐘周期。

  更確切地說,輸入脈沖寬度必須大于同步時鐘周期與第一級觸發(fā)器所需的保持時間之和。最保險的脈沖寬度是兩倍同步時鐘周期。所以,這樣的同步電路對于從較慢的時鐘域來的異步信號進入較快的時鐘域比較有效,對于進入一個較慢的時鐘域,則沒有作用 。


  20. 時序約束的概念和基本策略?

  時序約束主要包括周期約束,偏移約束,靜態(tài)時序路徑約束三種。通過附加時序約束可以綜合布線工具調整映射和布局布線,使設計達到時序要求。

  附加時序約束的一般策略是先附加全局約束,然后對快速和慢速例外路徑附加專門約束。附加全局約束時,首先定義設計的所有時鐘,對各時鐘域內的同步元件進行分組,對分組附加周期約束,然后對FPGA/CPLD輸入輸出PAD附加偏移約束、對全組合邏輯的PAD TO PAD路徑附加約束。附加專門約束時,首先約束分組之間的路徑,然后約束快、慢速例外路徑和多周期路徑,以及其他特殊路徑。


  21. 附加約束的作用?

  1:提高設計的工作頻率(減少了邏輯和布線延時);

  2:獲得正確的時序分析報告;(靜態(tài)時序分析工具以約束作為判斷時序是否滿足設計要求的標準,因此要求設計者正確輸入約束,以便靜態(tài)時序分析工具可以正確的輸出時序報告)

  3:指定FPGA/CPLD的電氣標準和引腳位置。


  22. 對于多位的異步信號如何進行同步?

  對以一位的異步信號可以使用“一位同步器進行同步”(使用兩級觸發(fā)器),而對于多位的異步信號,可以采用如下方法:

  1:可以采用保持寄存器加握手信號的方法(多數據,控制,地址);

  2:特殊的具體應用電路結構,根據應用的不同而不同;

  3:異步FIFO。(最常用的緩存單元是DPRAM)


  23. 鎖存器(latch)和觸發(fā)器(flip-flop)區(qū)別?

  電平敏感的存儲器件稱為鎖存器??煞譃楦唠娖芥i存器和低電平鎖存器,用于不同時鐘之間的信號同步。

  有交叉耦合的門構成的雙穩(wěn)態(tài)的存儲原件稱為觸發(fā)器。分為上升沿觸發(fā)和下降沿觸發(fā)??梢哉J為是兩個不同電平敏感的鎖存器串連而成。前一個鎖存器決定了觸發(fā)器的建立時間,后一個鎖存器則決定了保持時間。


  24. FPGA芯片內有哪兩種存儲器資源?

  FPGA芯片內有兩種存儲器資源:一種叫BLOCK RAM,另一種是由LUT配置成的內部存儲器(也就是分布式RAM)。BLOCK RAM由一定數量固定大小的存儲塊構成的,使用BLOCK RAM資源不占用額外的邏輯資源,并且速度快。但是使用的時候消耗的BLOCK RAM資源是其塊大小的整數倍。


  25. 什么是時鐘抖動?

  時鐘抖動是指芯片的某一個給定點上時鐘周期發(fā)生暫時性變化,也就是說時鐘周期在不同的周期上可能加長或縮短。它是一個平均值為0的平均變量。


  26. FPGA設計中對時鐘的使用?

  FPGA芯片有固定的時鐘路由,這些路由能有減少時鐘抖動和偏差。需要對時鐘進行相位移動或變頻的時候,一般不允許對時鐘進行邏輯操作,這樣不僅會增加時鐘的偏差和抖動,還會使時鐘帶上毛刺。一般的處理方法是采用FPGA芯片自帶的時鐘管理器如PLL,DLL或DCM,或者把邏輯轉換到觸發(fā)器的D輸入(這些也是對時鐘邏輯操作的替代方案)。


  27. FPGA設計中如何實現同步時序電路的延時?

  首先說說異步電路的延時實現:異步電路一半是通過加buffer、兩級與非門等來實現延時(我還沒用過所以也不是很清楚),但這是不適合同步電路實現延時的。在同步電路中,對于比較大的和特殊要求的延時,一半通過高速時鐘產生計數器,通過計數器來控制延時;對于比較小的延時,可以通過觸發(fā)器打一拍,不過這樣只能延遲一個時鐘周期。


  28. FPGA中可以綜合實現為RAM/ROM/CAM的三種資源及其注意事項?

  三種資源:BLOCK RAM,觸發(fā)器(FF),查找表(LUT);

  注意事項:

  1:在生成RAM等存儲單元時,應該首選BLOCK RAM 資源;其原因有二:第一:使用BLOCK RAM等資源,可以節(jié)約更多的FF和4-LUT等底層可編程單元。使用BLOCK RAM可以說是“不用白不用”,是最大程度發(fā)揮器件效能,節(jié)約成本的一種體現;第二:BLOCK RAM是一種可以配置的硬件結構,其可靠性和速度與用LUT和REGISTER構建的存儲器更有優(yōu)勢。

  2:弄清FPGA的硬件結構,合理使用BLOCK RAM資源;

  3:分析BLOCK RAM容量,高效使用BLOCK RAM資源;

  4:分布式RAM資源(DISTRIBUTE RAM)


  29.查找表的原理與結構?

  查找表(look-up-table)簡稱為LUT,LUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有 4位地址線的16x1的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發(fā)軟件會自動計算邏輯電路的所有可能的結果,并把結果事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應的內容,然后輸出即可


  30. MOORE 與 MEELEY狀態(tài)機的特征?

  Moore 狀態(tài)機的輸出僅與當前狀態(tài)值有關, 且只在時鐘邊沿到來時才會有狀態(tài)變化。

  Mealy 狀態(tài)機的輸出不僅與當前狀態(tài)值有關, 而且與當前輸入值有關。


  31.多時域設計中,如何處理信號跨時域?

  不同的時鐘域之間信號通信時需要進行同步處理,這樣可以防止新時鐘域中第一級觸發(fā)器的亞穩(wěn)態(tài)信號對下級邏輯造成影響。

  信號跨時鐘域同步:當單個信號跨時鐘域時,可以采用兩級觸發(fā)器來同步;數據或地址總線跨時鐘域時可以采用異步FIFO來實現時鐘同步;第三種方法就是采用握手信號。


  32. 說說靜態(tài)、動態(tài)時序模擬的優(yōu)缺點?

  靜態(tài)時序分析是采用窮盡分析方法來提取出整個電路存在的所有時序路徑,計算信號在這些路徑上的傳播延時,檢查信號的建立和保持時間是否滿足時序要求,通過對最大路徑延時和最小路徑延時的分析,找出違背時序約束的錯誤。它不需要輸入向量就能窮盡所有的路徑,且運行速度很快、占用內存較少,不僅可以對芯片設計進行全面的時序功能檢查,而且還可利用時序分析的結果來優(yōu)化設計,因此靜態(tài)時序分析已經越來越多地被用到數字集成電路設計的驗證中。

  動態(tài)時序模擬就是通常的仿真,因為不可能產生完備的測試向量,覆蓋門級網表中的每一條路徑。因此在動態(tài)時序分析中,無法暴露一些路徑上可能存在的時序問題;


  33. 如何防止亞穩(wěn)態(tài)?

  亞穩(wěn)態(tài)是指觸發(fā)器無法在某個規(guī)定時間段內達到一個可確認的狀態(tài)。當一個觸發(fā)器進入亞穩(wěn)態(tài)時,既無法預測該單元的輸出電平,也無法預測何時輸出才能穩(wěn)定在某個正確的電平上。在這個穩(wěn)定期間,觸發(fā)器輸出一些中間級電平,或者可能處于振蕩狀態(tài),并且這種無用的輸出電平可以沿信號通道上的各個觸發(fā)器級聯式傳播下去。

  解決方法:

  1 降低系統(tǒng)時鐘頻率

  2 用反應更快的FF

  3 引入同步機制,防止亞穩(wěn)態(tài)傳播(可以采用前面說的加兩級觸發(fā)器)。

  4 改善時鐘質量,用邊沿變化快速的時鐘信號


  34. 用D觸發(fā)器實現2倍分頻的邏輯電路?

  微信截圖_20221108143851.png

  更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg


本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。