一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

?構(gòu)建自定義AXI4-Stream FIR濾波器

FPGA技術(shù)江湖 ? 來源:OpenFPGA ? 2023-01-06 09:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AMD-Xilinx 的 Vivado 開發(fā)工具具有很多方便FPGA開發(fā)功能,我最喜歡的功能之一是block design的設(shè)計(jì)流程。Vivado 中的block design是使用RTL IP形式的圖形表示進(jìn)行設(shè)計(jì),在block design中使用 RTL 模塊的方便之處在于,它將自動檢測某些類型的信號,例如時鐘、復(fù)位和總線接口,然后,檢測這些信號進(jìn)行IP間的自動化連接。Vivado 中包含大量預(yù)構(gòu)建 IP 模塊(官方IP)。

為了方便用戶進(jìn)行相關(guān)設(shè)計(jì),Vivado 提供了一個內(nèi)置的 IP 封裝編輯器工具,它可以為 AXI IP 生成框架,只需將自己的 RTL 代碼插入其中。同時也提供了相關(guān)的驅(qū)動文件,可以在Vitis中方便調(diào)試。

為了演示究竟上面流程“好”在哪里,接下來我們創(chuàng)建一個AXI FIR IP 模塊,然后將IP添加到我們設(shè)計(jì)中最后驗(yàn)證功能。

創(chuàng)建 Vivado 項(xiàng)目

首先,啟動 Vivado 并針對自己的FPGA創(chuàng)建一個新項(xiàng)目。

1e2fa64c-8d57-11ed-bfe3-dac502259ad0.png1e6522ea-8d57-11ed-bfe3-dac502259ad0.png

添加 MicroBlaze,對于這個項(xiàng)目來說,使用 BRAM 就足夠了。

選擇 Add IP 選項(xiàng)并搜索 MicroBlaze,將其添加到模塊設(shè)計(jì)中并運(yùn)行 Block Automation,該模塊會在窗口頂部的綠色橫幅中彈出。接下來添加中斷控制器。

1e737f66-8d57-11ed-bfe3-dac502259ad0.png1ea78dce-8d57-11ed-bfe3-dac502259ad0.png1eb60f8e-8d57-11ed-bfe3-dac502259ad0.png

驗(yàn)證并保存塊設(shè)計(jì),接下來我們將開始我們的IP設(shè)計(jì)。

創(chuàng)建新的 AXI4 外設(shè)

要使用自己的 RTL 創(chuàng)建新的 AXI 外設(shè)并將其封裝為 IP ,請選擇工具>創(chuàng)建和打包新 IP...

1f609b70-8d57-11ed-bfe3-dac502259ad0.png

在彈出的窗口中,按照提示逐步瀏覽屏幕,選擇Create AXI4 Peripheral選項(xiàng),指定 IP 塊的所需名稱、位置目錄以及 IP 將具有的 AXI 接口數(shù)量以及 AXI類型。

Vivado 中使用了三種主要類型的 AXI:

AXI4 (full)

AXI4-Lite

AXI4-Stream

每種類型都適合不同的用例,在這個項(xiàng)目中,我們正在創(chuàng)建自己的 AXI FIR 濾波器 IP 。由于 FIR 濾波器輸入并輸出具有已知數(shù)據(jù)包邊界和流量控制要求的恒定數(shù)據(jù)流,因此 AXI4-Stream 是最適合的類型。它將需要一個從接口來輸入數(shù)據(jù)樣本,并需要一個主接口來輸出處理后的樣本。

作為參考,F(xiàn)IR 是一個運(yùn)行速度為 100 MS/s 的 LPF,具有 15 個抽頭,接收帶符號的 16 位數(shù)據(jù)并輸出帶符號的 32 位數(shù)據(jù)。它有一個從 1MHz 到 10MHz 的通帶和一個從 20MHz 開始的阻帶。

接下來,選擇編輯 IP并單擊完成。IP 包編輯 Vivado 項(xiàng)目將重新打開一個gui。

1f6b15d2-8d57-11ed-bfe3-dac502259ad0.png1f937720-8d57-11ed-bfe3-dac502259ad0.png1f9b0efe-8d57-11ed-bfe3-dac502259ad0.png1fc0eeda-8d57-11ed-bfe3-dac502259ad0.png1fca275c-8d57-11ed-bfe3-dac502259ad0.png1f6b15d2-8d57-11ed-bfe3-dac502259ad0.png

