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

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

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

  0.1、設計異步FIFO時,要注意

  (1)在地址信號跨時鐘域時需要對其進行二進制碼轉格雷碼的轉換并進行目標時鐘域的時鐘打兩拍同步,以防止亞穩態的產生。

  (2)寫滿信號由讀地址同步到寫時鐘域并與寫地址進行比較產生,讀空信號由寫地址同步到讀時鐘域并與讀地址進行比較產生。這樣可以在第一時間得到讀空與寫滿的信息,并對異步fifo進行操作。

  (3)異步fifo的深度需要考慮到寫狀態的背靠背寫入狀態以得到最適合的深度。

  (4)讀寫地址需要擴展一位來判斷是讀空還是寫滿,當擴展后的讀寫地址的格雷碼相等時為讀空,若其前兩位不同,后面相等時為寫滿。

  0.2、系統工作頻率計算

  同步電路的速度是指同步系統時鐘的速度,同步時鐘愈快,電路處理數據的時間間隔越短,電路在單位時間內處理的數據量就愈大。

  最高運行速度:

  Tco ——觸發器的輸入數據被時鐘打入到觸發器到數據到達觸發器輸出端的延時時間;

  Tdelay——組合邏輯的延時;

  Tsetup ——D觸發器的建立時間

  假設數據已被時鐘打入D觸發器,那么數據到達第一個觸發器的Q輸出端需要的延時時間是Tco,經過組合邏輯的延時時間為Tdelay,然后到達第二個觸發器的D端,要希望時鐘能在第二個觸發器再次被穩定地打入觸發器,則

  時鐘的延遲必須大于 Tco+Tdelay+Tsetup,也就是說:

  最小的時鐘周期 Tmin =Tco+Tdelay+ Tsetup,

  即最快的時鐘頻率 Fmax=1/Tmin。

  因為Tco和Tsetup是由具體的器件工藝決定的,故設計電路時只能改變組合邏輯的延遲時間Tdelay,所以說縮短觸發器間組合邏輯的延時時間是提高同步電路速度的關鍵所在。由于一般同步電路都大于一級鎖存,而要使電路穩定工作,時鐘周期必須滿足最大延時要求。故只有縮短最長延時路徑,才能提高電路的工作頻率。

  可以將較大的組合邏輯分解為較小的N塊,通過適當的方法平均分配組合邏輯,然后在中間插入觸發器,并和原觸發器使用相同的時鐘,就可以避免在兩個觸發器之間出現過大的延時,消除速度瓶頸,這樣可以提高電路的工作頻率。這就是所謂 "流水線"技術的基本設計思想,即原設計速度受限部分用一個時鐘周期實現,采用流水線技術插入觸發器后,可用N個時鐘周期實現,因此系統的工作速度可以加快,吞吐量加大。注意,流水線設計會在原數據通路上加入延時,另外硬件面積也會稍有增加。

  1、 串行接口與并行接口區別

  串行接口是數據線一根線,通過串行協議傳輸數據,比如uart

  并行接口是一個數據在多根數據線并行傳輸,比如rgb888、rgb565等等

  2、i2c和spi總線如何實現多機通信的,簡述

  I2c通過呼叫應答方式,i2c每幀數據都會先發設備地址指明數據發給誰的,讀誰的;

  Spi通過片選信號,spi通信前先拉低對應從機的片選,然后和收發數據

  3、如何解決亞穩態?Metastability

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

  解決方法:

  1 、降低系統時鐘頻率

  2 、用反應更快的Flip-Flop(觸發器)

  3 、引入同步機制,防止亞穩態傳播

  異步FIFO、對于異步時鐘通過異步復位同步釋放(就是對異步復位時鐘進行兩次或者兩次以上緩存。)

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

  關鍵是器件使用比較好的工藝和時鐘周期的裕量要大。

  4、說說靜態、動態時序模擬的優缺點

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

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

  靜態時序分析缺點:

  1、無法識別偽路徑

  2、不適合異步電路

  3、不能驗證功能

  5、用VERILOG寫一段代碼,實現消除一個glitch。

  毛刺為高則用與門,低就或門

  (1)濾掉小于1個周期glitch的原理圖如下:

微信截圖_20221108144251.png

  module digital_filter_(clk_in,rst,host_rst,host_rst_filter);

  input clk_in;

  input rst;

  input host_rst;

  output host_rst_filter;

  reg host_rst_d1;

  reg host_rst_d2;

  always@(posedge clk_in or negedge rst)

  begin

  if(!rst)

  begin

  host_rst_d1 <= 1'b1;

  host_rst_d2 <= 1'b1;

  end

  else

  begin

  host_rst_d1 <= host_rst;

  host_rst_d2 <= host_rst_d1;

  end

  end

  assign host_rst_filter = host_rst_d1 | host_rst_d2;

  endmodule

  (2)濾掉大于1個周期且小于2個周期glitch的原理圖如下:

微信截圖_20221108144315.png

  module digital_filter_(clk_in,rst,host_rst,host_rst_filter);

  input clk_in;

  input rst;

  input host_rst;

  output host_rst_filter;

  reg host_rst_d1;

  reg host_rst_d2;

  reg host_rst_d3;

  always@(posedge clk_in or negedge rst)

  begin

  if(!rst)

  begin

  host_rst_d1 <= 1'b1;

  host_rst_d2 <= 1'b1;

  host_rst_d3 <= 1'b1;

  end

  else

  begin

  host_rst_d1 <= host_rst;

  host_rst_d2 <= host_rst_d1;

  host_rst_d3 <= host_rst_d2;

  end

  end

  assign host_rst_filter = host_rst_d1 | host_rst_d2 | host_rst_d3;

  endmodule

  6、簡述一下什么是單工、半雙工、全雙工通信,舉個例

  單工,只能發或者收數據

  半雙工,可以發也可以收,但是收發不能同時進行

  全雙工,可以發也可以收,收發可以同時進行

  7、簡述觸發器和鎖存器之間的差別

  鎖存器對電平信號敏感,在輸入脈沖的電平作用下改變狀態。

  D觸發器對時鐘邊沿敏感,檢測到上升沿或下降沿觸發瞬間改變狀態。

  8、計算最小周期

  Tco:寄存器時鐘輸入到數據輸出的時間

  Tdata:寄存器間的走線延遲

  Tsu :建立時間

  Tskew:時鐘偏斜

  最小時鐘周期:

  Tmin = Tco + Tdata + Tsu - Tskew。最快頻率Fmax = 1/Tmin

  Tskew = Tclkd – Tclks。

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

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

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

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

  10、自己的外設和avalon的外設區別

  Hps自己的外設是固核,不用也不可以拿來做其他的邏輯

  Avalon外設是軟核,不用的話邏輯資源可以拿來做其他的

  11、什么是線與邏輯?在硬件電路上有什么要求?

  線與邏輯是指兩根線直接相連能夠實現與的功能。在硬件上需要OC門,如果不采用OC門會會導致門電路管電流過大而燒壞邏輯門。用OC門實現線與,應在輸出端口加一個上拉電阻。

  知識點標記:OC門實際上只是一個NPN型三極管,并不輸出某一特定電壓值或電流值。OC門根據三極管基極所接的集成電路來決定(三極管發射極接地),通過三極管集電極,使其開路而輸出。而輸出設備若為場效應晶體管(MOSFET),則稱之為漏極開路(英語:Open Drain,俗稱“OD門”),工作原理相仿。通過OC門這一裝置,能夠讓邏輯門輸出端的直接并聯使用。兩個OC門的并聯,可以實現邏輯與的關系,稱為“線與”,但在輸出端口應加一個上拉電阻與電源相連。

  12、軟核、硬核、固核是什么,各有什么特點

  軟核:綜合之前的寄存器傳輸級(RTL) 模型,靈活性高、可移植性強,但預測性低有不確定風險

  硬核:經過驗證的設計版圖,設計人員不能對其修改與軟核實現方式相比,硬核可以把功耗降低5~10 倍, 節約將近90% 的邏輯資源

  固核:帶有平面規劃信息的網表,通常以RTL 代碼和對應具體工藝網表的混合形式提供。

  固核的設計靈活性稍差,但在可靠性上有較大提高

  13、異步FIFO深度計算

  如果數據流連續不斷則FIFO深度無論多少,只要讀寫時鐘不同源同頻則都會丟數;

  FIFO用于緩沖塊數據流,一般用在寫快讀慢時,

  FIFO深度 / (寫入速率 - 讀出速率) = FIFO被填滿時間 應大于 數據包傳送時間= 數據量 / 寫入速率

  例:A/D采樣率50MHz,dsp讀A/D讀的速率40MHz,要不丟失地將10萬個采樣數據送入DSP,在A/D在和DSP之間至少加多大容量(深度)的FIFO才行?

  100,000 / 50MHz = 1/ 500 s = 2ms

  (50MHz - 40MHz) * 1/500 = 20k既是FIFO深度。

  14、給一段c語言程序代碼,在fpga上面做加速,能從那些方面做提升,簡述過程

  1. 時間上的優化加速

  2. C語言里面存在循環可以展開減少執行時間

  3. 里面的變量使用ac數據類型,減少數據位寬優化面積和執行時間

  4. 復雜的計算換成簡單的計算,比如除以2換成右移1位

  5. 函數參數接口使用avalon接口減少位寬,優化面積

  6. 接口使用穩定參數優化寄存器級數減少時間

  15、系統最高速度計算(最快時鐘頻率)和流水線設計思想:

  同步電路的速度是指同步系統時鐘的速度,同步時鐘愈快,電路處理數據的時間間隔越短,電路在單位時間內處理的數據量就愈大。

  假設Tco是觸發器的輸入數據被時鐘打入到觸發器到數據到達觸發器輸出端的延時時間(Tco=Tsetpup+Thold);Tdelay是組合邏輯的延時;Tsetup是D觸發器的建立時間。

  假設數據已被時鐘打入D觸發器,那么數據到達第一個觸發器的Q輸出端需要的延時時間是Tco,經過組合邏輯的延時時間為Tdelay,然后到達第二個觸發器的D端,要希望時鐘能在第二個觸發器再次被穩定地打入觸發器,則時鐘的延遲必須大于Tco+Tdelay+Tsetup,也就是說最小的時鐘周期Tmin =Tco+Tdelay+Tsetup,即最快的時鐘頻率Fmax =1/Tmin。

  FPGA開發軟件也是通過這種方法來計算系統最高運行速度Fmax。因為Tco和Tsetup是由具體的器件工藝決定的,故設計電路時只能改變組合邏輯的延遲時間Tdelay,所以說縮短觸發器間組合邏輯的延時時間是提高同步電路速度的關鍵所在。

  由于一般同步電路都大于一級鎖存,而要使電路穩定工作,時鐘周期必須滿足最大延時要求。故只有縮短最長延時路徑,才能提高電路的工作頻率。可以將較大的組合邏輯分解為較小的N塊,通過適當的方法平均分配組合邏輯,然后在中間插入觸發器,并和原觸發器使用相同的時鐘,就可以避免在兩個觸發器之間出現過大的延時,消除速度瓶頸,這樣可以提高電路的工作頻率。這就是所謂"流水線"技術的基本設計思想,即原設計速度受限部分用一個時鐘周期實現,采用流水線技術插入觸發器后,可用N個時鐘周期實現,因此系統的工作速度可以加快,吞吐量加大。注意,流水線設計會在原數據通路上加入延時,另外硬件面積也會稍有增加。

  16、硬件工具使用

  1、萬用表、示波器、邏輯分析儀可以測量那些東西,用來測些什么?

  萬用表主要用來測試電壓、電流、通斷、電阻、電容等,缺點只能看有效值,不能看實時值示波器主要測量模擬信號實時值,如頻率、周期、幅值等,缺點是通道較少沒有協議解析

  邏輯分析儀主要抓取多路通道的波形,解析編碼協議,缺點是只能看數字信號,不能看模擬信號

  2、萬用表測量電壓是什么電壓,fpga 輸出 50%的占空比的 pwm 波測出來是多少?

  有效值,1.65v

  3、示波器測量的電壓是什么電壓,fpga 通過 dac 輸出正弦,測量出來是什么?

  實時值,測量出來是一個幅值為 dac 基準電壓的正弦信號

  4、邏輯分析儀是以什么電壓區分電平的,輸入幅值 3v 的一個正弦信號,邏輯分析儀讀取什么?

  低端邏輯分析儀是以 ttl 電平,默認 0.7v 以下低電平,1.5v 以上高電平,中間保持

  高端的邏輯分析儀有電平設置功能,自己設置高低電平的電壓閾值

  輸入正弦信號軟件中為方波

  5、現有一個產品出現故障,沒有任何輸出現象,我們應該先測什么,用什么測

  答:輸入電源電壓,所有芯片電壓電壓,萬用表或者示波器

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

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

  注意事項:

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

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

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

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

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

  19、HDL語言的層次概念?

  HDL語言是分層次的、類型的,最常用的層次概念有系統與標準級、功能模塊級,行為級,寄存器傳輸級和門級。

  系統級,算法級,RTL級(行為級),門級,開關級。

  21、MOORE 與 MEELEY狀態機的特征?

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

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

  22、FPGA內部結構及資源:

  FPGA主要由可編程單元、可編程I/O單元及布線資源構成。

  可編程邏輯單元(可配置邏輯單元,CLB)由兩個SLICE構成,SLICE主要包括實現組合邏輯的LUT和實現時序邏輯的觸發器。FPGA內部還包含專用存儲單元BRAM,運算單元DSP Slice,及專用內嵌功能單元,如:PLL、Serdes等。

  23、名詞解釋,寫出下列縮寫的中文(或者英文)含義:

  FPGA :Field Programmable Gate Array 現場可編程門陣列

  VHDL:( Very-High-Speed Integrated Circuit Hardware Description Language) 甚高速集成電路硬件描述語言

  HDL :Hardware Description Language硬件描述語言

  EDA:Electronic Design Automation 電子設計自動化

  CPLD:Complex Programmable Logic Device 復雜可編程邏輯器件

  PLD :Programmable Logic Device 可編程邏輯器件

  GAL:generic array logic 通用陣列邏輯

  LAB:Logic Array Block 邏輯陣列塊

  CLB :Configurable Logic Block 可配置邏輯模塊

  EAB: Embedded Array Block 嵌入式陣列塊

  SOPC: System-on-a-Programmable-Chip可編程片上系統

  LUT :Look-Up Table 查找表

  JTAG: Joint Test Action Group 聯合測試行為組織

  IP: Intellectual Property 知識產權

  ASIC :Application Specific Integrated Circuits 專用集成電路

  ISP :In System Programmable 在系統可編程

  ICR :In Circuit Re-config 在電路可重構

  RTL: Register Transfer Level 寄存器傳輸級

  24、FPGA內部LUT實現組合邏輯的原理:

  LUT相當于存放邏輯表達式對應真值表的RAM。軟件將邏輯表達式所有可能結果列出后存放在RAM中,輸入作為RAM地址,輸出為邏輯運算結果。如使用LUT模擬二輸入“與”邏輯。列出真值表:00 – 0,01 – 0,10 – 0,11 – 1。此時將00 01 10 11作為地址線,依次將結果0 0 0 1存放在RAM中。當輸入00時及輸出0&0=0.

  25、 低功耗技術:

  功耗可用公式描述:Power = KFCV^2,即功率等于常數系數工作頻率負載電容值*電壓的平方。

  故從以下幾個方面降低功耗方式:

  a.控制工作頻率:降低頻率增大數據路徑寬度,動態頻率調整,門控時鐘(時鐘使能有效時鐘才進入寄存器時鐘輸入引腳)

  b.減少電容負載:使用幾何尺寸更小的邏輯門,其電容負載較小,功率也隨之減少。

  c.降低工作電壓:動態改變工作電壓、零操作電壓(直接關閉系統中一部分的電源)

  27、異步串口校驗位的奇、偶校驗的原理

  奇校驗:讓所有這個字節的數據中出現奇數個1,比如,1000110(0)則必須添0,

  這樣原來有3個1已經是奇數了,所以添上0之后1的個數保持為奇數

  偶校驗:讓所有這個字節的數據中出現奇數個1,比如,1000110(1)則必須添1,

  這樣原來有3個1已經是奇數了。所以添上1之后1的個數保持為偶數。

  26、FPGA詳細設計流程(面試提問)

  與數字IC設計流程類似,以xilinx vivado工具為例,主要有以下步驟:

  系統設計、

  RTL級設計、

  RTL級仿真、

  綜合、

  門級仿真、

  布局布線、

  時序仿真、

  板級調試。

  27、時序約束相關有哪幾種時序路徑:

  input paths:外部引腳到內部寄存器

  register-to-register paths:系統內部寄存器到寄存器路徑

  output paths:內部寄存器到外部引腳的路徑

  port to port paths:FPGA輸入端口到輸出端口路徑(不常用)

  28、創建時序約束的關鍵步驟:

  baseline約束:create clocks  define clocks interactions

  I/O約束:set input and output delays

  例外約束:set timing execptions(set_max_delay/set_min_delay、set_multicycle_path、set_false_path)

  設計初期可先不加I/O約束,但baseline約束要盡早建立。




