色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

基于AXI總線的加法器模塊解決方案

454398 ? 來源:csdn ? 作者:ChuanjieZhu ? 2020-12-23 15:32 ? 次閱讀

前面一節(jié)我們學(xué)會了創(chuàng)建基于AXI總線的IP,但是對于AXI協(xié)議各信號的時序還不太了解。這個實驗就是通過SDK和Vivado聯(lián)合調(diào)試觀察AXI總線的信號。由于我們創(chuàng)建的接口是基于AXI_Lite協(xié)議的,所以我們實際觀察到是AXI_Lite協(xié)議的信號時序。

具體做法是創(chuàng)建一個基于AXI總線的加法器模塊,在Vivado里將AXI總線添加到debug信號里,實際上是用邏輯分析儀探測信號,在SDK端通過debug方式依次寫入兩個加數(shù),由PL計算出和,我們讀出這個和打印到串口,這樣AXI總線的讀和寫就都能觀察到了。

板子使用的是zc702。

在觀察信號之前我們有必要簡單了解AXI是個什么:

AXI總線是一種高性能、高帶寬、低延遲的片內(nèi)總線,AXI協(xié)議描述了主從設(shè)備數(shù)據(jù)傳輸?shù)姆绞健V髟O(shè)備和從設(shè)備通過握手信號建立連接,握手信號包括主機發(fā)送的VALID信號,表示數(shù)據(jù)有效,從機發(fā)送的READY信號,表示從機準(zhǔn)備好了接收數(shù)據(jù)。當(dāng)VALID和READY都有效的時候傳輸開始。

Zynq使用的是AXI協(xié)議的4.0版本,由AMBA3.0協(xié)議發(fā)展而來:

AXI的三種總線各有各的用途:
AXI4支持突發(fā)數(shù)據(jù)傳輸,主要用于CPU訪問存儲等需要高速數(shù)據(jù)交互的場合,相當(dāng)于原來的AHB協(xié)議;

AXI_Lite一次傳輸單個數(shù)據(jù),主要用于訪問一些低速外設(shè),相當(dāng)于原來的APB;

AXI_Stream數(shù)據(jù)傳輸不需要地址,主設(shè)備直接連續(xù)讀寫數(shù)據(jù),主要用于高速流數(shù)據(jù)的傳輸,使用起來類似FIFO。

AXI4總線和AXI4-Lite總線具有相同的組成部分:
(1) 讀地址通道, 包含ARVALID, ARADDR, ARREADY信號;
(2) 讀數(shù)據(jù)通道, 包含RVALID, RDATA, RREADY, RRESP信號;
(3) 寫地址通道, 包含AWVALID, AWADDR, AWREADY信號;
(4) 寫數(shù)據(jù)通道, 包含WVALID, WDATA, WSTRB, WREADY信號;
(5) 寫應(yīng)答通道, 包含BVALID, BRESP, BREADY信號;
(6) 系統(tǒng)通道, 包含: ACLK, ARESETN信號。

幫助記憶:
讀地址信號都是以AR開頭(A: address; R: read)
寫地址信號都是以AW開頭(A: address; W: write
讀數(shù)據(jù)信號都是以R開頭(R: read)
寫數(shù)據(jù)信號都是以W開頭(W: write)
應(yīng)答信號都是以B開頭(B: back(answer back))

讀時序:

寫時序:

5個通道都有自己獨立的握手機制,同時又相互協(xié)作,地址線分離后,讀/寫可以并行交互數(shù)據(jù)。而且AXI支持地址pipeline、錯位傳輸?shù)饶J剑蟠筇岣吡藬?shù)據(jù)通路的利用率。

關(guān)于AXI Interconnect模塊:

AXI協(xié)議可以描述為主/從設(shè)備之間的點對點傳輸,可以有多個主機,也可以有多個從機,這是進行數(shù)據(jù)交互時,需要一個管理中心確保信號發(fā)到對應(yīng)的設(shè)備,AXI Interconnect模塊就是這樣一個管理中心,也叫做AXI互聯(lián)矩陣。它類似于一個交換機,保證每個外設(shè)獨享帶寬,完成數(shù)據(jù)傳輸。Xilinx公司為我們提供了AXI Interconnect的IP核。

介紹到此,理論部分已經(jīng)掌握i一二了,下面就開始實際觀察AXI的信號。

創(chuàng)建一個基于AXI_Lite總線的加法器IP

新建Vivado工程,依然,選擇這個:

修改名字和地址,我命名為AXI_Add,地址最好選擇工程路徑下新建一個文件夾,這樣就會自動把你創(chuàng)建的IP更新到IP庫里,其他默認(rèn),最后選擇Edit IP,在Vivado給出的代碼里添加上我們的加法器功能:

注意這些代碼就是定義AXI協(xié)議的工作方式的,里面有注釋,可以去研究一下!

添加用戶端口

這里我們沒有要輸出的信號

添加用戶邏輯:

待會我們將兩個加數(shù)寫到寄存器0和1中,從寄存器2中讀出和

封裝好后回到我們之前建的工程,

然后在工程里添加zynq核,添加剛才創(chuàng)建的IP,點擊自動連接,然后選中AXI總線,右擊選擇Make Debug,出現(xiàn)兩個綠色的小瓢蟲,將總線加入Debug模式下。

如果你沒有把剛才新建的IP放在該工程目錄下,先要把IP添加進庫里,選擇 Project Settings-->IP。點擊綠色的加號,選擇到你的用戶IP地址 :

o4YBAF9uHVuAKzGUAAERMik5j6o056.png

整個系統(tǒng)搭建完成是這樣的:

o4YBAF9uHV2AYd7qAAE-BadJ_Jo854.png

下面就是例行操作,自動排版,檢查,保存,復(fù)位,generate,產(chǎn)生頂層文件。然后先綜合(Synthesis)一下,綜合好后,打開Synthesis Design下的Set Up Debug,將顯示為紅色的無用信號刪除(選中,點擊紅色的減號),

pIYBAF9uHV-AcXdgAAE7sED2oA0079.png

設(shè)置采樣深度為1024,

pIYBAF9uHWGAeR9UAACy9TN9Ses728.png

其他默認(rèn),然后生成比特流文件。

軟件端的設(shè)計

Lanch到SDK,新建一個空的applicaton工程,添加一個c源文件,我們在xparameters.h文件中找到我們添加的加法器AXI_ADD的寄存器首地址,待會我們就是要通過地址對寄存器進行讀、寫:

o4YBAF9uHWKAKgUsAAA5SEoCAqE167.png

這個案例里我們計算16進制下的24+12=36,為了方便SDK端的斷點調(diào)試,加了while循環(huán),注釋我寫在后面了:
#include
#include "xparameters.h"
#include "xil_io.h"
#include "xil_types.h"

#define AXI_ADD_REG0 0 //寄存器0的偏移地址為0
#define AXI_ADD_REG1 4 //寄存器1的偏移地址為4
#define AXI_ADD_REG2 8 //寄存器2的偏移地址為8

int main(){
while(1){
u8 value = 0;
Xil_Out32(XPAR_AXI_ADD_V1_0_0_BASEADDR+AXI_ADD_REG0,0x24); //向寄存器0寫入第一個加數(shù)
Xil_Out32(XPAR_AXI_ADD_V1_0_0_BASEADDR+AXI_ADD_REG1,0x12); //向寄存器1寫入第二個加數(shù)
value = Xil_In32(XPAR_AXI_ADD_V1_0_0_BASEADDR+AXI_ADD_REG2); //從寄存器3中讀出和
xil_printf("value = %x",value);
}
return 0;
}

軟硬件聯(lián)合調(diào)試

右鍵工程 Debug as-->Debug Configrations:

o4YBAF9uHWSAfTZBAAGCKJa-qMc835.png

進入Debug界面后,在AXI總線讀、寫的地方添加斷點:

pIYBAF9uHWWAIGKeAABjsTwjDOo466.png

打開串口:

o4YBAF9uHWaALYTqAAAqc7VvEWA553.png

然后回到Vivado界面,連接到Device,就會自動打開調(diào)試界面:

pIYBAF9uHWiAfPy4AAAh6f1uUoo531.png

接下來是設(shè)置觸發(fā)位置,添加觸發(fā)條件:

pIYBAF9uHWyAAhkSAAPUyQ7qy9M583.png

我們的采樣深度是默認(rèn)的1024,在500的位置觸發(fā),

o4YBAF9uHW2AB6T8AAA2OzZygUQ657.png

觸發(fā)條件設(shè)置成WVALID信號為高時,AWVALID信號為高時:

o4YBAF9uHW6AW4yzAAAglAGFcak232.png

右鍵邏輯分析儀,選中Enable Auto Re-trigger,設(shè)置成自動進入下一次觸發(fā):

pIYBAF9uHXCAJuKNAAA4G07uVOk626.png

點擊運行觸發(fā),點擊完之后ila進入等待觸發(fā)狀態(tài):

o4YBAF9uHXGAMdK8AAAjE1P5AGU250.png

在SDK點擊運行:

o4YBAF9uHXKAZvWtAAASvJazISE412.png

首先寫入24:

o4YBAF9uHXOALypYAAB4b4le6c0775.png