將自定義 RTL 添加到 AXI4-Stream IP

從Flow Navigator中選擇Add Sources添加我們要設(shè)計(jì)的 FIR Verilog 文件。

200e7ec0-8d57-11ed-bfe3-dac502259ad0.png

在使用 Add Files 選項(xiàng)指向 FIR Verilog 文件后,取消選中Scan and add RTL include files into project復(fù)選框。由于這不是一個普通的 Vivado 項(xiàng)目,并且 Verilog 代碼被打包到一個 IP 塊中,因此選中該選項(xiàng)后將引發(fā)錯誤。

2039f456-8d57-11ed-bfe3-dac502259ad0.png20575500-8d57-11ed-bfe3-dac502259ad0.png

添加后,源層次結(jié)構(gòu)更新并且 FIR Verilog 文件獨(dú)立于 AXI Verilog 源文件。

20774a7c-8d57-11ed-bfe3-dac502259ad0.png

根據(jù)生成 IP 編輯器 Vivado 項(xiàng)目時所做的選擇,會為此 AXI4-Stream 外設(shè)生成三個 RTL 源文件:

從接口功能 RTL。

主接口功能 RTL。

具有物理接口聲明和主從接口實(shí)例化的頂層文件。

在設(shè)計(jì)之前,需要將幾個默認(rèn)未啟用的可選 AXI4-Stream 接口信號添加到主 AXI 端口和從 AXI 端口。大多數(shù) DSP IP 模塊,例如 DDS 利用了 AXI4-Stream 額外的keep 和 tlast信號。

添加這些可選信號很簡單,但最初并不清楚。導(dǎo)航到Package IP窗口中的Customization Parameters選項(xiàng)卡。

2089b662-8d57-11ed-bfe3-dac502259ad0.png

主接口和從接口都需要添加它們,因此右鍵單擊每個接口并選擇Edit Interface 。

20b7fb08-8d57-11ed-bfe3-dac502259ad0.png

在“Parameters”選項(xiàng)卡中啟用HAS_TKEEP ,方法是單擊每個選項(xiàng),然后單擊單個箭頭將其從左列移動到右列。

20d220dc-8d57-11ed-bfe3-dac502259ad0.png

然后切換到Port Mapping選項(xiàng)卡,將 tkeep 和 tlast 映射到 AXI IP 塊的物理接口。在Interface's Logical Ports列和IP's Physical Ports列中分別匹配 tkeep 和 tlast 信號。然后在下面的Mapped Ports Summary列中驗(yàn)證它們的映射。

20ef7736-8d57-11ed-bfe3-dac502259ad0.png

由于默認(rèn)情況下不啟用 tkeep,因此還必須手動將其端口聲明添加到所有三個 AXI 接口 RTL 源文件的用戶定義端口聲明部分。它還需要添加到頂級 AXI 包裝器中的 AXI 主接口和從接口實(shí)例中。

21123528-8d57-11ed-bfe3-dac502259ad0.png213c79f0-8d57-11ed-bfe3-dac502259ad0.png216ba838-8d57-11ed-bfe3-dac502259ad0.png21a5a40c-8d57-11ed-bfe3-dac502259ad0.png

在注釋Add user logic here標(biāo)記的部分中實(shí)例化 FIR Verilog 模塊。

21bb5400-8d57-11ed-bfe3-dac502259ad0.png

現(xiàn)在,雖然 AXI 接口的基本功能分別在每個 RTL 源文件中自動生成,但如何從輸入數(shù)據(jù)流中提取數(shù)據(jù)并傳遞到自己的自定義邏輯中由自己來定義。以及如何將自定義邏輯的數(shù)據(jù)輸出饋送到主 AXI 接口進(jìn)行輸出。因此,會在三個自動生成的 RTL 源文件中注意到相同的 Add user 邏輯。

21f5902a-8d57-11ed-bfe3-dac502259ad0.png225f7a08-8d57-11ed-bfe3-dac502259ad0.png

另一點(diǎn)需要注意的是,AXI4-Stream 接口的功能需要進(jìn)行一些修改,以便將 tkeep 和 tlast 信號功能添加到主 AXI 接口和從 AXI 接口。