本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 激情五月婷婷在线 | 四虎影院观看视频在线观看 | 热99在线观看 | sese国产| 国产偷国产偷在线高清 | 99精品免费在线 | 久久国产精品久久国产精品 | 国产色视频在线 | 黄视频免费 | 殴美性生活视频 | 全免费a级毛片 | 久久免费视频精品 | 国产精品久久亚洲不卡动漫 | 国产一区二区视频在线 | 欧美最露下身的电影bd | 污污网站入口 | 国产二三区 | 久久精品免观看国产成人 | 五月婷婷综合在线视频 | 久久久久久久99久久久毒国产 | 欧美日韩另类在线观看视频 | 国产成版人视频网站免费下 | 国产短视频精品区第一页 | 亚洲热热久久九九精品 | 日韩一级高清 | 国产青草视频免费观看97 | 国产精品日韩在线观看 | 日韩欧美中文字幕在线观看 | 男人天堂资源网 | 日日躁夜夜躁狠狠天天 | 精品久久一区二区 | 国内精品久久久久影院嫩草 | 福利视频观看 | 国产高清在线观看视频手机版 | 激情亚洲综合网 | 看小视频的网站 | 欧美极品欧美日韩 | 婷婷在线免费观看 | 综合精品在线 | 国产亚洲精品视频中文字幕 | 九九视频在线播放 |