国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種SOC片上總線的設計與仿真

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

惠為君

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

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

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

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

總線是SOC系統(tǒng)中CPU與內(nèi)存、IO設備之間的共享通道。內(nèi)部總線的設計往往決定了芯片的性能、時延及芯片的復雜度。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 總體設計

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

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

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

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

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

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

3 模塊設計

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

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

復位及默認狀態(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)圖,實例化個模塊,完成總線設計。 實例化模塊部分代碼如下:

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ù)完成了仲裁器設計。完成了四個模塊設計以后,利用模塊實例化方法實現(xiàn)了頂層模塊設計。為了試驗方便,本設計采用了較少的主控部件和從屬部件數(shù)目,在這一方面,設計還可以改善。

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

猜你喜歡
總線
基于PCI Express總線的xHC與FPGA的直接通信
機載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設計
CAN總線并發(fā)通信時下位機應用軟件設計
多通道ARINC429總線檢查儀
支持多主通信的星載CAN總線應用協(xié)議設計
航天器工程(2014年4期)2014-03-11 16:35:43
基于EtherCAT總線的ROV控制系統(tǒng)設計
河南科技(2014年16期)2014-02-27 14:13:22
宣武区| 建瓯市| 旬阳县| 房山区| 罗定市| 化德县| 靖边县| 宿松县| 澄江县| 西青区| 洪泽县| 台前县| 惠水县| 和静县| 靖西县| 玉溪市| 紫云| 太原市| 宁都县| 建宁县| 甘孜县| 布尔津县| 错那县| 凭祥市| 鲁山县| 盐津县| 安溪县| 紫阳县| 余干县| 崇礼县| 新田县| 托克逊县| 台山市| 黔西| 泰安市| 西和县| 龙川县| 连州市| 应城市| 崇仁县| 辽阳市|