2291370a-8d57-11ed-bfe3-dac502259ad0.png

這個項(xiàng)目的最后一個獨(dú)特的要求是,因?yàn)檫@個邏輯的核心是一個 FIR 濾波器,所以主從 AXI 接口和 FIR 都需要由相同的時鐘作為 FIR 采樣時鐘。所以只是將從 AXI 接口時鐘傳遞給 FIR 和主 AXI 接口。

23020ab6-8d57-11ed-bfe3-dac502259ad0.png

封裝 AXI IP 塊

返回到 Package IP 窗口,讓我們?yōu)g覽每個選項(xiàng)卡并驗(yàn)證,然后最終將其打包。

第一個選項(xiàng)卡中是輸出 AXI 外設(shè) IP 包的基本顯示信息。

23338ee2-8d57-11ed-bfe3-dac502259ad0.png

第二個標(biāo)簽很重要。默認(rèn)情況下,AXI 外設(shè) IP 僅支持啟動 IP 包編輯器的主 Vivado 所針對的 FPGA 芯片系列。大多數(shù)時候,可能希望能夠?qū)?AXI 外設(shè) IP 塊與其他 Xilinx FPGA 芯片系列一起使用,就需要添加我們需要的目標(biāo)FPGA芯片。

235f07ca-8d57-11ed-bfe3-dac502259ad0.png

對于其余選項(xiàng)卡,默認(rèn)需求即可。

237ba9b6-8d57-11ed-bfe3-dac502259ad0.png23b5c9fc-8d57-11ed-bfe3-dac502259ad0.png23e25ca6-8d57-11ed-bfe3-dac502259ad0.png2416de4a-8d57-11ed-bfe3-dac502259ad0.png247a9246-8d57-11ed-bfe3-dac502259ad0.png

在最后一個選項(xiàng)卡中,單擊窗口底部的Package IP按鈕。將出現(xiàn)一個提示,詢問是否要關(guān)閉 IP 編輯器 Vivado 項(xiàng)目。

此時,F(xiàn)IR AXI IP 塊被打包并放置在 Package IP 窗口的第一個選項(xiàng)卡指定的目錄中的存儲庫中。

將自定義 AXI4-Stream FIR 添加到項(xiàng)目

現(xiàn)在自定義 FIR AXI IP 模塊已經(jīng)完成并封裝,我們可以返回原始 Vivado 項(xiàng)目,將其添加到模塊設(shè)計(jì)中。

我們的驗(yàn)證項(xiàng)目如下:

24ab3216-8d57-11ed-bfe3-dac502259ad0.png

其中DDS IP設(shè)置如下:

24d210ca-8d57-11ed-bfe3-dac502259ad0.png24e5577a-8d57-11ed-bfe3-dac502259ad0.png24ffe73e-8d57-11ed-bfe3-dac502259ad0.png25614a4c-8d57-11ed-bfe3-dac502259ad0.png

創(chuàng)建仿真平臺

首先創(chuàng)建仿真文件,并在sim文件夾下的 Sources 選項(xiàng)卡中,右鍵單擊它并選擇Set as Top 。

257ed6ac-8d57-11ed-bfe3-dac502259ad0.png

在這種情況下,只需在塊設(shè)計(jì)中實(shí)例化塊設(shè)計(jì),并為其提供差分系統(tǒng)時鐘和主 FPGA 復(fù)位。一旦接收到時鐘和復(fù)位信號,相位增量狀態(tài)機(jī)就會自行運(yùn)行。

