小生才疏學淺,孤陋寡聞,下文若有不當之處,還請賜教
一、vivado開發
1、error
1、synth8-5535 ? clk100 has illegal connection Xvendor=%s Xleid=%d Xhiername=%s"
解決:從引腳輸入的clk100不可以直接作爲多個模塊的輸入信號
2、關於microblaze使用
microblaze是內嵌在FPGA中的軟核,一個工程文件可設置多個micrablaze
3、vivado HLS 代碼中疊加或疊減符
在vivado HLS中寫C/C++是不可使用疊加或者疊減符號,否則在RTL綜合時或將某一個量定義成input/output型。
4.關於Vivado IP的兩種綜合方式:Global 和 Out-Of-Context,見鏈接:
https://blog.csdn.net/Setul/article/details/81903800
5.vivado SDK 中program FPGA時不能更新download.bit
鄙人用的是vivado 2018.2,原因到xilinx官方論壇,百度找了一圈都沒找到,估摸着是SDK本身的BUG;最後我把原hw_platform_x的download.bit文件刪掉,新建了一個空的download.bit文件,重新program FPGA就好了;本來是想直接新建一個hw_platform_x+1來着,找了一圈也沒找到怎麼新建;不知道有沒有朋友遇到過這種情況,還望在評論區留言解惑。
6.vivado SDK 編譯.C文件時出現頭文件錯誤
我遇到的是SDK自己的頭文件說沒有聲明,之前都好好的,突然說沒有該文件,後來多編譯幾次就好了,很奇怪,不知道原因,難道是SDK 的BUG?
二、XILINX FPGA芯片特性
1、IO特性
(1)輸入輸出標準:
單端模式:可配置爲LVCMOS,LVTTL,HSTL,PCI,SSTL電平標準,例如按鍵輸入,led驅動等;
差分輸入輸出(兩個IO引腳):可以設置爲LVDS,Mini_LVDS,RSDS,PPDS,BLVDS,以及差分HSTL和SSTL標準,這 樣可增強FPGA的應用範圍,處理不同類型的信號。
(2)引腳可分爲高效引腳(HP)和寬範圍引腳(HR)
HP:追求高效率,例如訪問高速存儲器和其他芯片間接口,電壓最高1.8V;
HR:滿足寬範圍應用的IO標準,電壓最高3.3V
2、內部存儲器
FPGA的內部存儲器有兩種:BRAM(塊RAM)和DRAM(分佈RAM)。
二者最本質的區別是:BRAM默認輸入有寄存器,所以它在讀、寫使能信號後的下一個時鐘沿返回數據;而DRAM 就沒有,就是個組合邏輯,讀、寫使能的同一時刻返回數據,即給地址就給數據。從時序的角度上來說,BRAM更好,唯一不足的是它是比較珍貴的硬件資源。
(1)DRAM
是由FPGA邏輯資源查找表LUT拼起來的。
(2)BRAM
FPGA 的固有硬件資源,主要用於產生較大FIFO或timing要求較高。可配置爲同步雙端口RAM和單端口RAM,每個雙端口的36Kbit BRAM
3、時鐘管理資源
MMCM(mixed-mode clock manager):混合模式時鐘管理器,用於在與給定輸入時鐘有設定的相位和頻率關係的情況下,生成不同的時鐘信號。
PLL(phase-locked loop):鎖相環,主要用於頻率綜合,使用一個PLL可以從一個輸入時鐘信號生成多個時鐘信號。
PLL輸入時鐘的頻率範圍爲19~1066MHz。相較而言MMCM的頻率範圍更寬爲10~1066MHz。