本次整理2023年6月5日~6月11日,FPGA算法技術交流群的相關問答。相關問題的解答和交流來自群成員,僅作參考。
1.有用過xilinx FIFO的first word fall through模式,然后write data count會少2個計數(shù)的嗎?
答:wr count應該是代表目前fifo中寫入值,讀出fifo的值是不算在他的計數(shù)內(nèi),不是累加的。
2.GTH自回環(huán),直接把差分收發(fā)assign就行吧?
答:是控制loopback。直接assign,表面上是連起來了,實際硬件管腳并沒有連起來。ip核里邊有個loopback,配置一下看自收發(fā)數(shù)據(jù)正不正常。Ibert可用來測高速收發(fā)器的功能。
3.有沒有遇到flash啟動不了的情況,上電有百分之10的幾率不運行固化的程序?
答:看看SPI速率是不是比較高?如果flash是3.3v的,3.3得快點上,用k7的時候遇到過,可以試一下。
4. FPGA是不是不支持PCIE4.0X16的啊,IP核最大只找到了PCIE4.0X8的?
答:PCIE4.0X16得用高級一點的片子,versal已量產(chǎn)的可以支持gen4x16,gen5x8。同時Vivado版本也要用新的。
5.寫verilog代碼,有那些好用的編輯器?
答:notepad++、gvim、sublime、vim、vscode(有不少插件)、utral edit、TerosHDL、Digital IDE等,用起來習慣就好。
6.請問下vivado生成ram的ip時只能生成vhdl代碼嗎,可以選生成verilog嗎?
答:取決于這個IP 最初是用什么語言寫的,確實有部分IP底層用的VHDL寫的。不過一般在例化接口,提供了VHDL和verilog兩種模式,可以選擇。
7.想問問大家,一般比如說ZYNQ中,PS/PL之間交互,一般是xilinx的ip,還是自己寫axi_dma讀寫的ip啊?
答:自己手動寫。此外,BD側可以調(diào)用DMA。
8. 阻塞與非阻塞賦值問題。
always@(*)、assign用于組合邏輯,阻塞賦值。
always@(posedge clk)用于時序邏輯,非阻塞賦值。
9.NTP 協(xié)議用于時鐘同步FPGA怎么實現(xiàn)?
答:看協(xié)議規(guī)范,找資料。以下是NTP的同步原理。
NTP最典型的授時方式是Client/Server方式,如下圖所示。
客戶端首先向服務端發(fā)送一個NTP請求報文,其中包含了該報文離開客戶端的時間戳t1;
NTP請求報文到達NTP服務器,此時NTP服務器的時刻為t2。當服務端接收到該報文時,NTP服務器處理之后,于t3時刻發(fā)出NTP應答報文。該應答報文中攜帶報文離開NTP客戶端時的時間戳t1、到達NTP服務器時的時間戳t2、離開NTP服務器時的時間戳t3;
客戶端在接收到響應報文時,記錄報文返回的時間戳t4。
客戶端用上述4個時間戳參數(shù)就能夠計算出2個關鍵參數(shù):
NTP報文從客戶端到服務器的往返延遲delay。
客戶端與服務端之間的時間差offset。
根據(jù)方程組:
可以解得時間差為:
NTP客戶端根據(jù)計算得到的offset來調(diào)整自己的時鐘,實現(xiàn)與NTP服務器的時鐘同步。
與NTP類似的還有PTP,NTP客戶端根據(jù)計算得到的offset來調(diào)整自己的時鐘,實現(xiàn)與NTP服務器的時鐘同步。可以通過IEEE 1588進行時鐘同步。
10. 就是千兆網(wǎng)的crc計算中,為啥用網(wǎng)站生成了crc公式得到的值,還要按字節(jié)為單位按位取反呀?
答:查一下IEEE Ethernet中的計算說明。
11. 請問一下大家這個zynq ps 40M進來 到PL 40M 在pl里邊經(jīng)過鎖相環(huán)生成100MHz時鐘,非常準確嗎?
答:PS的里面的這個時鐘精度不高,大都給AXI總線時鐘用,很少用來當FPGA的工作時鐘,也就不怎么關注詳細的精度了。
12. 能不能用PLL IP的lock信號當作復位信號用呢?我看這個lock是晚于幾個時鐘周期后出來的。假如板子上沒有設計硬件復位引腳,可以拿這個信號當全局復位用嗎?
答:可以,現(xiàn)實當中就這這么用的。可以,但是一般我都讓它控制一個計數(shù)器,因為有些東西對復位信號長度有要求,不小于XX周期。
13. 用zynq做nvme的接口,讀寫SSD有啥好方案嘛?
答:直接掛載到linux上用文件系統(tǒng)讀寫,我之前用的SATA接口讀寫SSD 使能cache能到200~300Mbytes/s。
14.某些IP核生成時關于共享邏輯的問題。
答:如果選上邊的,核里多包含一些必要的東西,使用起來簡單些。但是那些東西也就沒法復用了。下邊的,是核里只包含必要的東西,其它附屬東西放在例子里。
有時候需要例化多個該IP時,選用下面的在例子中使用共享邏輯,可以復用部分時鐘和復位,特別是GT相關的。
15. SSS檢測,找相關峰的時候可以這樣(a^2+b^2-->|a|+|b|)簡化算法嗎?336個相關器,如果并行處理,會消耗大量的乘法器。
答:SSS檢測,需要336個相關器,考慮虛警概率,如果處理方法不當,可能在拉距時容易漏檢。SSS周期長,允許時間內(nèi),可不全并行處理,復用部分相關器。找最大值,可以直接用功率了吧,不用開方了,效果差不多。求功率也就2個乘法器,1個加法器。
另外,平方根的簡化算法:z=sqrt(a^2+b^2)有個近似算法:
M=max(abs(a),abs(b))
m=min(abs(a),abs(b))
if (M>2*m) z=M+m/4
else z=7/8*M+m/2
16. 請教一下,VHDL怎么和c聯(lián)合仿真呢?
答:通過DPI接口可以把c和sv交互。或者考慮以下QEMU。一般來說,ARM側不用仿真。
17. 對于zynq的使用,單獨從vivado加載程序,可以嗎?如果我pl鐘來自ps得話,需要加載sdk加載嗎?
答:這只是下載程序的問題,下載PS的程序只能從SDK ,你PL的時鐘需要加載PS的程序才能激活。
18.實信號與復數(shù)信號采樣問題。
答:一路實信號,fs得兩倍。正交的IQ有效帶寬其實是加倍了。實信號正負頻率共軛對稱的,帶寬定義的是零頻到正半邊,采樣率大于二倍這個就行。復信號相當于兩個實信號,兩路AD都大于實信號二倍就行。采樣速率,所以是兩個實信號相加。
19. 請教一下,大家都是怎么在設計初期估計硬件板子的功耗,以及電源需求的哈。
答:Xilinx有一個excel表格可以估,XPE。XPE的使用方法參考《Xilinx Power Estimator User Guide (UG440)》。極限條件的XPE仿真步驟參考《xapp1348-power-analysis》。
20. 請教一個問題,數(shù)字中頻閉環(huán)采線性調(diào)頻信號做脈壓,匹配濾波器用理想的系數(shù),脈壓的結果看著很差,這個問題接下來還可以怎么排查呢?
答:線性調(diào)頻信號,可以簡單看看頻率是不是線性變化。線性調(diào)頻直接用相位差分,看看調(diào)頻曲線。相位取差分,就是調(diào)頻曲線,看是不是線性。
21. 有沒有類似github的但是以verilog為主的開源網(wǎng)站?
答:例如
a、opencores,https://opencores.org/
b、FPGAs4fun,http://www.fpga4fun.com/
c、OpenHW Group ,https://www.openhwgroup.org/
d、FPGACPU,http://www.fpgacpu.org/links.html
審核編輯:湯梓紅
-
FPGA
+關注
關注
1626文章
21670瀏覽量
601876 -
Xilinx
+關注
關注
71文章
2164瀏覽量
121013 -
fifo
+關注
關注
3文章
387瀏覽量
43554 -
編輯器
+關注
關注
1文章
801瀏覽量
31120
原文標題:FPGA算法技術交流問答集錦(6.5~6.11)
文章出處:【微信號:FPGA算法工程師,微信公眾號:FPGA算法工程師】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論