• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種SOC片上總線的設(shè)計與仿真

    2021-07-19 22:31:01惠為君
    電腦知識與技術(shù) 2021年14期
    關(guān)鍵詞:總線

    惠為君

    摘要:SOC內(nèi)部總線用于連接其內(nèi)部的各個部件,實現(xiàn)主控部件與從屬部件等的數(shù)據(jù)傳輸,是SOC設(shè)計必不可少的關(guān)鍵部件。本文分析了SOC總線特性、結(jié)構(gòu),對系統(tǒng)進行了模塊劃分。在設(shè)計了仲裁協(xié)議的基礎(chǔ)上,基于quartus平臺,verilogHDL語言實現(xiàn)了各模塊的設(shè)計。Modelsim仿真和FPGA下載驗證表明,設(shè)計是有效的。

    關(guān)鍵詞:總線;Verilog HDL;Modelsim;FPGA

    中圖分類號:TN91? ? 文獻標識碼: A

    文章編號:1009-3044(2021)14-0206-02

    總線是SOC系統(tǒng)中CPU與內(nèi)存、IO設(shè)備之間的共享通道。內(nèi)部總線的設(shè)計往往決定了芯片的性能、時延及芯片的復(fù)雜度。SOC內(nèi)部總線一般具有數(shù)據(jù)傳送并行、連接部件多、全雙工通信的特點。

    連接總線的部件分為主控部件和從屬部件。主控部件向總線申請,總線經(jīng)過仲裁,批準了該主控部件的使用權(quán),同時向從屬部件發(fā)出片選信號,在此基礎(chǔ)上,主控部件與從屬部件通過總線實現(xiàn)數(shù)據(jù)傳輸。

    1信號定義

    主控部件、總線、從屬部件通信的信號定義如圖1所示。

    主控部件和從屬部件掛在總線上,通過總線進行通信,二者不直接有引腳連接。從圖1可以看出,主控部件和從屬部件通過總線實現(xiàn)全雙工并行通信,讀寫分開,提高了效率。

    總線可以掛接若干主控部件和從屬部件。每個主控部件定義了7種引腳,引腳名稱、寬度等定義如表1所示。

    從屬部件定義了5種引腳,引腳名稱、寬度等定義如表2所示。

    2 總體設(shè)計

    從功能上劃分,總線結(jié)構(gòu)分為四個部分,如圖2所示。為簡單計,主控部件和從屬部件都取三個。

    按照功能劃分,總線結(jié)構(gòu)分為如下四個部分。

    1)主控數(shù)據(jù)選擇器:根據(jù)仲裁結(jié)果,選擇一個主控部件。

    2)總線仲裁器:根據(jù)總裁機制,選擇一個主控部件擁有總線使用權(quán)。

    3)地址譯碼器:主控部件輸出從屬部件地址,譯碼器根據(jù)地址生成從屬部件的片選信號。

    4)從屬數(shù)據(jù)選擇器:根據(jù)片選信號,選擇一個從屬部件。

    3 模塊設(shè)計

    總線仲裁器決定和一個主控部件通信的從屬部件。主控部件向仲裁器發(fā)出請求信號(req),仲裁器根據(jù)仲裁機制,發(fā)出有效的批準信號(grt),授予一個主控部件總線使用權(quán)。

    三個主控部件沒有優(yōu)先級,隨機向總線申請使用權(quán)。仲裁器采用輪詢作為仲裁機制,按照請求的先后順序確定總線使用權(quán)。仲裁器是一種周期動作的模塊電路,使用狀態(tài)機來設(shè)計。對應(yīng)主控部件數(shù),設(shè)計三個狀態(tài)。

    1)狀態(tài)0:0號主控部件取得總線使用權(quán)。

    2)狀態(tài)1:1號主控部件取得總線使用權(quán)。

    3)狀態(tài)2:2號主控部件取得總線使用權(quán)。

    在狀態(tài)0時,也就是0號主控部件使用總線的時候,主控部件請求被批準的順序為0號1號2號。依次類推,狀態(tài)1時,批準順序為1號 2號 0號,狀態(tài)2時,批準順序為2號0號1號。 其狀態(tài)轉(zhuǎn)換圖如圖2所示。Req0、Req1和Req2為三個主控部件向總線申請使用權(quán)信號,其值為1時,表示申請使用權(quán),為0時,表示撤銷申請使用權(quán)。

    復(fù)位及默認狀態(tài)時,系統(tǒng)的狀態(tài)取狀態(tài)0。

    3.1 主控數(shù)據(jù)選擇器

    接受一個主控部件的Addr、Rw、Addr_s、Wr_data信號。其中,Addr信號發(fā)給從屬地址譯碼器,其余信號發(fā)給從屬部件。

    4 模塊實現(xiàn)及仿真

    基于Verilog HDl實現(xiàn)各模塊。模塊的文件名,如表3所示。

    4.1 總線仲裁器

    實現(xiàn)仲裁控制的部分核心代碼如下:

    case(owner)

    2'b00 : begin

    if(req0 == 1'b1) owner = 2'b00;

    else if(req1 == 1'b1) owner = 2'b01;

    else if(req2==1'b1) owner = 2'b10; end

    2'b01 : begin

    if(req1 == 1'b1) owner = 2'b01;

    else if(req2 == 1'b1) owner = 2'b10;

    else if(req0 == 1'b1) owner = 2'b00; end

    2'b10 : begin

    if(req2 == 1'b1) owner = 2'b10;

    else if(req0 == 1'b1) owner = 2'b00;

    else if(req1 == 1'b1) owner = 2'b01; end

    default: owner = 2'b00;

    模塊用一個摩爾狀態(tài)機來實現(xiàn),按照仲裁器狀態(tài)圖實現(xiàn)狀態(tài)機代碼。寄存器owner存儲輪詢狀態(tài),在時鐘的觸發(fā)下,不同的狀態(tài)授權(quán)不同的主控模塊取得總線使用權(quán)。

    4.2 總線頂層模塊

    實現(xiàn)了各模塊之后,按照圖2總線結(jié)構(gòu)圖,實例化個模塊,完成總線設(shè)計。 實例化模塊部分代碼如下:

    bus_arbiter u2(.clk(clk),.reset(reset),.req0(req0),.req1(req1),.req2(req2),.grant0(tgrant0),.grant1(tgrant1),.grant2(tgrant2));

    bus_slave_addr_dec u3(.slave_addr(tslave_addr),.cs0(tcs0),.cs1(tcs1),.cs2(tcs2)) ;

    模塊實現(xiàn)的symbol如圖4所示。輸入部分只顯示了一個主控部件信號,其余信號可以類推。

    4.3 總線模塊仿真

    基于modelsim對頂層模塊bus進行了仿真。仿真結(jié)果如圖5所示,可以看出,主控部件和從屬部件的數(shù)目都取三個,總線輸出mdata和sdata的讀取是正確的。

    5結(jié)束語

    對SOC內(nèi)部總線的特征進行了分析,在此基礎(chǔ)上,按照不同的功能進行了模塊劃分。劃分的四個模塊分別是總線仲裁器、主控部件數(shù)據(jù)選擇器、從屬部件數(shù)據(jù)選擇器、從屬部件地址譯碼器。在分析了仲裁協(xié)議的基礎(chǔ)上,利用狀態(tài)機技術(shù)完成了仲裁器設(shè)計。完成了四個模塊設(shè)計以后,利用模塊實例化方法實現(xiàn)了頂層模塊設(shè)計。為了試驗方便,本設(shè)計采用了較少的主控部件和從屬部件數(shù)目,在這一方面,設(shè)計還可以改善。

    【通聯(lián)編輯:梁書】

    猜你喜歡
    總線
    基于PCI Express總線的xHC與FPGA的直接通信
    機載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計
    CAN總線并發(fā)通信時下位機應(yīng)用軟件設(shè)計
    多通道ARINC429總線檢查儀
    支持多主通信的星載CAN總線應(yīng)用協(xié)議設(shè)計
    航天器工程(2014年4期)2014-03-11 16:35:43
    基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計
    河南科技(2014年16期)2014-02-27 14:13:22
    清镇市| 吉木萨尔县| 闸北区| 谷城县| 元氏县| 深州市| 襄城县| 威宁| 马鞍山市| 荆门市| 建始县| 定兴县| 桦南县| 安徽省| 太仓市| 绥芬河市| 农安县| 枣强县| 梓潼县| 建始县| 武乡县| 绥德县| 安多县| 会理县| 广州市| 泸西县| 佛冈县| 稻城县| 武汉市| 河南省| 卫辉市| 南漳县| 米林县| 淅川县| 噶尔县| 华宁县| 通化县| 河曲县| 三亚市| 广德县| 蒲城县|