一種雙總線內(nèi)存控制器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)芯片設(shè)計(jì)技術(shù)領(lǐng)域,尤其是涉及一種雙總線內(nèi)存控制器。
【背景技術(shù)】
[0002]現(xiàn)代計(jì)算機(jī)系統(tǒng)中,內(nèi)存已經(jīng)是必不可少的CPU外圍設(shè)備,具有極高的外部數(shù)據(jù)傳輸率和先進(jìn)的地址/命令與控制總線拓?fù)浣Y(jié)構(gòu)。內(nèi)存控制器也隨之廣泛使用在各種電子產(chǎn)品的核心芯片中,內(nèi)存控制器是計(jì)算機(jī)系統(tǒng)內(nèi)部控制內(nèi)存并且通過內(nèi)存控制器使內(nèi)存與CHJ之間交換數(shù)據(jù)的重要組成部分。內(nèi)存控制器決定了計(jì)算機(jī)系統(tǒng)的內(nèi)存性能。。
[0003]目前主流的內(nèi)存控制器通常只支持一種標(biāo)準(zhǔn)總線接口,而當(dāng)今高速信息系統(tǒng)中經(jīng)常會(huì)有不同總線接口的IP同時(shí)需要訪問內(nèi)存,特別是具有AMBA AXI總線的IP核和具有PLB總線的IP核廣泛應(yīng)用于該系統(tǒng)。
[0004]為了滿足這種復(fù)雜系統(tǒng)對內(nèi)存的訪問需求,一種簡單的做法是在內(nèi)存控制器外部使用各種總線協(xié)議轉(zhuǎn)換橋,即將各種不同的總線通過橋接邏輯,轉(zhuǎn)換到內(nèi)存控制器支持的外部總線接口標(biāo)準(zhǔn)。這種設(shè)計(jì)需要至少兩次總線標(biāo)準(zhǔn)轉(zhuǎn)換,第一次轉(zhuǎn)換是將某一種總線標(biāo)準(zhǔn)轉(zhuǎn)換成內(nèi)存控制器支持的外部總線標(biāo)準(zhǔn);第二次轉(zhuǎn)換是內(nèi)存控制器內(nèi)部將外部接收的訪問請求轉(zhuǎn)換成內(nèi)部的訪問請求。過多的總線標(biāo)準(zhǔn)轉(zhuǎn)換會(huì)嚴(yán)重降低內(nèi)存訪問效率,導(dǎo)致總線的擁堵。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明旨在提出一種雙總線內(nèi)存控制器,支持PLB4總線接口和AMBAAXI總線接口的IP同時(shí)訪問內(nèi)存,提高內(nèi)存訪問效率。
[0006]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007]一種雙總線內(nèi)存控制器,除了包括內(nèi)存控制器內(nèi)核,還包括:
[0008]PLB總線橋接電路,用于接收PLB總線的訪問請求,并將請求轉(zhuǎn)換為DFI總線標(biāo)準(zhǔn)請求;
[0009]AXI總線橋接電路,用于接收AXI總線的訪問請求,并將請求轉(zhuǎn)換為DFI總線標(biāo)準(zhǔn)請求;
[0010]DFI總線仲裁電路,用于接收PLB總線橋接電路和AXI總線橋接電路輸出的DFI總線標(biāo)準(zhǔn)請求,經(jīng)過仲裁邏輯后,將DFI總線標(biāo)準(zhǔn)請求發(fā)送到內(nèi)存控制器內(nèi)核。
[0011]進(jìn)一步的,所述PLB總線橋接電路包括:
[0012]命令譯碼邏輯,用來將接收的來自PLB總線的命令和地址進(jìn)行譯碼;
[0013]傳輸請求隊(duì)列,用于緩存譯碼后的符合PLB總線協(xié)議的讀寫請求;
[0014]PLB讀數(shù)據(jù)Buffer和PLB寫數(shù)據(jù)Buffer,分別在PLB總線和DFI接口之間緩沖和傳輸讀寫數(shù)據(jù);
[0015]寫控制邏輯和讀控制邏輯,根據(jù)傳輸請求隊(duì)列中的信息分別用于管理PLB寫數(shù)據(jù)Buffer 和 PLB 讀數(shù)據(jù) Buffer ;
[0016]DFI主模塊一,將分別來自傳輸請求隊(duì)列和PLB寫數(shù)據(jù)Buffer的請求隊(duì)列和寫數(shù)據(jù)按照DFI總線標(biāo)準(zhǔn)的時(shí)序要求送到DFI接口 ;DFI主模塊一還將DFI接口返回的讀數(shù)據(jù)送入PLB讀數(shù)據(jù)Buffer中。
[0017]進(jìn)一步的,所述AXI總線橋接電路包括:
[0018]讀/寫請求隊(duì)列,用于緩存所述符合AXI總線協(xié)議的讀寫請求;
[0019]隊(duì)列管理邏輯,用來管理讀/寫請求隊(duì)列的加載和卸載過程,處理DFI接口的應(yīng)答和握手信號(hào);
[0020]AXI寫地址控制邏輯,負(fù)責(zé)將AXI總線標(biāo)準(zhǔn)寫請求轉(zhuǎn)換為DFI標(biāo)準(zhǔn)寫請求,并加入到讀/寫請求隊(duì)列,同時(shí)還負(fù)責(zé)進(jìn)行地址譯碼和產(chǎn)生AXI寫地址通道握手信號(hào);
[0021 ] AXI讀地址控制邏輯,負(fù)責(zé)將AXI總線標(biāo)準(zhǔn)讀請求轉(zhuǎn)換為DFI標(biāo)準(zhǔn)讀請求,并加入到讀/寫請求隊(duì)列,同時(shí)還負(fù)責(zé)進(jìn)行地址譯碼和產(chǎn)生AXI讀地址通道握手信號(hào);
[0022]AXI讀數(shù)據(jù)Buffer和AXI寫數(shù)據(jù)Buffer,分別在AXI總線和DFI接口之間緩沖和傳輸讀寫數(shù)據(jù);
[0023]AXI寫數(shù)據(jù)控制邏輯,用于管理AXI寫數(shù)據(jù)Buffer,負(fù)責(zé)產(chǎn)生AXI寫數(shù)據(jù)通道握手信號(hào),合并數(shù)據(jù)傳輸寬度小于128BU的數(shù)據(jù),并根據(jù)AWID信號(hào)進(jìn)行交織寫操作;
[0024]AXI讀數(shù)據(jù)控制邏輯,用于管理AXI讀數(shù)據(jù)Buffer,產(chǎn)生AXI讀數(shù)據(jù)通道握手信號(hào),在AXI讀請求的數(shù)據(jù)傳輸寬度小于128Bit時(shí),拆分來自DFI接口的128Bit數(shù)據(jù);
[0025]Exclusive監(jiān)控邏輯,用來監(jiān)控AXI寫地址控制邏輯和AXI讀地址控制邏輯的AXI總線的Exclusive訪問地址,把監(jiān)控信息傳遞到AXI寫地址控制邏輯,產(chǎn)生應(yīng)答信號(hào);當(dāng)Exclusive訪問失敗時(shí),阻止寫請求進(jìn)入DFI接口。
[0026]DFI主模塊二,將接收到的讀/寫請求隊(duì)列的請求隊(duì)列和AXI寫數(shù)據(jù)Buffer的寫數(shù)據(jù)按照DFI總線標(biāo)準(zhǔn)的時(shí)序要求送到DFI接口 ;DFI主模塊二將返回的讀數(shù)據(jù)送入AXI讀數(shù)據(jù) Buffer。
[0027]進(jìn)一步的,所述DFI總線仲裁電路包括DFI命令FIFO和仲裁邏輯,所述仲裁邏輯使用輪轉(zhuǎn)調(diào)度算法或固定優(yōu)先級(jí)的方式選擇哪一路DFI接口的請求進(jìn)入內(nèi)存控制器內(nèi)核。
[0028]相對于現(xiàn)有技術(shù),本發(fā)明具有以下優(yōu)勢:
[0029]對兩種總線標(biāo)準(zhǔn)分別設(shè)計(jì)總線橋接邏輯,將PLB總線協(xié)議和AXI總線協(xié)議分別轉(zhuǎn)換為內(nèi)存控制器總線協(xié)議,即將外部訪問請求轉(zhuǎn)換為內(nèi)存控制器內(nèi)部訪問請求;至少減少了一次總線協(xié)議轉(zhuǎn)換的開銷,從而獲得更高的內(nèi)存訪問效率;而內(nèi)存控制器內(nèi)核邏輯則不需要做任何的修改,保留了原有內(nèi)存控制器的兼容性;
[0030]再通過仲裁邏輯獲得對內(nèi)存單元的控制權(quán),優(yōu)化的仲裁邏輯可以無延遲地將選中的DFI接口標(biāo)準(zhǔn)請求送入內(nèi)存控制器,訪問效率幾乎沒有損失;
[0031]該設(shè)計(jì)具有靈活性,可擴(kuò)展性以及復(fù)用性,在高速信息系統(tǒng)中有廣泛的應(yīng)用前景。
【附圖說明】
[0032]構(gòu)成本發(fā)明的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0033]圖1為本發(fā)明實(shí)施例所述雙總線內(nèi)存控制器的整體結(jié)構(gòu)原理框圖;
[0034]圖2為本發(fā)明實(shí)施例所述PLB總線橋接電路的原理圖;
[0035]圖3為本發(fā)明實(shí)施例所述AXI總線橋接電路的原理圖;
[0036]圖4為本發(fā)明實(shí)施例所述總線仲裁電路的原理圖。
【具體實(shí)施方式】
[0037]需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0038]在本發(fā)明中所提到的DFI,是指DDR PHY Interface。
[0039]下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
[0040]—種雙總線內(nèi)存控制器,如圖1所示,包括PLB總線橋接電路10UAXI總線橋接電路102、DFI總線仲裁電路103和內(nèi)存控制器內(nèi)核MCP,所述PLB總線橋接電路101接收PLB總線的訪問請求,并將請求轉(zhuǎn)換為DFI總線標(biāo)準(zhǔn)請求;所述AXI總線橋接電路102接收AXI總線的訪問請求,并將請求轉(zhuǎn)換為DFI總線標(biāo)準(zhǔn)請求;所述DFI總線仲裁電路103接收PLB總線橋接電路101和AXI總線橋接電路102輸出的DFI總線標(biāo)準(zhǔn)請求,經(jīng)過仲裁邏輯后,將DFI總線標(biāo)準(zhǔn)請求發(fā)送到內(nèi)存控制器內(nèi)核MCP。適用于同時(shí)具有PLB總線和AMBAAXI總線的SoC系統(tǒng)。
[0041]如圖2所示,所述PLB總線橋接電路101包括命令譯碼邏輯201,傳輸請求隊(duì)列202,PLB寫數(shù)據(jù)Buffer203,寫控制邏輯204,PLB讀數(shù)據(jù)Buffer206,讀控制邏輯205和DFI主模塊一 207 ;
[0042]所述命令譯碼邏輯201用來將接收的來自PLB總線的命令和地址進(jìn)行譯碼;所述傳輸請求隊(duì)列202用于緩存譯碼后的符合PLB總線協(xié)議的讀寫請求,實(shí)現(xiàn)延遲寫、讀請求排序和寫后讀等功能;所述寫控制邏輯204和讀控制邏輯205,根據(jù)傳輸請求隊(duì)列202中的信息分別用于管理PLB寫數(shù)據(jù)Buffer203和PLB讀數(shù)據(jù)Buffer206 ;PLB讀數(shù)據(jù)Buffer206和PLB寫數(shù)據(jù)Buffer203分別在PLB總線和DFI接口之間緩沖和傳輸讀寫數(shù)據(jù),使用獨(dú)立的讀/寫B(tài)uffer可以支持同時(shí)發(fā)生的讀寫傳輸,以提高傳輸帶寬。所述DFI主模塊一 207將接收到的分別來自傳輸請求隊(duì)列202和PLB寫數(shù)據(jù)BufTer203的請求隊(duì)列和寫數(shù)據(jù)按照DFI總線標(biāo)準(zhǔn)的時(shí)序要求送到DFI接口 ;DFI主模塊一 207將DFI接口返回的讀數(shù)據(jù)送入PLB讀數(shù)據(jù) Buffer206 中。
[0043]其中,所述命令譯碼邏輯201的地址譯碼范圍由軟件配置,超出譯碼范圍的地址將會(huì)使命令譯碼邏輯201在PLB總線上產(chǎn)生錯(cuò)誤應(yīng)答信號(hào)0_S_ERR。處于地址譯碼范圍內(nèi)的請求,命令譯碼邏輯201將在PLB總線上產(chǎn)生有效地0_S_PVAL信號(hào)。如果來自PLB的總線請求出現(xiàn)了奇偶校驗(yàn)錯(cuò)誤(Parity Error),命令譯碼邏輯201也不會(huì)產(chǎn)生有效的0_S_PVAL信號(hào)。如果傳輸請求隊(duì)列202或PLB讀數(shù)據(jù)Buffer206或PLB寫數(shù)據(jù)Buffer203已滿,則命令譯碼邏輯201產(chǎn)生0_S_PRETRY信號(hào)。
[0044]對應(yīng)每一個(gè)讀請求,PLB讀數(shù)據(jù)Buffer206中會(huì)分配128字節(jié)。PLB總線讀請求按照進(jìn)入PLB總線橋接電路101的順序出現(xiàn)在DFI接口上。對應(yīng)每一個(gè)寫請求,PLB寫數(shù)據(jù)Buffer203中會(huì)分配128字節(jié)。PLB寫請求按照進(jìn)入PLB總線橋接電路101的順序