當前位置:首頁 » 編程軟體 » xilinx編譯器

xilinx編譯器

發布時間: 2023-05-10 23:35:36

A. fpgaip核最多

一、背景

FIFO是FPGA項目中使用最多的IP核,一個項目使用幾個,甚至是幾十個FIFO都是很正常的。通常情況下,每個FIFO的參數,特別是位寬和深度,是不同的。

明德揚(MDY)在2021年承擔了多個基於XILINX晶元的研發項目,包括VPX網路透明傳輸項目(晶元為XC7K325T-2FBG900)、某高端測試儀項目(晶元為XCKU060-FFVA1156)、某網閘設備項目(晶元為XC7Z030-FBG676)等,另外,明德揚自研了基於XC7K325T-2FBG900和基於XC7K410T-2FBG900晶元的核心板,在XILINX研發領域擁有豐富的經驗。

這些項目都必須用到FIFO。如果按照通常做法,每種位寬和深度的IP,都要打開FIFO IP核界面、命名(命名不好不好分辨需要的FIFO)、設置參數、生成並編譯IP核,工作量可以想像出來是非常多的。更重要的是隨之而來的管理問題,如何管理這幾十個不同FIFO,如何檢查FIFO的設置是否正確,都是一個不小的挑戰。

對於我們專門承接項目的團隊,絕不可忍受如此重復、枯燥、容易出錯的工作。經過精心研究,終於找到了一條實用的方法:使用XILINX的原語--xpm_fifo_async和xpm_fifo_sync。

XILINX原語xpm_fifo_async和xpm_fifo_sync在FPGA中,可以直接例化使用,並且可以參數化FIFO的位寬和深度的。即在設計時,不用生成FIFO IP,直接例化就可以使用了。

二、獲得參考代碼

打開VIVADO軟體,點擊上圖中的Language Templates,將會彈出Language Templates窗口,如下圖。

在Language Templates窗口中,依次點擊verilog、Xilinx Parameterized Macros(XPM)、XPM、XPM_FIFO,如上圖。可以看到有三種FIFO,分別是非同步的XPM FIFO:xpm_fifo_async、AXI匯流排的FIFO:xpm_fifo_axis和同步的XMP FIFO:xpm_fifo_sync。

選擇xpm_fifo_async,右邊的Preview窗口,將出現xpm_fifo_async的注釋以及參考代碼。將此部分代碼拷出來,並將注釋刪除,剩下的是xpm_fifo_async的例化參考。

上圖是對xpm_fifo_async的參數例化部分。下面是需要重點關注並經常使用的參數。

Ø FIFO_WRITE_DEPTH:FIFO的寫深度,其實就是在這里設置FIFO的深度,注意該值通常是2的N次方,如8、16、32、64等數。

Ø PROG_EMPTY_THRESH:FIFO的快空的水線。當FIFO存儲的數據量小於該水線時,FIFO的快空信號將會變高。

Ø PROG_FULL_THRESH:FIFO的快滿的水線。當FIFO存儲的數據量大於該水線時,FIFO的快滿信號將會變高,表示有效。

Ø READ_DATA_WIDTH:讀數據的位寬。

Ø WRITE_DATA_WIDTH:將數據的位寬。

Ø RD_DATA_COUNT_WIDHT:讀側數據統計值的位寬。

Ø WR_DATA_COUNT_WIDTH:寫側數據統計值的位寬。

上圖是對xpm_fifo_async的介面信號部分。下面是需要重點關注並經常使用的信號。

Ø wr_clk:FIFO的寫時鍾

Ø rst:FIFO的復位信號,高電平有效。要注意的是,該信號是屬於寫時鍾域的。

Ø wr_en:FIFO的寫使能信號。

Ø din:FIFO的寫數據

Ø full:寫滿指示信號,當FIFO寫滿時,該信號變高。

Ø wr_data_count:FIFO存儲數據量指示信號,用來指示當前FIFO已經寫入但未讀出的數據個數。

Ø rd_clk:FIFO的讀時鍾。

Ø rd_en:FIFO的讀使能。

Ø dout:FIFO讀出的數據。

