最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ZYNQ使用AXI-Lite協(xié)議實現(xiàn)PS與PL簡單通信

2023-07-14 21:13 作者:莫奈印象中的睡蓮  | 我要投稿

????AXI-Lite是AXI(Advanced eXtensible Interface)總線協(xié)議的一個簡化版本,主要用于連接低復雜性、低帶寬要求的外設和處理器之間的通信。與完整的AXI協(xié)議相比,AXI-Lite協(xié)議具有更少的信號和簡化的操作流程。

????本文測試板子為正點原子領航者ZYNQ 7020,通過對Xilinx內(nèi)部自定義AXI-lite IP核進行簡單修改,實現(xiàn)PL讀取PS端的DDR數(shù)據(jù),對數(shù)據(jù)進行處理后再寫入PS端的DDR,然后PS端在SDK內(nèi)讀取PL端寫入DDR的數(shù)據(jù)。本文僅當一個簡單測試記錄

????首先點擊Tools創(chuàng)建一個AXI-Lite IP核

????選擇創(chuàng)建一個AXI4類型的IP核

????IP核存放位置可以去掉../,存放在當前文件夾內(nèi)

????接口類型Lite,位寬只能選擇32Bits,Number of Registers是選擇定義多少個寄存器來從存儲PS與PL通信的數(shù)據(jù),一個寄存器可以存儲32Bits,這里我選擇25個數(shù)據(jù),其中24個寄存PS向PL發(fā)送的數(shù)據(jù),1個寄存PL向PS發(fā)送的數(shù)據(jù)。

????上一步點擊next后,選擇Edit IP再點擊Finish開始對該自定義IP核進行編輯

? ??????Vivado自動彈出IP核編輯窗口,這里一共兩個文件,上面的是頂層例化文件,下面是實現(xiàn)PS與PL通信的文件,主要在下面文件進行修改。

????打開第二個文件,在Users to add ports here這里添加接口,第一個data_in是接收PS發(fā)過來的24個11Bits數(shù)據(jù),我這里把11位數(shù)據(jù)的最高位作為數(shù)據(jù)有效信號(后面SDK的C語言代碼可以看出),當然也可以單獨發(fā)送一個data_valid,第二個data_out是PL向PS發(fā)送的一個16位數(shù)據(jù)。

? ??????接下來實在最后面添加自定義的邏輯,這里把24個PS發(fā)送到PL的32Bits數(shù)據(jù)的前11位拼接起來賦值給data_in,然后把PL端要發(fā)送到PS端的一個16位數(shù)據(jù)拼接成32Bits。

????接著把讀寫狀態(tài)代碼的冗余部分進行注釋,因為前0~23個寄存器是用來讀的,所以把第24個寫寄存器注釋掉

????這里讀狀態(tài)機對第24個寄存器讀也要注釋掉

????注釋完冗余的讀狀態(tài)內(nèi)的寫寄存器,再把寫狀態(tài)內(nèi)的讀寄存器注釋掉,只保留第24個寄存器是PL向PS寫數(shù)據(jù)。

????最后在頂層添加接口

????保存后,一次點擊下面完成IP核的封裝,再打包IP核

????創(chuàng)建一個Block Design,添加ZYNQ IP與上面自定義的AXI-Lite IP核,打開ZYNQ的UART通信接口(具體操作可以看正點原子領航則SDK指導教程)再配置好DDR類型

????在自動彈出的Address Editor內(nèi)可以更改寄存器的起始地址,這里使用默認起始地址

????整體Block Design,這里的top_bpnet是我寫的一個bp網(wǎng)絡,可以接收PS端發(fā)送的24個11Bits的溫度數(shù)據(jù)進行預測,預測的結(jié)果是一個16位的數(shù)據(jù)再發(fā)回到PS端,這里可以用自己寫的數(shù)據(jù)處理模塊。

????為了查看AXI-Lite協(xié)議的傳輸方式,可以對一些信號debug,選中三個數(shù)據(jù)線,右鍵debug

????進行自動debug連線后保存設計,把block design設為頂層最后生成bitstream

????????打開SDK,創(chuàng)建一個main.c文件,代碼也很簡單,主要通過調(diào)用Xil_In32與Xil_Out32兩個函數(shù)實現(xiàn)對DDR內(nèi)存的讀寫。

????打開串口調(diào)試,隨便發(fā)送1~24,串口返回一個預測數(shù)值

????轉(zhuǎn)到Vivado界面,寫入bitstream文件及debug文件,先查看PL從PS第去24個32Bits數(shù)據(jù),ILA觸發(fā)條件為WVALID與WREADY同時為高,即兩個信號成功握手

????在SDK內(nèi)使用串口發(fā)送0~24進行觸發(fā),可以看見AXI-Lite在WVALID與WREADY握手后,向地址0x04(注意這里的地址要加上基地址才是真正的地址)寫入1040,這里是1040是因為我把1*16+1024,這里加上1024是相當于把第11位置1充當有效信號。第二數(shù)據(jù)是向0x08寫入1056,對應SDK里的2*16+1024

????再把觸發(fā)條件換成RREADY與RVALID握手

????可以看到PL端向0x64地址寫入的數(shù)據(jù)是361,這里是0x64轉(zhuǎn)成十進制是100,因為每個數(shù)據(jù)是4Byte即32Bits,PL向PS寫數(shù)據(jù)是保存在第25個寄存器,映射在DDR的地址是25*4=100,

這里的寫入DDR的數(shù)據(jù)361除以16就是串口打印的22.562


ZYNQ使用AXI-Lite協(xié)議實現(xiàn)PS與PL簡單通信的評論 (共 條)

分享到微博請遵守國家法律
昂仁县| 于都县| 萝北县| 永丰县| 沂南县| 乌拉特前旗| 利津县| 呼玛县| 河北省| 榆林市| 罗江县| 汝州市| 安新县| 南川市| 缙云县| 阿坝| 阿克| 英超| 平远县| 虎林市| 东乌| 安溪县| 达尔| 房产| 武汉市| 赞皇县| 喀喇| 长兴县| 沾益县| 通化市| 自贡市| 突泉县| 忻城县| 英吉沙县| 贵溪市| 扬州市| 内乡县| 宣汉县| 昔阳县| 讷河市| 彩票|