1 FPGA入門基礎知識熟練掌握
掌握FPGA必備的基礎,熟練掌握Verilog程式語言,熟練掌握FPGA開發工具,ISE,Vivado,quartus,modelsim等。熟悉FPGA的開發流程,編寫約束檔案。
圖1 VIVADO 17.4 圖2 quartus16.0
2 FPGA IP核使用
常用的FPGA IP核的使用,包括FIFO,RAM,加減乘除,浮點IP核,除錯IP核等等
圖3 VIVADO下的IP核介面
3 常見通訊介面
常用的通訊介面,包括UART串列埠,SPI 匯流排,I2C匯流排,EMIF匯流排(與DSP,MCU通訊),I2S,15535B匯流排,PCIE匯流排等。
4 高速介面
高速介面包括MIG 7 series(DDR3 介面),7系列FPGA晶片支援DDR3速率最大到1866M,GTX高速通道,高速IO,10G乙太網,PCIE匯流排,SRIO(高速序列通訊介面)等。
5 時序約束,非同步時鐘域的約束,及常見的跨時鐘域解決辦法
時序約束是FPGA中的難點,對於一個FPGA大的工程來說,必須保證時序滿足訊號的建立時間和保持時間。
5.1 建立時間:時鐘有效沿到來之前的某段時間內,資料必須穩定,否則觸發器鎖存不住資料,這段時間成為建立時間,用Tsetup或者Tsu表示。
5.2 保持時間:時鐘有效沿到來之後的某段時間內,資料也必須穩定,否則觸發器鎖存不住資料,這段時間成為保持時間,用Thold或者Th表示。
圖4 建立時間和保持時間的位置 圖5 資料建立需要時間
5.3 資料建立需要時間,如圖5
5.3.1 Tclk2,不同於上述的Tclk1,這個延時是時鐘從起點(一般是PLL或者時鐘輸入引腳)到鎖存觸發器之間的延時;如上圖所示,REG2實際感受到的時鐘來自於其本身的clk引腳,而不是源時鐘CLK,他們之間存在一個延時,即Tclk2;所以REG2實際感受到的時鐘,實際上是上圖的REG2.CLK;
5.3.2 Tsu:每一個數據被鎖存都要滿足建立時間和保持時間,Tsu就是建立時間,也就是在REG2實際感受到Latch Edge時,資料如果需要被正確鎖存,就必須提前Tsu的時間來到REG2的D;
5.3.3 綜合時鐘走線延時Tclk2以及Tsu,我們得到了資料建立時間DRTsu:
DRTsu=鎖存沿+Tclk2-Tsu。也就是說在DRTsu時刻之前,資料必須已經有效且穩定。
圖6 資料保持需要時間
5.4 資料保持需要時間,如圖6
資料保持需要時間=鎖存沿+Tclk2+Th;也就是說,資料在DRTh時間之前必須保持住不變。
5.5 常見的非同步時鐘訊號,一是在工程中對訊號進行非同步處理,二是在xdc檔案中設定非同步時鐘組。
5.6 跨時鐘域常見的解決辦法:一,使用非同步FIFO,二,使用非同步暫存器快取兩拍。
6 FPGA系統架構設計
一個工作經驗FPGA工程師,都是從底層開發到系統設計,系統設計需要從FPGA專案的總體考慮,分析專案需求,分解成FPGA模組,設計專案開發方案,換句話說就是搭建FPGA的總體架構。
1 FPGA入門基礎知識熟練掌握
掌握FPGA必備的基礎,熟練掌握Verilog程式語言,熟練掌握FPGA開發工具,ISE,Vivado,quartus,modelsim等。熟悉FPGA的開發流程,編寫約束檔案。
圖1 VIVADO 17.4 圖2 quartus16.0
2 FPGA IP核使用
常用的FPGA IP核的使用,包括FIFO,RAM,加減乘除,浮點IP核,除錯IP核等等
圖3 VIVADO下的IP核介面
3 常見通訊介面
常用的通訊介面,包括UART串列埠,SPI 匯流排,I2C匯流排,EMIF匯流排(與DSP,MCU通訊),I2S,15535B匯流排,PCIE匯流排等。
4 高速介面
高速介面包括MIG 7 series(DDR3 介面),7系列FPGA晶片支援DDR3速率最大到1866M,GTX高速通道,高速IO,10G乙太網,PCIE匯流排,SRIO(高速序列通訊介面)等。
5 時序約束,非同步時鐘域的約束,及常見的跨時鐘域解決辦法
時序約束是FPGA中的難點,對於一個FPGA大的工程來說,必須保證時序滿足訊號的建立時間和保持時間。
5.1 建立時間:時鐘有效沿到來之前的某段時間內,資料必須穩定,否則觸發器鎖存不住資料,這段時間成為建立時間,用Tsetup或者Tsu表示。
5.2 保持時間:時鐘有效沿到來之後的某段時間內,資料也必須穩定,否則觸發器鎖存不住資料,這段時間成為保持時間,用Thold或者Th表示。
圖4 建立時間和保持時間的位置 圖5 資料建立需要時間
5.3 資料建立需要時間,如圖5
5.3.1 Tclk2,不同於上述的Tclk1,這個延時是時鐘從起點(一般是PLL或者時鐘輸入引腳)到鎖存觸發器之間的延時;如上圖所示,REG2實際感受到的時鐘來自於其本身的clk引腳,而不是源時鐘CLK,他們之間存在一個延時,即Tclk2;所以REG2實際感受到的時鐘,實際上是上圖的REG2.CLK;
5.3.2 Tsu:每一個數據被鎖存都要滿足建立時間和保持時間,Tsu就是建立時間,也就是在REG2實際感受到Latch Edge時,資料如果需要被正確鎖存,就必須提前Tsu的時間來到REG2的D;
5.3.3 綜合時鐘走線延時Tclk2以及Tsu,我們得到了資料建立時間DRTsu:
DRTsu=鎖存沿+Tclk2-Tsu。也就是說在DRTsu時刻之前,資料必須已經有效且穩定。
圖6 資料保持需要時間
5.4 資料保持需要時間,如圖6
資料保持需要時間=鎖存沿+Tclk2+Th;也就是說,資料在DRTh時間之前必須保持住不變。
5.5 常見的非同步時鐘訊號,一是在工程中對訊號進行非同步處理,二是在xdc檔案中設定非同步時鐘組。
5.6 跨時鐘域常見的解決辦法:一,使用非同步FIFO,二,使用非同步暫存器快取兩拍。
6 FPGA系統架構設計
一個工作經驗FPGA工程師,都是從底層開發到系統設計,系統設計需要從FPGA專案的總體考慮,分析專案需求,分解成FPGA模組,設計專案開發方案,換句話說就是搭建FPGA的總體架構。