Ø empty:FIFO的空指示信號。當其為1表示FIFO處於空狀態,當其為0,表示FIFO內有數據。

三、定義自用的FIFO模塊

從第二步可以看出,xpm_fifo_async是可以參數化深度和位寬的。但xpm_fifo_async有很多參數和信號,並且其中有部分是不使用的。為了使用上的方便,可以自定義自用的FIFO模塊。

例如,明德揚就定義了一個模塊mdyFifoAsy,該信號的介面信號如下圖。可以看出,名稱更加規范,並且定義常用的信號,如讀時鍾rd_clk,寫時鍾wrclk、寫使能wrreq等信號。

明德揚還在模塊mdyFifoAsy定義了一些常用的參數,分別是FIFO深度參數:DEPT_W;FIFO位寬的參數:DATA_W,還有FIFO快滿參數AL_FUL和快空參數AL_EMP,如下圖。

接下來,就是在mdyFifoAsy中例化並使用xpm_fifo_async了。如下圖,就是對xpm_fifo_async的參數例化。將DEPT_W傳給FIFO_WRITE_DEPTH,DATA_W傳給READ_DATA_WIDTH等。

下圖是對xpm_fifo_async的信號例化。將不用的信號留空,將dout連到q,din連到data,wr_en連到wrreq等。您可以根據自己情況來定製FIFO。

四、應用

定製完自己的FIFO後,就可以直接例化使用了。

上圖就是使用了一個位寬為8,深度為256的FIFO。

上圖就是使用了一個位寬為18,深度為1024的FIFO。

FIFO是FPGA、晶元設計中,最常用的IP核,在存儲控制、演算法實現、介面設計中,都少不了FIFO,因此合理並正確使用FIFO的技術就非常有必要了,明德揚錄制了FIFO的訓練視頻,掌握後技術能力將有大提升。

通過上面介紹可知,通過此種方式,再也不用生成FIFO IP核啦,整個工程大小基本上可以減少一大半。

上面舉的例子是xpm_fifo_async,同步FIFO:xpm_fifo_sync的使用方法是類似的。

B. HDL輸入信號50MHz,需分頻輸出4Hz,代碼及測試文件怎麼實現

要實現將50MHz的輸入信號分頻輸出4Hz,可以使用HDL語言(如Verilog或VHDL)編寫代碼來實現。


下面是一個簡單的Verilog代碼示例,實現了將50MHz的輸入信號分頻輸出4Hz的功能:

`timescale 1ns / 1ps

mole divider_tb;
reg clk_in;
wire clk_out;
divider uut(.clk_in(clk_in), .clk_out(clk_out));
initial begin
clk_in = 1'b0;
#25000;
clk_in = 1'b1;
#25000;
end
endmole

在這段代碼中,divider_tb是測試文件的模塊名。在模塊中,定義了一個輸入信號clk_in和一個輸出信號clk_out。然後,使用了一個名為uut的實例化模塊,來連接定義的輸入信號和輸出信號,這個模塊的實際類型是前面定義的divider模塊。


最後,測試文件中的initial begin和迅吵end塊中定義了測試用例。這里的測試用例是讓輸入信號clk_in先置畝敏侍為0,然後延時25000個時鍾周期,再將輸入信號置為1,再延時25000個時鍾周期。這樣,輸入信號就可以產生一個50MHz的時鍾信號,可以用來測試前面定義的divider模塊。


請注意,這僅僅是一個示例代碼,實際使用時可能需要根據具體情況進行調整。例如,你可能需要根據實際的分頻比例來調整計數器的值,或者根據實拿鉛際的測試需要來調整測試用例。


此外,你還需要使用HDL編譯器將這些代碼編譯成可以在FPGA或ASIC上運行的代碼。這需要使用特定的編譯器,例如Xilinx Vivado或Intel Quartus。

不同的編譯器可能有不同的編譯選項,你需要根據你使用的編譯器的文檔來了解如何編譯這些代碼。
希望這些信息能夠幫助你實現你的項目。

C. warning HDL編譯器:1007 (xilinx)說是一個X_RAMB18E1.v- element index 47 into mem is out of bound

element index 47 into mem is out of bound
元素序列超氏談過mem的范圍
也就是說該地址超過了mem的山核橡地址范圍,比如mem的地址線寬度為5位,那麼他的地址范圍為0~31,這樣逗旁47就超過他的范圍了

D. Xilinx Zynq Z-7020這款FPGA是完全使用C語言開發的嗎

硬體的最底層都是做飢機器碼耐胡握,匯編指令,但是開發者可以使用任何語言開發,最後都會被編譯器轉換成機昌慶器碼。你這個硬體的一般都是用c開發的。

E. Xilinx的XQV300應該用哪個版本的ISE編譯軟體,急求,XQV300是qpro的軍品級器件,比較老,但現在要用

ISE10.1 /9.2 都可以。

F. verilog 關於余除(取模) '%' 的問題

硬體瞎弊語言不是C程序,你寫的東西如果要下到FPGA上 是需要可以綜合的。
例如你的枝燃12%5,就是無法磨搭族綜合的,
不要考驗軟體

G. labviewFPGA編譯

右鍵單擊RT終端的FPGA晶元,選擇屬性,查看編譯器是那種
官網上有下載,搜xilinx即可。
安裝好後,就可以使用本地編譯伺服器了。

H. 我用xilinx ise到Implement的map這一步出現了一下16個錯誤,求解決辦法(字數限制,無辦法粘貼所有錯誤)

用 synplify綜合念局就好了鬧納,Xilinx自己的編譯器做的太差仔彎讓了

I. 什麼是FPGA 簡單的說一下,不要復制百度百科之類的。

FPGA實現的設計並非如你想像的用基本門電路搭建 而是查表得出的
FPGA確實提供了一些基本的數字器件 但其最主要的功能單元是LUT(Look-up Table, 查找表)

LUT是一種存儲盯冊資源 用於實現組合邏輯和時序邏輯(LUT+寄存器)
不同廠商、型號的fpga提供不同的LUT 可以通過非易失性flash或者sram或耐則輪者反熔絲技術實現 LUT的單元規模也不同 可能是4輸入、6輸入、8輸入等
舉個例子 要實現 」a與b「 這個功能 就相當於查找一個表格 其內容為
a=0,b=0時 f=0;
a=0,b=1時 f=0;
a=1,b=0時 f=0;
a=1,b=1時 f=1;
fpga編譯器會把a&&b這個描述轉換成這個表格 生成數據流文件
進行fpga配置之後 fpga器件上有一個存儲單元就存儲了這個數據流文件中昌信描述的這個表格
邏輯運行時 a,b就是這個查找表的索引(即這個存儲單元的地址)f就是查找結果(存儲單元的輸出)

你可以在google搜索xilinx what is an fpga
有簡明的介紹 和fpga的結構示意圖

J. 如何為qt指定編譯器arm-xilinx-linux

修改$QTDIR/mkspecs目錄下的符號鏈接default.將其指向linux-g++
$QTDIR是路徑,具體要看你把QT裝到什麼地方和QT本身的版本,一般是/usr/lib[64]/qt4
修改default符號鏈接的作用是讓qmake在生成Makefile的時候將Makefile文件中的編譯器變數$CC與$CXX賦值成gcc和g++

熱點內容
usb大容量存儲驅動 發布:2024-05-07 19:02:01 瀏覽:815
紅米1s沒有存儲空間 發布:2024-05-07 18:59:09 瀏覽:505
妖雲解壓密碼 發布:2024-05-07 18:50:08 瀏覽:1002
sql語句等於怎麼寫 發布:2024-05-07 18:05:46 瀏覽:816
我的世界電腦版第三方伺服器大全 發布:2024-05-07 18:00:46 瀏覽:627
主伺服器的ip地址 發布:2024-05-07 17:58:50 瀏覽:546
組伺服器打電腦游戲 發布:2024-05-07 17:46:19 瀏覽:866
java的文件路徑 發布:2024-05-07 16:55:29 瀏覽:293
雲表伺服器安裝導致電腦崩潰 發布:2024-05-07 15:58:35 瀏覽:524
ftp是什麼檢測器 發布:2024-05-07 15:37:59 瀏覽:403