有一點要注意,這里的寫地址VALID和READY信號是下一個地址的,這里就是對應(yīng)WDATA的4,而對應(yīng)地址0,也就是我們觀察的數(shù)據(jù)24地址的VALID和READY信號在前面已經(jīng)有效過了,我們設(shè)置寫數(shù)據(jù)有效時觸發(fā),而地址有效在前面就沒有捕捉到了。

然后寫入12:

o4YBAF9uHXWAV9zvAABvgy2gevk355.png

然后串口打印出36:

o4YBAF9uHXaAJetQAAAsPQEvdL0814.png

等到第二輪寫入的時候,我們看到讀數(shù)據(jù)通道上出現(xiàn)36:

o4YBAF9uHXiASy5VAACvGhEih8A502.png

我們可以換一下觸發(fā)信號,換成讀VALID,讀READY拉高時觸發(fā):

o4YBAF9uHXmAdFrqAAAd3B854Qs447.png

就可以看到,讀VALID和READY信號都高時,讀出36,讀地址線上是8:

o4YBAF9uHXqAPaKWAABsbdOmD-Q617.png

這里可以看到讀READY信號一直為高,讀VALID信號拉高時36讀入。但是由于ILA捕捉的是觸發(fā)時刻信號,所以它將讀有效之前的讀數(shù)據(jù)都顯示為36了。

大家要注意,觸發(fā)設(shè)置里,添加的信號默認(rèn)是AND的,如果你一開始就把讀有效為高,寫有效為高都添加到觸發(fā)列表里,會觀察不到信號,因為這兩個信號在本例子;里不會同時出現(xiàn):

pIYBAF9uHXuAd47UAAA5hgdI940792.png

我們可以添加讀VALID為1,寫VALID為1,然后選擇OR

pIYBAF9uHXyAZvdJAAAfE9IatCc783.png

SDK那邊一步步Debug,先是寫入24:

o4YBAF9uHX6AQ-lCAABpBPw3INo271.png

然后寫入12:

o4YBAF9uHX-AA59IAABouem-CtE971.png

然后讀到36:

pIYBAF9uHYCADlyoAABxDYm_1M8711.png

這里也是由于RREADY先于RVALID信號拉高,ILA捕捉不到READY是什么高的,就把之前都顯示為高。

如果沒有按你設(shè)置的運行,可以在SDK重新Debug as或者在Vivado重新連接一下Target,或者多點幾次Run Trigger,這軟件有時候不靈敏,比如說你雖然設(shè)置了自動進入下一次觸發(fā),但是它不一定就進入,這是手動點一下觸發(fā),進入等待模式,再點擊下一次Debug。

小結(jié)

到這里,AXI信號讀寫時序就全部觀察完了,這時候可以再去看一看AXI協(xié)議的理論部分,把封裝基于AX總線的IP時生成的例化代碼捋一遍,就能更好的理解AXI總線的工作原理了。提一句,我們目前觀察的都是簡化版的AXI_Lite協(xié)議的時序。
編輯:hfy


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

    關(guān)注

    6

    文章

    183

    瀏覽量

    30155
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    128

    瀏覽量

    16647
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    813

    瀏覽量

    66648