`timescale1ns/1ps

modulesp701_bd_tb;

regclk_p,clk_n,reset;

alwaysbegin
clk_p=1;clk_n=0;#5;
clk_p=0;clk_n=1;#5;
end

alwaysbegin
reset=1;#40;
reset=0;#1000000000;
end

sp701_bdsp701_bd_i(
.reset(reset),
.sys_diff_clock_clk_n(clk_p),
.sys_diff_clock_clk_p(clk_n)
);

endmodule

這里注意一下主 AXI 接口輸出信號和 tlast、tvalid 和 tdata 需要進(jìn)行初始化。否則仿真將會報(bào)錯。

25a10e7a-8d57-11ed-bfe3-dac502259ad0.png

單擊Flow Navigator窗口中的Run Simulation并選擇Run Behavioral Simulation 。

25c6914a-8d57-11ed-bfe3-dac502259ad0.png

注意仿真結(jié)果顯示格式。

總結(jié)

上面的一些創(chuàng)建細(xì)節(jié)沒有全部展現(xiàn),因?yàn)楸旧韺τ贗P的創(chuàng)建不是我們的核心,我們只想說明使用目前這種BD設(shè)計(jì)可以達(dá)達(dá)簡化設(shè)計(jì),尤其是目前Verilog的一些缺點(diǎn)。

最后說一下調(diào)試中的注意點(diǎn),就是使用ILA查看AXI-Stream輸出時候,會造成FIR的時序與采樣混淆導(dǎo)致 FIR 不再工作,可能會查看不到任何波形,使用AXIS的專用調(diào)試IP即可,后續(xù)我們在說明這方面的知識。

示例工程

https://github.com/suisuisi/AXI4-Stream-FIR-filter

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22050

    瀏覽量

    618542
  • amd
    amd
    +關(guān)注

    關(guān)注

    25

    文章

    5589

    瀏覽量

    136378
  • 濾波器
    +關(guān)注

    關(guān)注

    162

    文章

    8138

    瀏覽量

    182084
  • FIR
    FIR
    +關(guān)注

    關(guān)注

    4

    文章

    151

    瀏覽量

    34268
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    835

    瀏覽量

    68784

原文標(biāo)題:示例工程

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    一文詳解Video In to AXI4-Stream IP核

    Video In to AXI4-Stream IP核用于將視頻源(帶有同步信號的時鐘并行視頻數(shù)據(jù),即同步sync或消隱blank信號或者而后者皆有)轉(zhuǎn)換成AXI4-Stream接口形式,實(shí)現(xiàn)了接口轉(zhuǎn)換。該IP還可使用VTC核,VTC在視頻輸入和視頻處理之間起橋梁作用。
    的頭像 發(fā)表于 04-03 09:28 ?1313次閱讀
    一文詳解Video In to <b class='flag-5'>AXI4-Stream</b> IP核

    請問AXI4-Stream到Video核心的技巧有什么?

    ,這是一個由數(shù)據(jù)視頻生成器卡攜帶的模塊。在這種情況下,我只使用了四個內(nèi)核來實(shí)現(xiàn)簡單設(shè)計(jì),即(1)。視頻輸入到Axi4-Stream核心,(2)視頻縮放核心,(3)。 AXI4-Stream到Video
    發(fā)表于 11-08 09:53

    axi4-stream互連問題如何解決

    你好,大家好。我正在使用EMI14.4和xc6v315t。我正在嘗試模擬IP CORE.It的axi4-stream interconnect.I配置ip為6siand 4mi。但是當(dāng)我用ismI模擬它時發(fā)現(xiàn)s_tready很低,有什么問題?
    發(fā)表于 06-18 15:08

    axi4-stream combiner問題的解決辦法?

    AXI4-Streamslave接口上TDATA信號的寬度(以字節(jié)為單位)。 AXI4-Stream主接口TDATA寬度是此值乘以從屬接口數(shù)參數(shù)。此參數(shù)是一個整數(shù),可以在0到(512 /從站接口數(shù))之間變化。設(shè)置為0以省略
    發(fā)表于 08-20 14:36

    AXI-stream數(shù)據(jù)傳輸過程

    的數(shù)據(jù)流標(biāo)識符。xilinx封裝的ip中沒有此信號?! ?.TDEST 用于提供路由信息,xilinx封裝的ip中沒有此信號?! ?0.TUSER AXI4協(xié)議留給用戶自定義的。xilinx封裝的ip中沒有
    發(fā)表于 01-08 16:52

    構(gòu)建自定義AXI4-Stream FIR濾波器的步驟

    1、?構(gòu)建自定義AXI4-Stream FIR濾波器  AMD-Xilinx 的 Vivado 開發(fā)工具具有很多方便FPGA開發(fā)功能,我最喜
    發(fā)表于 11-07 16:07

    自定義sobel濾波IP核,IP接口遵守AXI Stream協(xié)議

    自定義sobel濾波IP核 IP接口遵守AXI Stream協(xié)議
    的頭像 發(fā)表于 08-06 06:04 ?4286次閱讀

    AXI-Stream代碼

    AXI-Stream代碼詳解 AXI4-StreamAXI4的區(qū)別在于AXI4-Stream沒有ADDR接口,這樣就不涉及讀寫數(shù)據(jù)的概念了,只有簡單的發(fā)送與接收說法,減少了延時,允許
    的頭像 發(fā)表于 11-05 17:40 ?4207次閱讀
    <b class='flag-5'>AXI-Stream</b>代碼

    關(guān)于AXI4-Stream協(xié)議總結(jié)分享

    XI4-StreamAXI4的區(qū)別就是AXI4-Stream去除了地址線,這樣就不涉及讀寫數(shù)據(jù)的概念了,只有簡單的發(fā)送與接收說法,減少了延時。由于AXI4-Stream協(xié)議(amba
    的頭像 發(fā)表于 06-23 10:08 ?2668次閱讀

    AXI4-Stream Video 協(xié)議和AXI_VDMA的IP核介紹

    本文主要介紹關(guān)于AXI4-Stream Video 協(xié)議和AXI_VDMA的IP核相關(guān)內(nèi)容。為后文完成使用帶有HDMI接口的顯示構(gòu)建圖像視頻顯示的測試工程做準(zhǔn)備。
    的頭像 發(fā)表于 07-03 16:11 ?9728次閱讀

    AXI4 、 AXI4-Lite 、AXI4-Stream接口

    AXI4 是一種高性能memory-mapped總線,AXI4-Lite是一只簡單的、低通量的memory-mapped 總線,而 AXI4-Stream 可以傳輸高速數(shù)據(jù)流。從字面意思去理解
    的頭像 發(fā)表于 07-04 09:40 ?9699次閱讀

    ?構(gòu)建自定義AXI4-Stream FIR濾波器

    為了方便用戶進(jìn)行相關(guān)設(shè)計(jì),Vivado 提供了一個內(nèi)置的 IP 封裝編輯工具,它可以為 AXI IP 生成框架,只需將自己的 RTL 代碼插入其中。同時也提供了相關(guān)的驅(qū)動文件,可以在Vitis中方便調(diào)試。
    的頭像 發(fā)表于 11-07 09:25 ?785次閱讀

    在Vivado中構(gòu)建自定義AXI4-Stream FIR濾波器IP 1

    的圖形表示進(jìn)行設(shè)計(jì),在block design中使用 RTL 模塊的方便之處在于,它將自動檢測某些類型的信號,例如時鐘、復(fù)位和總線接口,然后,檢測這些信號進(jìn)行IP間的自動化連接。Vivado 中包含大量預(yù)構(gòu)建 IP 模塊(官方IP)。
    發(fā)表于 02-10 14:50 ?1291次閱讀
    在Vivado中<b class='flag-5'>構(gòu)建</b><b class='flag-5'>自定義</b><b class='flag-5'>AXI4-Stream</b> <b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>IP 1

    在Vivado中構(gòu)建自定義AXI4-Stream FIR濾波器IP 2

    的圖形表示進(jìn)行設(shè)計(jì),在block design中使用 RTL 模塊的方便之處在于,它將自動檢測某些類型的信號,例如時鐘、復(fù)位和總線接口,然后,檢測這些信號進(jìn)行IP間的自動化連接。Vivado 中包含大量預(yù)構(gòu)建 IP 模塊(官方IP)。
    的頭像 發(fā)表于 02-10 14:51 ?2457次閱讀
    在Vivado中<b class='flag-5'>構(gòu)建</b><b class='flag-5'>自定義</b><b class='flag-5'>AXI4-Stream</b> <b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>IP 2

    在Vivado中構(gòu)建自定義AXI4-Stream FIR濾波器IP 3

    的圖形表示進(jìn)行設(shè)計(jì),在block design中使用 RTL 模塊的方便之處在于,它將自動檢測某些類型的信號,例如時鐘、復(fù)位和總線接口,然后,檢測這些信號進(jìn)行IP間的自動化連接。Vivado 中包含大量預(yù)構(gòu)建 IP 模塊(官方IP)。
    發(fā)表于 02-10 14:51 ?1712次閱讀
    在Vivado中<b class='flag-5'>構(gòu)建</b><b class='flag-5'>自定義</b><b class='flag-5'>AXI4-Stream</b> <b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>IP 3