<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > FPGA工程師的研發(fā)之道――總線的研究

          FPGA工程師的研發(fā)之道――總線的研究

          作者: 時(shí)間:2016-10-18 來源:網(wǎng)絡(luò) 收藏

          如果設(shè)計(jì)中有多個(gè)模塊,每個(gè)模塊內(nèi)部有許多寄存器或者存儲(chǔ)塊需要配置或者提供讀出那么實(shí)現(xiàn)方式有多種,主要如下:

          本文引用地址:http://www.ex-cimer.com/article/201610/308474.htm

          實(shí)現(xiàn)方式一:可以在模塊頂部將所有寄存器引出,提供統(tǒng)一的模塊進(jìn)行配置和讀出。這種方式簡(jiǎn)單是簡(jiǎn)單,但是頂層連接工作量較大,并且如果配置個(gè)數(shù)較多,導(dǎo)致頂層中寄存器的數(shù)目也會(huì)較多。

          實(shí)現(xiàn)方式二:通過進(jìn)行連接,為每個(gè)模塊分配一個(gè)地址范圍。這樣寄存器等擴(kuò)展就可以在模塊內(nèi)部進(jìn)行擴(kuò)展,而不用再頂層進(jìn)行過多的頂層互聯(lián)。如下圖所示:

          總線

          那如果進(jìn)行的選擇,那么有一種極為簡(jiǎn)單的推薦被使用,那就是AVALON-MM的總線

          ALTERA提出兩種總線類型,分別是AVALON-MM,

          AVALON-ST。分別用于連接memeory 和數(shù)據(jù)流的傳送

          MM不是你想的意思,其英文為memory map。實(shí)現(xiàn)內(nèi)存映射是其主要目的。主要信號(hào)包括如下表所示:

          內(nèi)存映射

          AVALON因此可以說是最簡(jiǎn)單實(shí)用的總線形態(tài)了。對(duì)于其操作來說,總線為同步類型的總線,寫信號(hào)只需要在寫使能有效時(shí),同時(shí)提供寫數(shù)據(jù)即可,而讀數(shù)據(jù)等待信號(hào)無效時(shí),讀出數(shù)據(jù)有效。

          同樣數(shù)據(jù)類型讀數(shù)據(jù)(readdata)和寫數(shù)據(jù)(writedata)的寬度可以根據(jù)設(shè)計(jì)的需要靈活配置為(8,16,32----256---1024)BIT等值。即可以支持非常大的位寬,但普通應(yīng)用,只需要(8,16,32,64)BIT等即可滿足應(yīng)用。

          那假設(shè)總線寬度32,基本上主流的數(shù)據(jù)總線的寬度。如果需要更細(xì)粒度的劃分,確定讀寫某個(gè)字節(jié)有效,那么byteenable信號(hào)也是必須的。其需要4bit來標(biāo)示32bit(4個(gè)byte)中那個(gè)有效,每一BIT表示一個(gè)字節(jié),因此如果要完全表示所有的字節(jié)有效,因此字節(jié)有效信號(hào)的寬度為(數(shù)據(jù)總線的寬度/8)。AVALON還可以有burst的操作。主設(shè)備可以通過burstcount設(shè)備確定brust的長(zhǎng)度,為2的n-1次方。

          對(duì)于普通的應(yīng)用,通過上述表格中的基本操作即可滿足需求,這也正是AVALON-mm總線的優(yōu)勢(shì)。此外模塊按此標(biāo)準(zhǔn)提供連接接口,各種模塊可以掛在NIOSII的片上系統(tǒng)上。

          如果模塊之間為點(diǎn)對(duì)點(diǎn)的連接,同時(shí)傳遞大數(shù)據(jù)量的操作,那么的AVALON-mm總線就不太適合,因此AVALON_streaming總線就適合這種應(yīng)用場(chǎng)景。

          AVALON_streaming總線本質(zhì)上是一種同步并行總線,即在同步時(shí)鐘狀態(tài)下,使能有效代表傳遞數(shù)據(jù)有效。其基本信號(hào)如下表所示:

          內(nèi)存映射
          總線

          從上圖中,可以看出各信號(hào)在數(shù)據(jù)傳輸中的作用,對(duì)于從設(shè)備獲取數(shù)據(jù)的處理,就是VALID有效時(shí),數(shù)據(jù)有效的采樣操作,非常簡(jiǎn)單方便,易于處理。如果從設(shè)備設(shè)定ready永為1,則表示沒有反壓的機(jī)制,則主設(shè)備,可根據(jù)自身收包情況一直向從設(shè)備發(fā)送數(shù)據(jù)包。此外還有其他輔助信號(hào),可以根據(jù)設(shè)計(jì)需要進(jìn)行添加。

          使用總線使模塊標(biāo)準(zhǔn)化,便于代碼的移植和設(shè)計(jì)復(fù)用。同時(shí)標(biāo)準(zhǔn)總線的設(shè)定和統(tǒng)一定義也利于項(xiàng)目團(tuán)隊(duì)代碼的標(biāo)準(zhǔn)化,便于理解和傳播。

          下文將介紹兩種其他應(yīng)用較廣的總線形態(tài),AHB(AMBA)如果說在PC時(shí)代,壟斷PC江湖的是WINTEL(微軟和英特爾),那么在移動(dòng)互聯(lián)網(wǎng)時(shí)代,最具有這個(gè)潛質(zhì)的就是谷歌的andriod操作系統(tǒng)和ARM芯片?;贏RM公司授權(quán)的各型ARM處理器,基本上在各型嵌入式終端設(shè)備占據(jù)了壟斷地位。“背靠大樹好乘涼”,因此,用于作為ARM處理做片上系統(tǒng)互聯(lián)的AMBA總線標(biāo)準(zhǔn)亦成為業(yè)界應(yīng)用最廣泛的標(biāo)準(zhǔn)。

          AMBA總線事實(shí)上為三個(gè)總線標(biāo)準(zhǔn)的合集,分別是AHB、ASB、APB。ASB已逐漸被AHB所取代,現(xiàn)在使用最廣泛的為AHB和APB總線,以及最新的擴(kuò)展AXI總線。實(shí)際上,現(xiàn)今系統(tǒng)設(shè)計(jì)中,經(jīng)常會(huì)借鑒AHB或APB總線標(biāo)準(zhǔn),用于設(shè)計(jì)各種IP和片內(nèi)模塊之間的互聯(lián)。首先來說AHB和APB總線,一家公司為什么會(huì)退出有兩種類型總線,這是因?yàn)锳HB一般認(rèn)為其具備更高的性能和總線吞吐能力,而APB為低速總線,用于連接低速外設(shè)。兩種總線互補(bǔ),能夠在性能和功耗方面進(jìn)行互補(bǔ)。

          總線

          如上圖所示

          :AHB總線與APB總線在一個(gè)嵌入式系統(tǒng)中的應(yīng)用場(chǎng)景。

          分別用于連接低速設(shè)備和高速設(shè)備。下表列舉其一些主要的差別。

          總線

          作為單次傳輸來說,AHB與APB的主要區(qū)別在AHB周期不固定,操作完成標(biāo)示由從設(shè)備返回hready標(biāo)示,而APB周期固定。作為burst傳輸來說,AHB支持增量和回環(huán)兩種方式的突發(fā)。舉例說,增量就是挨個(gè)地址自加,如總線寬度為32,地址每次自加4(字節(jié))。而回環(huán),比如當(dāng)前地址為0xA4,而回環(huán)突發(fā)操作位0xA4, 0xA8, 0xAC, 0xA0。這種突發(fā)方式對(duì)于一些cache讀寫內(nèi)存是非常有用的,這樣可以把0xA0-0xA15十六個(gè)內(nèi)存地址一次性讀出。如果設(shè)計(jì)一條這樣的cache line,地址0xA0-0xA15其高位地址一致,便于匹配,這樣這16個(gè)字節(jié)可以通過一次突發(fā)就能全部填滿。(即回環(huán)這種設(shè)計(jì)與處理器的cache結(jié)構(gòu)是相關(guān)的,現(xiàn)在的cache line有逐漸擴(kuò)大的趨勢(shì),一般64字節(jié)也較為常見)。

          由于支持多個(gè)主設(shè)備和多個(gè)從設(shè)備進(jìn)行交互,那么對(duì)于多個(gè)主設(shè)備之間就存在競(jìng)爭(zhēng)。(從設(shè)備之間存在競(jìng)爭(zhēng)否?從設(shè)備之間是通過地址區(qū)分的,被動(dòng)接受主設(shè)備的訪問,不會(huì)存儲(chǔ)競(jìng)爭(zhēng)的問題。)因此如何解決競(jìng)爭(zhēng),那就需要仲裁,即主設(shè)備誰需要訪問總線,則發(fā)起HBUSREQ,而仲裁器收到HBUSREQ,返回給相應(yīng)主設(shè)備HGRANT。此時(shí)該設(shè)備才能訪問總線。除此之外AHB還有其他一些信號(hào),用于輔助整個(gè)系統(tǒng)的傳輸,感興趣的同志,可以看一下AMBA的總線規(guī)范。值得一提的是,作為一個(gè)總線規(guī)范,其提供了全集的解決方案,而作為實(shí)現(xiàn)部分,只需要在滿足規(guī)范的前提下,實(shí)現(xiàn)必要的功能即可,例如AHB總線中規(guī)定,其突發(fā)最大可1K字節(jié),但是作為一個(gè)從設(shè)備,不一定需要支持這么大的操作,即實(shí)現(xiàn)功能可在總線框架內(nèi)進(jìn)行裁剪,選擇實(shí)現(xiàn)支持的類型即可。

          內(nèi)部設(shè)計(jì)中,經(jīng)常有多個(gè)主設(shè)備訪問同一從設(shè)備的例子,例如內(nèi)部多個(gè)模塊都需要訪問外部存儲(chǔ)器,其實(shí)現(xiàn)方式有多種,通過AHB的連接架構(gòu),可以實(shí)現(xiàn)一個(gè)標(biāo)準(zhǔn)、可擴(kuò)展的接口單元,用于訪問外部存儲(chǔ)器。并且可以作為IP使用。AHB從設(shè)備只需要根據(jù)需要,支持某些burst傳輸即可。

          總線

          隨著SOC(片上系統(tǒng)的發(fā)展),對(duì)于高帶寬、低延時(shí)的總線需求更加迫切,ARM公司適時(shí)退出AXI(AMBA3.0)作為擴(kuò)展。

          總線
          總線

          上圖分別是AXI接口的讀寫操作,分別可以看出,對(duì)于AXI總線來說,其有5組獨(dú)立的總線,分別是寫地址,寫數(shù)據(jù),寫響應(yīng),讀地址,讀數(shù)據(jù)信號(hào)。地址和數(shù)據(jù)信號(hào)分開,每組都有自己的控制信號(hào)。

          每個(gè)通道中間沒有時(shí)序關(guān)聯(lián),如何進(jìn)行操作的?舉例來說明,例如讀數(shù)據(jù)操作,實(shí)際上,主設(shè)備向從設(shè)備中寫了一個(gè)讀的命令,包括讀地址,burst大小,方式等。收到后從設(shè)備按照相應(yīng)的命令讀取相應(yīng)大小的數(shù)據(jù),傳回主設(shè)備,其操作可以簡(jiǎn)化的看做兩個(gè)緩沖區(qū)類型的操作,主設(shè)備將讀命令寫入從設(shè)備的命令緩沖區(qū),從設(shè)備取出后,根據(jù)命令將相應(yīng)的數(shù)據(jù)返回給主設(shè)備的接收緩沖區(qū)中。這種操作的好處顯而易見,能夠最大限度的減少總線的開銷,因此其讀與讀操作之間獨(dú)立,不用等待讀回,就可以發(fā)送下一次的讀信號(hào)。寫操作的流程亦然。

          對(duì)設(shè)計(jì)來說,例如xilinx的接口IP(DDR例化時(shí)的接口),都已支持AXI的接口。工程師熟悉相應(yīng)的總線接口信號(hào)和特點(diǎn),對(duì)于技術(shù)方案選擇,IP使用和驗(yàn)證,都是非常重要的。盡量在設(shè)計(jì)中選擇標(biāo)準(zhǔn)總線接口,對(duì)于設(shè)計(jì)復(fù)用,模塊共享來說,則是必由之路。而模塊(IP)復(fù)用的益處隨著設(shè)計(jì)不斷增大將會(huì)不斷顯現(xiàn)。



          關(guān)鍵詞: FPGA 總線

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();