收藏 人收藏

    評論

    相關(guān)推薦

    運算放大器的同相加法器和反相加法器

      運算放大器構(gòu)成加法器 可以分為同相加法器和反相加法器
    發(fā)表于 08-05 17:17 ?3.2w次閱讀
    運算放大器的同相<b class='flag-5'>加法器</b>和反相<b class='flag-5'>加法器</b>

    加法器

    請問下大家,,進位選擇加法器和進位跳躍加法器的區(qū)別是啥啊?我用Verilog實現(xiàn)16位他們的加法器有什么樣的不同啊?還請知道的大神告訴我一下。。
    發(fā)表于 10-20 20:23

    什么是加法器加法器的原理是什么 ?

    什么是加法器加法器的原理是什么 反相加法器等效原理圖解析
    發(fā)表于 03-11 06:30

    加法器,加法器是什么意思

    加法器,加法器是什么意思 加法器 :  加法器是為了實現(xiàn)加法的。  即是產(chǎn)生數(shù)的和的裝置。加數(shù)和被加數(shù)為輸入,和數(shù)與
    發(fā)表于 03-08 16:48 ?5569次閱讀

    十進制加法器,十進制加法器工作原理是什么?

    十進制加法器,十進制加法器工作原理是什么?   十進制加法器可由BCD碼(二-十進制碼)來設(shè)計,它可以在二進制加法器的基礎(chǔ)上加上適當(dāng)?shù)摹靶U边壿媮韺崿F(xiàn),該校正邏
    發(fā)表于 04-13 10:58 ?1.4w次閱讀

    FPU加法器的設(shè)計與實現(xiàn)

    浮點運算器的核心運算部件是浮點加法器,它是實現(xiàn)浮點指令各種運算的基礎(chǔ),其設(shè)計優(yōu)化對于提高浮點運算的速度和精度相當(dāng)關(guān)鍵。文章從浮點加法器算法和電路實現(xiàn)的角度給出設(shè)計
    發(fā)表于 07-06 15:05 ?47次下載
    FPU<b class='flag-5'>加法器</b>的設(shè)計與實現(xiàn)

    8位加法器和減法器設(shè)計實習(xí)報告

    8位加法器和減法器設(shè)計實習(xí)報告
    發(fā)表于 09-04 14:53 ?134次下載

    同相加法器電路原理與同相加法器計算

    同相加法器輸入阻抗高,輸出阻抗低 反相加法器輸入阻抗低,輸出阻抗高.加法器是一種數(shù)位電路,其可進行數(shù)字的加法計算。當(dāng)選用同相加法器時,如A輸
    發(fā)表于 09-13 17:23 ?5.8w次閱讀
    同相<b class='flag-5'>加法器</b>電路原理與同相<b class='flag-5'>加法器</b>計算

    基于Skewtolerant Domino的新型高速加法器

    基于Skewtolerant Domino的新型高速加法器
    發(fā)表于 01-22 20:29 ?8次下載

    加法器設(shè)計代碼參考

    介紹各種加法器的Verilog代碼和testbench。
    發(fā)表于 05-31 09:23 ?19次下載

    加法器的原理及采用加法器的原因

    有關(guān)加法器的知識,加法器是用來做什么的,故名思義,加法器是為了實現(xiàn)加法的,它是一種產(chǎn)生數(shù)的和的裝置,那么加法器的工作原理是什么,為什么要采用
    的頭像 發(fā)表于 06-09 18:04 ?5198次閱讀

    鏡像加法器的電路結(jié)構(gòu)及仿真設(shè)計

    鏡像加法器是一個經(jīng)過改進的加法器電路,首先,它取消了進位反相門;
    的頭像 發(fā)表于 07-07 14:20 ?2944次閱讀
    鏡像<b class='flag-5'>加法器</b>的電路結(jié)構(gòu)及仿真設(shè)計

    同相加法器和反相加法器的區(qū)別是什么

    同相加法器和反相加法器是運算放大器在模擬電路設(shè)計中常用的兩種基本電路結(jié)構(gòu),它們在信號處理方面有著不同的特性和應(yīng)用場景。
    的頭像 發(fā)表于 05-23 14:35 ?2702次閱讀

    加法器的原理是什么 加法器有什么作用

    加法器是數(shù)字電路中的基本組件之一,用于執(zhí)行數(shù)值的加法運算。加法器的基本原理和作用可以從以下幾個方面進行詳細(xì)闡述。
    的頭像 發(fā)表于 05-23 15:01 ?3259次閱讀
    <b class='flag-5'>加法器</b>的原理是什么 <b class='flag-5'>加法器</b>有什么作用

    串行加法器和并行加法器的區(qū)別?

    串行加法器和并行加法器是兩種基本的數(shù)字電路設(shè)計,用于執(zhí)行二進制數(shù)的加法運算。它們在設(shè)計哲學(xué)、性能特點以及應(yīng)用場景上有著明顯的區(qū)別。
    的頭像 發(fā)表于 05-23 15:06 ?2730次閱讀
    主站蜘蛛池模板: 久艾草在线精品视频在线观看| 国产精品成人免费观看| 世界第一黄暴漫画家| 男人边吃奶边挵进去呻吟漫画 | 51精品国产AV无码久久久| 亚洲中文无码AV在线观看| 亚洲大片免费看| 午夜剧场1000| 性虎成人网| 二级特黄绝大片免费视频大片| 99久久精品6在线播放| 亚州视频一区| 欧美精品专区免费观看| 蜜桃久久久亚洲精品成人| 久久视热频国只有精品| 久久草这在线观看免费| 久久99热只有频精品| 久久黄色网址| 快播看av| 欧美z000z猪| 精品国产美女AV久久久久| 夫妻主vk| 国产精华av午夜在线观看| 国产精品亚洲在钱视频 | 日本久久不射| 色多多污污在线播放免费| 忘忧草在线社区WWW日本直播 | 国产69精品久久久久麻豆| 国产AV精品白浆一区二| 国产精品久久久久一区二区三区| 99免费在线观看视频| a在线观看视频| 成年女人免费影院播放| 国产精品7777人妻精品冫| 国精产品一区二区三区有限公司 | 久久人人爽人人片AV人成| 美女裸露100%奶头视频| 日本久久免费大片| 亚洲 欧美 制服 视频二区| 亚洲一级电影| 99久久国产露脸精品麻豆|