資料介紹
描述
1. 背景
1A。概述
一個(gè)演示來(lái)說(shuō)明:
(1) 創(chuàng)建/封裝用于 SoC 設(shè)計(jì)的可編程邏輯 (PL) 的定制 IP
(2) 從 SoC 處理器系統(tǒng) (PS) 執(zhí)行內(nèi)存映射寄存器寫(xiě)入/讀取操作
我在這里使用了一塊帶有 Zynq FPGA 的 MiniZed 板,但這些概念適用于任何 SoC 設(shè)計(jì)。雖然這些都是比較基礎(chǔ)的概念,但還是有很多的看家步驟和設(shè)置。我使用 Vivado/Vitis 2020.2,但早期版本的 Vivado/SDK 的步驟也應(yīng)該非常相似。
根據(jù)需要使用下面的大綱跳過(guò);大膽的步驟突出了關(guān)鍵的設(shè)計(jì)項(xiàng)目。
1B。大綱
一、概述
2. Vivado - SoC 項(xiàng)目設(shè)置
2A。新項(xiàng)目創(chuàng)建
2B。塊設(shè)計(jì)設(shè)置
2C。自定義 IP 設(shè)置:指定 AXI 接口和內(nèi)存映射寄存器
3. Vivado - IP 編輯器項(xiàng)目
3A。Verilog Adder:加法器模塊的規(guī)范
3B。打包IP
4. Vivado - SoC 項(xiàng)目實(shí)施:在基礎(chǔ)項(xiàng)目中使用加法器
5. Vitis - 應(yīng)用項(xiàng)目設(shè)置
5A。最初設(shè)定
5B。創(chuàng)建一個(gè)隨機(jī)數(shù)加法應(yīng)用程序:C代碼和解釋
5C。運(yùn)行應(yīng)用程序:通過(guò) UART 查看結(jié)果
六、分析與結(jié)論
2. Vivado - SoC 項(xiàng)目設(shè)置
2A。新項(xiàng)目創(chuàng)建
1) 打開(kāi) Vivado。點(diǎn)擊create a new project,給它一個(gè)名字(例如ps_pl_demo),然后點(diǎn)擊next。
2) RTL Project -> 不指定來(lái)源,點(diǎn)擊next。
3) 從 Boards 選項(xiàng)卡中選擇您的板*,單擊下一步,然后單擊完成。
* 對(duì)于首次設(shè)置,您可能需要開(kāi)發(fā)套件的電路板定義文件。Minized位于“技術(shù)文檔”->“電路板定義文件”下。如果需要,下載并解壓縮該文件。開(kāi)發(fā)板的頂級(jí)目錄(本例中為minized/ )必須復(fù)制您的 Vivado 安裝目錄(例如/home/user/Applications/Xilinx/Vivado/2020.2/data/boards/board_files/ )。
2B。塊設(shè)計(jì)設(shè)置
1) 完成 Vivado 的新項(xiàng)目 GUI 后,您將進(jìn)入標(biāo)準(zhǔn)項(xiàng)目摘要頁(yè)面。從 Flow Navigator 窗格中單擊 Create Block Design。
![poYBAGNsUKKAKJUcAAAjZnSMh4s753.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUKKAKJUcAAAjZnSMh4s753.png)
2) 出現(xiàn)一個(gè)彈出窗口,要求輸入塊設(shè)計(jì)名稱:默認(rèn)名稱就可以了。
3) 現(xiàn)在出現(xiàn)“圖表”窗格。單擊“+”按鈕并在彈出菜單中雙擊“ZYNQ7 處理系統(tǒng)”。出現(xiàn) PS 塊:
![poYBAGNsUKmACVs7AAB2IS8fxIg824.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUKmACVs7AAB2IS8fxIg824.png)
2C。自定義 IP 設(shè)置
1) 現(xiàn)在,從頂部菜單欄中,單擊“工具 -> 創(chuàng)建和打包新 IP”。單擊下一步,然后在以下屏幕上單擊“創(chuàng)建新的 AXI4 外圍設(shè)備”并再次單擊下一步:
![pYYBAGNsUKuAOUgEAACbFiU0gns178.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsUKuAOUgEAACbFiU0gns178.png)
2) 在以下屏幕上,為 IP 命名。在這個(gè)演示中,我將展示一個(gè)簡(jiǎn)單的加法器,所以我的 IP 名稱是axi4l_adder 。請(qǐng)注意底部字段中的目錄位置,我們將很快導(dǎo)航到那里:
![poYBAGNsUK2AeshIAAByOcvflss177.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUK2AeshIAAByOcvflss177.png)
3)點(diǎn)擊下一步,出現(xiàn)如下頁(yè)面:
![pYYBAGNsULKAZhrVAAB9yi61NWk102.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsULKAZhrVAAB9yi61NWk102.png)
此演示的默認(rèn)設(shè)置很好。它們將在 PL 中生成四個(gè) 32 位寄存器。4*32 = 128 位,因此 PS 將能夠在此 PL 模塊中尋址 16 字節(jié)的內(nèi)存映射寄存器空間。
4) 單擊下一步并滾動(dòng)到“下一步”部分。選擇“編輯 IP”,然后單擊完成。將打開(kāi)一個(gè)新的 Vivado 項(xiàng)目。
3. Vivado - IP 編輯器項(xiàng)目
3A。Verilog 加法器
1) 我們將在這個(gè)新的 Vivado 項(xiàng)目中編輯axi4l_adder IP。默認(rèn)窗格應(yīng)包含所有先前的信息:
![pYYBAGNsULSAFm1tAAByRHpXOEM625.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsULSAFm1tAAByRHpXOEM625.png)
并且 Design Sources 窗格應(yīng)該包含一些自動(dòng)生成的 Verilog:
![poYBAGNsULaAHH5sAAAzVe21kAo265.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsULaAHH5sAAAzVe21kAo265.png)
2) 雙擊axi4l_adder_v1_0_S00_AXI.v ,Vivado 將打開(kāi)一個(gè)包含 HDL 源代碼的新選項(xiàng)卡。模塊 I/O 具有 AXI4-Lite 從接口的所有信號(hào);不要碰。四個(gè)預(yù)期的寄存器位于 I/O 區(qū)域下方:
![poYBAGNsULmAacLJAAAvaWhNSiY985.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsULmAacLJAAAvaWhNSiY985.png)
讓我們定義加法器的預(yù)期行為:
- slv_reg0 : 附加項(xiàng) 1,由 PS 編寫(xiě)
- slv_reg1 : 加法項(xiàng) 2,由 PS 編寫(xiě)
- slv_reg2 : 項(xiàng) 1 和 2 的總和,由 PL 計(jì)算
- slv_reg3 : 加法進(jìn)位,由 PL 計(jì)算
所以我們定義他們的權(quán)限:
![pYYBAGNsULyADlENAAAiY_gxbok758.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsULyADlENAAAiY_gxbok758.png)
回到 Verilog 文件中,在 reg 聲明下方,有自動(dòng)生成的進(jìn)程有助于 AXI 信號(hào)發(fā)送以及寄存器寫(xiě)入/讀取管理。我們需要做幾件事:(1) 防止 PS 寫(xiě)入 slv_reg2 和 slv_reg3,(2) 計(jì)算和并進(jìn)位 PL,(3) 將它們寫(xiě)入 slv_reg2 和 slv_reg3。
3) 為了防止 PS 寫(xiě)入禁止的寄存器,我們必須更新管理內(nèi)存映射寄存器寫(xiě)入的專用進(jìn)程。在第 210 行附近搜索注釋“// 實(shí)現(xiàn)內(nèi)存映射寄存器選擇和寫(xiě)入邏輯生成” 。注釋掉 slv_reg2 和 slv_reg3 分配,或完全刪除它們:
![poYBAGNsUL6AT11VAACOhrJ6bdQ585.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUL6AT11VAACOhrJ6bdQ585.png)
現(xiàn)在 PL 可以改為管理這些寄存器。
4) 返回到第 115 行左右。提供一種稱為sum的加法 reg 類型。它的大小將比slv_reg*信號(hào)大一位,以容納進(jìn)位位。
reg [C_S_AXI_DATA_WIDTH-0:0] sum;
5) 現(xiàn)在,導(dǎo)航到文件底部(“ //在此處添加用戶邏輯”)。創(chuàng)建一個(gè)計(jì)算 reg0 和 reg1 之和的進(jìn)程,然后寫(xiě)入slv_reg2&3。
// Add user logic here
always @( posedge S_AXI_ACLK )
begin
if ( S_AXI_ARESETN == 1'b0 )
begin
sum <= 0;
slv_reg2 <= 0;
slv_reg3 <= 0;
end
else begin
sum <= slv_reg0 + slv_reg1;
slv_reg2 <= sum[$high(sum)-1:0]; // lower 32 bits
slv_reg3[0] <= sum[$high(sum)]; // top carry bit
end
end
// User logic ends
粘貼此代碼后按 Ctrl+E。在源文件屬性窗格中,將類型:Verilog 更改為類型:SystemVerilog。這對(duì)于使用諸如 $high() 之類的系統(tǒng)調(diào)用是必要的。
保存文件,讓我們把 IP 包起來(lái)。
3B。打包IP
1) 返回“包 IP”選項(xiàng)卡。自從我們修改了 Verilog 源后,復(fù)選標(biāo)記已從“文件組”部分中刪除。點(diǎn)擊“合并更改”:
![poYBAGNsUMCAWne_AAClMzn19aY060.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUMCAWne_AAClMzn19aY060.png)
2) 現(xiàn)在在“Review”部分下,點(diǎn)擊“Re-package”:
![poYBAGNsUMKABEwLAACiyEvIzp0760.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUMKABEwLAACiyEvIzp0760.png)
3)現(xiàn)在應(yīng)該出現(xiàn)一個(gè)彈出窗口;關(guān)閉 IP 項(xiàng)目并返回 SoC 項(xiàng)目。
4. Vivado - SoC 項(xiàng)目實(shí)施
1) 回到 SoC 項(xiàng)目,我們可以使用新的 adder IP:
![pYYBAGNsUMSALWBSAAA1uU9vfpE234.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsUMSALWBSAAA1uU9vfpE234.png)
搜索 axi4l_adder,雙擊搜索結(jié)果,然后點(diǎn)擊“運(yùn)行連接自動(dòng)化”的綠色橫幅文本并使用默認(rèn)設(shè)置。此步驟通過(guò) AXI 互連模塊從 Zynq M_AXI_GP0 連接到加法器 IP。
然后單擊“運(yùn)行塊自動(dòng)化”并使用默認(rèn)設(shè)置。這一步對(duì)于在軟件開(kāi)發(fā)過(guò)程中使用 Zynq 的 UART1 接口是必要的。
2) 模塊設(shè)計(jì)應(yīng)填充 AXI 互連和復(fù)位管理器:
![pYYBAGNsUNCAD24RAABksEqt3c0703.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsUNCAD24RAABksEqt3c0703.png)
PS 的 M_AXI_GP0 應(yīng)連接到 AXI 互連,互連的 M00_AXI 應(yīng)連接到 AXI4L 加法器 IP。如果您在 PS 塊上看不到 M_AXI_GP0,則需要雙擊該塊并在“AXI Non Secure Enablement”下拉列表下的 PS-PL 配置選項(xiàng)卡上選擇“M AXI GP0 接口”。
3) 在地址編輯器選項(xiàng)卡(“窗口”->“地址編輯器”)中,您應(yīng)該看到列出的加法器 IP:
![poYBAGNsUNeASCkzAABguQmPznk841.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUNeASCkzAABguQmPznk841.png)
4) 按 F6 鍵驗(yàn)證模塊設(shè)計(jì)。
5) 在 Sources 窗格中的 Design Sources 下,右鍵單擊 .bd 文件并選擇“Create HDL wrapper”->“Let Vivado manage and auto-update”。
6) 點(diǎn)擊“Generate Bitstream”按鈕(或“Flow”->“Generate Bitstream”)讓綜合和實(shí)現(xiàn)運(yùn)行。因?yàn)檫@是一個(gè)簡(jiǎn)單的 PS 項(xiàng)目,所以不需要 Vivado 約束。在設(shè)計(jì)運(yùn)行下,您將看到 OOC 運(yùn)行下的加法器 IP:
![pYYBAGNsUNmATnQ4AAB7vb8wSr0824.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsUNmATnQ4AAB7vb8wSr0824.png)
7) 一旦比特流生成完成,關(guān)閉彈出窗口并導(dǎo)航到“文件”->“導(dǎo)出”->“導(dǎo)出硬件”。在歡迎屏幕上點(diǎn)擊下一步。在以下屏幕上,選擇“包括比特流”。為硬件規(guī)范命名,并將其保存在 SoC 項(xiàng)目目錄中。輸出是在下面的 Vitis 中使用的 XSA 文件。
5. Vitis - 應(yīng)用項(xiàng)目
5A。最初設(shè)定
1) [可選] 創(chuàng)建一個(gè) Vitis 工作區(qū)文件夾(例如,在 SoC 項(xiàng)目文件夾中)。
![pYYBAGNsUNuAZ-4NAABk_qEDeOk951.png](https://file.elecfans.com/web2/M00/79/E6/pYYBAGNsUNuAZ-4NAABk_qEDeOk951.png)
2) 在 Vivado 中,點(diǎn)擊“工具”->“啟動(dòng) Vitis IDE”
3) Vitis 可以加載到歡迎屏幕,也可以在之前的工作區(qū)中開(kāi)始。如果它從前一個(gè)工作區(qū)開(kāi)始,點(diǎn)擊“文件”->“切換工作區(qū)”并指向新目錄[也是可選的]。
4) 單擊創(chuàng)建應(yīng)用程序項(xiàng)目(“文件”->“新建”->“應(yīng)用程序項(xiàng)目”)。在歡迎頁(yè)面點(diǎn)擊下一步。
5) 在平臺(tái)頁(yè)面上,單擊“從硬件創(chuàng)建新平臺(tái) (XSA)”選項(xiàng)卡?,F(xiàn)在瀏覽以選擇從 Vivado 導(dǎo)出的 XSA 文件。
![poYBAGNsUN-AJqaaAABf4Ti-fbc154.png](https://file.elecfans.com/web2/M00/79/56/poYBAGNsUN-AJqaaAABf4Ti-fbc154.png)
6)我們將添加一些隨機(jī)數(shù)。創(chuàng)建一個(gè)名為rn_addition的新應(yīng)用程序項(xiàng)目,然后單擊 Next。
![poYBAGOIGbCAZTfBAACTMdi10-w278.png](https://file.elecfans.com/web2/M00/7E/F6/poYBAGOIGbCAZTfBAACTMdi10-w278.png)
7)在下一頁(yè)“域”上,默認(rèn)設(shè)置就可以了。
8) 在“模板”頁(yè)面上,選擇 Hello World 模板并點(diǎn)擊完成。
9) 現(xiàn)在在 Vitis 資源管理器中,選擇 Application Project settings entry (rn_addition.prj) 并單擊“Navigate to BSP settings”,
![poYBAGOIGbSANwg7AAB9kUh22gk922.png](https://file.elecfans.com/web2/M00/7E/F6/poYBAGOIGbSANwg7AAB9kUh22gk922.png)
10) 現(xiàn)在點(diǎn)擊“修改 BSP 設(shè)置”:
![poYBAGOIGbaASyK0AABOFxPdseI976.png](https://file.elecfans.com/web2/M00/7E/F6/poYBAGOIGbaASyK0AABOFxPdseI976.png)
11) 在“Standalone”選項(xiàng)卡下,將 stdout 設(shè)置為 ps7_uart1。這可以使用 Zynq 的 UART 進(jìn)行軟件打印。單擊確定并返回到應(yīng)用程序項(xiàng)目設(shè)置選項(xiàng)卡。
![pYYBAGOIGbiAfh4ZAACwXntBVqo185.png](https://file.elecfans.com/web2/M00/7F/82/pYYBAGOIGbiAfh4ZAACwXntBVqo185.png)
12) 在應(yīng)用程序項(xiàng)目設(shè)置選項(xiàng)卡上,單擊硬件規(guī)格:
![pYYBAGOIGbuAKMfLAABAuv5V8Pk555.png](https://file.elecfans.com/web2/M00/7F/82/pYYBAGOIGbuAKMfLAABAuv5V8Pk555.png)
13) 在結(jié)果選項(xiàng)卡中,AXI4L 加法器應(yīng)位于地址映射中:
![poYBAGOIGb2ATXvrAAA2ESquOq8477.png](https://file.elecfans.com/web2/M00/7E/F6/poYBAGOIGb2ATXvrAAA2ESquOq8477.png)
5B。創(chuàng)建隨機(jī)數(shù)加法應(yīng)用程序
1) 現(xiàn)在我們可以做一些有用的事情了。在 Vitis 資源管理器窗格中,展開(kāi)src 。將helloworld.c重命名為rn_main.c并雙擊進(jìn)行編輯。
![pYYBAGOIGcOADxmmAAA29T5sn1Q031.png](https://file.elecfans.com/web2/M00/7F/83/pYYBAGOIGcOADxmmAAA29T5sn1Q031.png)
將 helloworld 代碼替換為以下內(nèi)容:
// J. Abate '21
#include
#include // for random number function
#include // for sleep function
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"
#define ADDER_b 0x43C00000
#define REG_0_o 0x0
#define REG_1_o 0x4
#define REG_2_o 0x8
#define REG_3_o 0xC
int main()
{
init_platform();
print("\nps7_uart_1 @ 115200 baud\n\n\r");
// random numbers; bottom and top of range
u32 rn_lo = 0x40000000, rn_hi = 0xBFFFFFFF;
// register data
u16 test_count = 1;
u32 slv_reg0_wdata = 0xFFFFFFFF;
u32 slv_reg0_rdata;
u32 slv_reg1_wdata = 0x1;
u32 slv_reg1_rdata;
u32 slv_reg2_rdata;
u8 slv_reg3_rdata;
while(1)
{
xil_printf("test #%d\n\r", test_count);
// Write then read slv_reg0
Xil_Out32(ADDER_b + REG_0_o, slv_reg0_wdata);
slv_reg0_rdata = Xil_In32(ADDER_b + REG_0_o);
xil_printf("slv_reg0 [w]|[r] = 0x%08X | 0x%08X (%u) \n\r", slv_reg0_wdata, slv_reg0_rdata, slv_reg0_rdata);
// Write then read slv_reg1
Xil_Out32(ADDER_b + REG_1_o, slv_reg1_wdata);
slv_reg1_rdata = Xil_In32(ADDER_b + REG_1_o);
xil_printf("slv_reg1 [w]|[r] = 0x%08X | 0x%08X (%u) \n\r", slv_reg1_wdata, slv_reg1_rdata, slv_reg1_rdata);
// Read slv_reg2&3
slv_reg2_rdata = Xil_In32(ADDER_b + REG_2_o);
slv_reg3_rdata = Xil_In8(ADDER_b + REG_3_o);
xil_printf("sum [r] | c [r] = 0x%08X | 0x%01X (%u) \n\n\r", slv_reg2_rdata, slv_reg3_rdata, slv_reg2_rdata);
// update terms for next iteration and increment the test count
slv_reg0_wdata = ( rand() % (rn_hi - rn_lo + 1) ) + rn_lo;
slv_reg1_wdata = ( rand() % (rn_hi - rn_lo + 1) ) + rn_lo;
test_count += 1;
sleep(10);
}
cleanup_platform();
return 0;
}
2)代碼解釋。我包括以下文件:
- rand() 函數(shù)的 stdlib.h
- unistd.h 用于 sleep() 函數(shù)
- xil_io.h用于內(nèi)存映射寄存器 R/W 函數(shù) Xil_In() 和 Xil_Out()
然后我定義要使用的內(nèi)存地址。Vivado 地址編輯器和 Vitis 地址映射在基址 0x43C00000(偏移量 0x0 到 0xFFFF)處為加法器 IP 保留 64KB 地址。
但是,請(qǐng)記住,加法器 IP 只有四個(gè) 32 位寄存器,總共 16 個(gè)字節(jié)(0x0 到 0xF):
- slv_reg0(偏移量 0x0 到 0x3):在此處寫(xiě)入第一個(gè)加法項(xiàng)
- slv_reg1(偏移量 0x4 到 0x7):在此處寫(xiě)入第二個(gè)加法項(xiàng)
- slv_reg2(偏移量 0x8 到 0xB):在此處讀取總和
- slv_reg3 (offsets 0xC to 0xF): 在這里讀取進(jìn)位位
![pYYBAGOIGcWAcIAUAAAui5iCCCg929.png](https://file.elecfans.com/web2/M00/7F/83/pYYBAGOIGcWAcIAUAAAui5iCCCg929.png)
在 while(1) 循環(huán)中,Xil_Out() 和 Xil_In() 語(yǔ)句管理每個(gè)寄存器的寫(xiě)入/讀取。
5C。運(yùn)行應(yīng)用程序
1) 返回 Vitis 資源管理器窗格,折疊所有展開(kāi)的條目。突出顯示平臺(tái)項(xiàng)目和應(yīng)用程序項(xiàng)目,然后右鍵單擊并點(diǎn)擊“構(gòu)建項(xiàng)目”。構(gòu)建完成后,點(diǎn)擊 Bug 按鈕旁邊的下拉菜單,然后單擊 Debug Configurations。
![pYYBAGOIGceAEfqrAAAZbylpIVY378.png](https://file.elecfans.com/web2/M00/7F/83/pYYBAGOIGceAEfqrAAAZbylpIVY378.png)
2) 在出現(xiàn)的彈出窗口中,雙擊“System Project Debug”并移動(dòng)到 Target Setup 選項(xiàng)卡。確保選擇“Program FPGA”,然后點(diǎn)擊 Debug 關(guān)閉彈出窗口。
![poYBAGOIM1CACUQOAACOFZB_f1k341.png](https://file.elecfans.com/web2/M00/7F/01/poYBAGOIM1CACUQOAACOFZB_f1k341.png)
3) 現(xiàn)在,將 USB 電纜從計(jì)算機(jī)連接到 MiniZed 的 USB/JTAG/UART 端口。以 115200 波特率打開(kāi)與 MiniZed UART 的串行會(huì)話:
![pYYBAGOIM1OAN4IoAABWMQQjlXU493.png](https://file.elecfans.com/web2/M00/7F/8D/pYYBAGOIM1OAN4IoAABWMQQjlXU493.png)
4) 回到 Vitis,點(diǎn)擊運(yùn)行按鈕:
![poYBAGOIM1WAaNCjAAAPyq2jplA182.png](https://file.elecfans.com/web2/M00/7F/01/poYBAGOIM1WAaNCjAAAPyq2jplA182.png)
5) 在串行會(huì)話中,您應(yīng)該會(huì)看到類似這樣的打?。?/font>
![pYYBAGOIM1eAVBTBAABychSplTo879.png](https://file.elecfans.com/web2/M00/7F/8D/pYYBAGOIM1eAVBTBAABychSplTo879.png)
每個(gè)測(cè)試顯示以下內(nèi)容:
- 測(cè)試ID#
- 寫(xiě)入 slv_reg0 和 slv_reg1 的項(xiàng),在每個(gè)等號(hào)的右側(cè)
- 從 slv_reg0 和 slv_reg1 讀取的術(shù)語(yǔ)位于每個(gè)管道符號(hào)的右側(cè)(括號(hào)中為無(wú)符號(hào))。
- 從 slv_reg2 和 slv_reg3 讀回的總和和進(jìn)位結(jié)果(括號(hào)中的無(wú)符號(hào)總和)。
第一個(gè)測(cè)試是硬編碼的,以顯示從進(jìn)位寄存器成功讀取。隨后的測(cè)試是偽隨機(jī)的。
六、分析與結(jié)論
此演示展示了使用 PS 中的 Xil_In() 和 Xil_Out() 通過(guò) AXI4-Lite 接口傳輸 PS-PL 數(shù)據(jù)。每當(dāng) PS 發(fā)出 Xil_Out() 以在 slv_reg0 或 slv_reg1 寫(xiě)入新項(xiàng)時(shí),PL總是更新 slv_reg0 和 slv_reg1 項(xiàng)的總和。
在 PS 寫(xiě)入任一項(xiàng)之后的第一個(gè)時(shí)鐘周期,PL 計(jì)算新的總和。在第二個(gè)時(shí)鐘周期,它用和結(jié)果更新 slv_reg3,用進(jìn)位結(jié)果更新 slv_reg4。與 Xil_Out32() 到 slv_reg1 和 slv_reg2 的 Xil_In32() 之間經(jīng)過(guò)的時(shí)間相比,該延遲很?。▋蓚€(gè) FCLK_0 周期 = 40 ns)。從這個(gè)意義上說(shuō),此演示假定 PL 在 PS 讀取 slv_reg2 和 slv_reg3 時(shí)始終具有有效結(jié)果。
- TPS659037寄存器映射技術(shù)參考手冊(cè)
- LMX2820寄存器映射
- LMX1204寄存器映射
- ZMID4200 寄存器映射
- ZMID4200 寄存器映射
- STM32-寄存器地址名稱映射分析
- STM32F103系列芯片的地址和寄存器映射原理、LED輪流閃爍實(shí)現(xiàn)
- STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化
- 寄存器的名稱和地址的映射詳細(xì)資料分析
- 如何進(jìn)行寄存器名稱和地址的映射分析
- HELLODSP中F2812寄存器速查 14次下載
- 多寄存器Load/Store內(nèi)存訪問(wèn)指令 1次下載
- 移位寄存器及其應(yīng)用實(shí)驗(yàn) 22次下載
- 寄存器與移位寄存器
- 集成移位寄存器
- 寄存器和內(nèi)存的區(qū)別 2462次閱讀
- ARM通用寄存器及狀態(tài)寄存器詳解 7290次閱讀
- CPU、寄存器和內(nèi)存單元的物理結(jié)構(gòu) 4334次閱讀
- FPGAs,Zynq和Zynq MPSoC器件的特點(diǎn) 2671次閱讀
- ZYNQ7020的PS端的基本開(kāi)發(fā)流程 8209次閱讀
- 寄存器與內(nèi)存的區(qū)別 1w次閱讀
- 計(jì)算機(jī)中內(nèi)存、cache和寄存器之間的關(guān)系 5752次閱讀
- 寄存器變量 2403次閱讀
- 寄存器比內(nèi)存快的原理是什么? 5311次閱讀
- Linux驅(qū)動(dòng)開(kāi)發(fā)筆記:對(duì)zynq PL部分IP核的驅(qū)動(dòng)開(kāi)發(fā)過(guò)程 9710次閱讀
- zynq中PL部分的物理地址操作函數(shù) 7103次閱讀
- 逆向基礎(chǔ)之寄存器和內(nèi)存詳解 2998次閱讀
- 為什么寄存器比內(nèi)存快_原因是這個(gè) 7130次閱讀
- Zynq PS/ PL第五篇:Adam Taylor MicroZed系列之25 613次閱讀
- Zynq PS / PL 第四篇:Adam Taylor MicroZed系列之 24 1153次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論