www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]前兩篇進(jìn)階文章主要講述了AHB slave的核心內(nèi)容,這篇來講AHB lite master的設(shè)計(jì)。

前兩篇進(jìn)階文章主要講述了AHB slave的核心內(nèi)容,這篇來講AHB lite master的設(shè)計(jì)。

AHB master主要用于一下三個(gè)方面:

1.計(jì)算模塊和crossbar的溝通橋梁,例如加速器模塊。

2.crossbar或者bridge的AHB master口,例如noc或者ahb matrix的ahb master口。

3.DMA模塊的AHB master口,用于讀取source數(shù)據(jù),并發(fā)送到target地址。

AHB master在整個(gè)SOC領(lǐng)域可以起到敲門磚的作用,掌握了它,對(duì)后續(xù)掌握其他模塊的設(shè)計(jì)非常有幫助。

1、輸入輸出接口

在設(shè)計(jì)某個(gè)模塊時(shí),首先需要理清它有哪些輸入輸出,從而對(duì)設(shè)計(jì)進(jìn)行一個(gè)整體了解。由于本文的讀寫模塊設(shè)計(jì)屬于比較基礎(chǔ)的AHB傳輸,不涉及突發(fā)傳輸、鎖定傳輸和從機(jī)的分塊傳輸。本設(shè)計(jì)的輸入有:hclk_i、irst_n、hgrant_i、hrdata_i、hready_i,輸出有:hwdata_o、htrans_o、hwrite_o、haddr_o、hbusreq_o。

2、狀態(tài)機(jī)設(shè)計(jì)

狀態(tài)機(jī)的設(shè)計(jì)比較重要,本設(shè)計(jì)的主狀態(tài)機(jī)是:空閑狀態(tài)、讀狀態(tài)、寫狀態(tài),從狀態(tài)機(jī)分為讀狀態(tài)機(jī)(rd_fsm_r)和寫狀態(tài)機(jī)(wr_fsm_r),讀狀態(tài)機(jī)和寫狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖如圖所示。

狀態(tài)機(jī)

根據(jù)AHB總線地址段和數(shù)據(jù)段的特性,可將其分為:空閑狀態(tài)、請(qǐng)求總線狀態(tài)、地址段狀態(tài)、讀/寫數(shù)據(jù)狀態(tài)和讀/寫最后一個(gè)字節(jié)狀態(tài)。注意:在狀態(tài)機(jī)中,何時(shí)有效很重要,從圖中可以看出,各狀態(tài)的觸發(fā)條件都有hready_i信號(hào)(由于hready_i信號(hào)是一直在變化的,可能前一個(gè)狀態(tài)hready_i信號(hào)為高,但后一個(gè)狀態(tài)會(huì)變低,不能使用軟件思維去思考。),其次,何時(shí)開始讀/寫數(shù)據(jù),何時(shí)數(shù)據(jù)讀/寫完成,這都是由計(jì)數(shù)器計(jì)數(shù)來決定的。

3、設(shè)計(jì)時(shí)序圖

讀寫過程比較類似,時(shí)序圖如圖所示:

讀寫時(shí)序圖

從圖中可以看出,地址與數(shù)據(jù)并非在同一周期(AHB總線的特性)。當(dāng)前周期的地址,存儲(chǔ)的數(shù)據(jù)在下一周期才會(huì)出現(xiàn)。這種地址和數(shù)據(jù)交疊出現(xiàn)使總線能進(jìn)行高性能操作的同時(shí),給從機(jī)也提供了足夠的時(shí)間來響應(yīng)傳輸。

4、基本代碼

狀態(tài)機(jī)邏輯:

至此,本文基于AHB總線的master讀寫設(shè)計(jì)就完成了。這是我很早之前設(shè)計(jì)的代碼了,可能存在一些小問題。

總結(jié)

為什么AHB master的學(xué)習(xí),這么重要呢?

就是因?yàn)樗淖饔?,初?之外,還有設(shè)計(jì)它所使用的基礎(chǔ)知識(shí)。如下圖:

AXI master場(chǎng)景1

我們接受的數(shù)據(jù)來自運(yùn)算單元,它給我們的內(nèi)容有,讀寫使能(doorbell),讀寫控制,包括burst類型,數(shù)據(jù)size,地址valid,以及握手信號(hào)。我們需要對(duì)這些數(shù)據(jù)進(jìn)行采樣,設(shè)計(jì)狀態(tài)機(jī)來保證AXI的時(shí)序,如果兩個(gè)模塊時(shí)鐘不一樣,我們還要進(jìn)行異步處理。

這是我在內(nèi)網(wǎng)很久之前練習(xí)的小設(shè)計(jì)。

基于FIFO的AHB LITE架構(gòu)圖

FIFO和axi master

設(shè)計(jì)思路

我們正常設(shè)計(jì)AHB master時(shí),因?yàn)橐С謆urst傳輸,所以數(shù)據(jù)是要緩存到同步FIFO中的,我們常用的設(shè)計(jì)思路如下:

-FIFO滿時(shí)發(fā)起AHB burst 寫,將FIFO清空。FIFO空時(shí)發(fā)起AHB burst讀,填滿FIFO。

-FIFO深度=burst length。

-FIFO寬度=AHB數(shù)據(jù)寬度。

-地址幀wr_req作為FIFO rd_en,讀取FIFO數(shù)據(jù),轉(zhuǎn)化為hwdata。

-數(shù)據(jù)幀將rd_vld作為we_en,將讀取的hrdata寫到FIFO。

代碼在下面圖中,有點(diǎn)不清晰,諒解,和之前的代碼相比,優(yōu)化了狀態(tài)機(jī),狀態(tài)機(jī)太多可讀性較差。

要點(diǎn)補(bǔ)充

只要設(shè)計(jì)的AXI master支持burst傳輸,前面一定有一個(gè)FIFO緩存數(shù)據(jù)。真正項(xiàng)目中,不一定時(shí)空滿時(shí)才發(fā)起AHB讀寫,一定會(huì)有預(yù)警信號(hào)。

并且真正設(shè)計(jì)時(shí)一定是兩個(gè)FIFO,我這里只是圖省事用了一個(gè)。

AXI master設(shè)計(jì)時(shí),難點(diǎn)是除了數(shù)據(jù)需要緩存,commands也需要緩存。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