《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 通用可編程接口IP核的設(shè)計與實現(xiàn)
通用可編程接口IP核的設(shè)計與實現(xiàn)
2015年電子技術(shù)應(yīng)用第6期
胡小剛1,趙琳娜1,虞致國1,魏敬和2,顧曉峰1
1.江南大學(xué) 電子工程系 輕工過程先進(jìn)控制教育部重點實驗室,江蘇 無錫214122; 2.中國電子科技集團(tuán)公司第五十八研究所,江蘇 無錫214035
摘要: 為滿足SoC外設(shè)接口高帶寬、外部電路接口多樣性的要求,利用可編程狀態(tài)機(jī)和波形描述符存儲器,設(shè)計了一種通用可編程接口IP核。分別從接口硬件連接設(shè)計、固件程序設(shè)計、波形描述符設(shè)計和仿真平臺設(shè)計等方面對接口的設(shè)計流程進(jìn)行了詳述。以8051 CPU核為基礎(chǔ),利用所設(shè)計的接口IP核構(gòu)建了仿真驗證環(huán)境,對接口IP核編程后實現(xiàn)了對外部存儲器的訪問,并通過比較寫出和讀入的數(shù)據(jù)驗證了設(shè)計的正確性。
中圖分類號: TP302.1
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2015)06-0066-03
Design and implementation of a general programmable interface IP core
Hu Xiaogang1,Zhao Linna1,Yu Zhiguo1,Wei Jinghe2,Gu Xiaofeng1
1.Key Laboratory of Advanced Process Control for Light Industry(Ministry of Education),Department of Electronic Engineering, Jiangnan University,Wuxi 214122,China; 2.The 58th Research Institute of China Electronics Technology Group Corp,Wuxi 214035,China
Abstract: In order to meet the requirements of high bandwidth and the diversity of external interface of System-on-a-Chip(SoC), a general programmable interface IP core is designed by using the programmable state machine and waveform descriptor memory. The detailed design flow of the interface is described, including the designs of the interface hardware connection, the firmware design, the waveform descriptor and the simulation platform. Based on the 8051 CPU core, a verification simulation environment is built using the designed interface IP core. The interface IP core is tested and verified by comparing the data being written and read in the environment.
Key words : System-on-a-Chip;general programmable interface;IP core;data transmission

    

0 引言

    在現(xiàn)代數(shù)據(jù)通信與傳輸領(lǐng)域,系統(tǒng)芯片(System-on-a-Chip,SoC)與不同外設(shè)間的數(shù)據(jù)交換越來越頻繁,交換的數(shù)據(jù)量越來越大,而且不同外設(shè)采用的數(shù)據(jù)通信協(xié)議和接口形式也各不相同。SoC與外設(shè)間連接的要求越來越高,主要表現(xiàn)在:(1)高帶寬,要求通信傳輸速度越來越高;(2)通用性,要求接口具有對多種標(biāo)準(zhǔn)通信協(xié)議有一定的廣適性;(3)可再配置,要求通信系統(tǒng)具有用戶根據(jù)實際需要進(jìn)行二次配置的特性。

    另一方面,外設(shè)接口往往采用一定的協(xié)議或標(biāo)準(zhǔn),典型的有UART接口、IIC接口、SPI接口等。芯片實現(xiàn)時,通常將外設(shè)接口的邏輯功能固化在芯片內(nèi)部,但由于芯片資源有限,不可能把所有的協(xié)議都集成在片上[1]。為了實現(xiàn)可編程的外設(shè)接口,傳統(tǒng)的方法是利用通用輸入輸出(General Purpose Input/Output,GPIO),通過編程方式設(shè)置GPIO寄存器的高/低電平,從而控制數(shù)據(jù)的讀寫和時鐘的生成。但是,GPIO模塊采用CPU內(nèi)核直接控制,模擬外設(shè)接口的讀寫過程會占用大量CPU運行周期,影響系統(tǒng)中其他任務(wù)的實現(xiàn),所以一般只用于低速協(xié)議或接口的實現(xiàn)[2]。

    本文針對SoC與外圍設(shè)備多種接口的連接問題,設(shè)計了一種通用可編程接口IP核,實現(xiàn)了SoC與外圍設(shè)備接口間的可編程特性,并以增強(qiáng)型8051內(nèi)核為基礎(chǔ)構(gòu)建了仿真驗證平臺,驗證了設(shè)計的正確性和有效性。

1 通用可編程接口IP的原理

    通用可編程接口的工作方式采用主控方式,可通過配置CPU實現(xiàn)對外設(shè)接口讀寫波形的編程,從而完成外設(shè)接口的讀寫。

    為了使數(shù)據(jù)在與外圍設(shè)備交換過程中不需要CPU的控制,利用通用可編程接口的高速帶寬設(shè)計了一套FIFO緩存架構(gòu),其工作機(jī)制使得數(shù)據(jù)以包的形式被提交到端點FIFO,而不是每次一個字節(jié),并可設(shè)置多級緩存[3-4]。

    通用可編程接口IP的本質(zhì)是一個可編程狀態(tài)機(jī),用戶通過編寫波形描述符控制狀態(tài)機(jī)。通用可編程接口可生成4個用戶定義波形描述符,每個波形描述符最多可定義7個狀態(tài),這7個狀態(tài)通常情況下用于批量讀、批量寫、單字讀、單字寫。

2 通用可編程接口IP核設(shè)計

2.1 通用可編程接口IP架構(gòu)

    通用可編程接口模塊的內(nèi)部結(jié)構(gòu)如圖1所示,主要由4個模塊組成。

ck4-t1.gif

    (1)端點控制模塊

    端點控制模塊(CONTROL)產(chǎn)生控制信號(CTL)控制外部設(shè)備,CTL信號可通過編程組合使用,實現(xiàn)復(fù)雜的邏輯功能;接收外部準(zhǔn)備信號(RDY)觸發(fā)事件;接收/發(fā)送時鐘信號(IFCLK);輸出狀態(tài)信號(STATE),顯示狀態(tài)機(jī)目前工作狀態(tài)。時鐘信號可選內(nèi)部產(chǎn)生或外部輸入,其他控制信號也可設(shè)置為高有效或低有效。

    (2)端點緩存模塊

    端點緩存模塊由4個相互重疊的FIFO端點緩存組成,存儲與外設(shè)通信過程中接收/發(fā)送的數(shù)據(jù)。其讀信號(RD)、寫信號(WR)、輸出使能信號(OE)及時鐘信號(CLK)控制數(shù)據(jù)總線(FD[15:0])的讀寫,并輸出空信號(EF)、滿信號(FF)。

    (3)波形存儲器模塊

    波形存儲器用于存儲用戶設(shè)計的波形描述符。通用可編程接口通過波形描述符控制數(shù)據(jù)的輸入輸出,最多可存儲4個波形描述符,分別為WF0、WF1、WF3、WF4。

    (4)地址生成模塊

    地址生成器(ADDR_GEN)用于輸出地址總線(GPIFADR[8:0]),由控制模塊控制。

2.2 波形描述符設(shè)計

    波形描述符是通用可編程接口的核心,用于描述數(shù)據(jù)傳輸的時序。通用可編程接口可以存儲4個波形描述符:(1)單字讀:從外設(shè)中讀取1字節(jié)/字的數(shù)據(jù);(2)單字寫:向外設(shè)中寫入1字節(jié)/字的數(shù)據(jù);(3)批量讀:從外設(shè)中讀取一個長數(shù)據(jù)流;(4)批量寫,往外設(shè)中寫入一個長數(shù)據(jù)流。這些描述符可以動態(tài)地配置給任何一個端點FIFO。配置后,通用可編程接口將依據(jù)波形描述符產(chǎn)生相應(yīng)的控制邏輯和握手信號給外界接口,滿足向FIFO讀寫數(shù)據(jù)的需要。

    圖2為一種批量寫模式下的波形描述符狀態(tài)轉(zhuǎn)移圖。批量寫狀態(tài)機(jī)共定義了5個狀態(tài),分別是IDLE、State1、State2、State3、State4,每個狀態(tài)的意義描述如下。

ck4-t2.gif

    (1)IDLE:當(dāng)寫事件發(fā)生,轉(zhuǎn)移到State(1);

    (2)State1:將SRAM寫信號和使能信號置為有效(ck4-gs1.gif=0,ck4-gs2.gif=0),觸發(fā)寫事件,轉(zhuǎn)移到State(2);

    (3)State2:若外部SRAM模型的“滿”標(biāo)志為真(FF=1),則停留在State(2),否則轉(zhuǎn)移到State(3);

    (4)State3:通用可編程接口采樣數(shù)據(jù)線,將內(nèi)部端點FIFO數(shù)據(jù)寫入外部SRAM模型,轉(zhuǎn)移到State(4);

    (5)State4:如有更多數(shù)據(jù)需要傳輸,則轉(zhuǎn)移到State(2),否則轉(zhuǎn)移到步驟(1)。

2.3 端點FIFO緩存設(shè)計

    通用可編程接口內(nèi)部包含4重端點FIFO緩存,對內(nèi)部總線端來說,只要有1個FIFO為“半滿”,就可以繼續(xù)發(fā)送數(shù)據(jù)。當(dāng)前操作的FIFO寫“滿”時,自動將其轉(zhuǎn)換到外部接口端,排隊等候讀??;并將隊列中下一個為“空”的FIFO轉(zhuǎn)移到SoC內(nèi)部總線接口上,供其繼續(xù)寫數(shù)據(jù)。圖3為FIFO緩存架構(gòu)的傳輸原理圖,此時通用可編程接口內(nèi)部總線接口執(zhí)行OUT傳輸,F(xiàn)IFO端點被設(shè)置為512 B四重緩存。

ck4-t3.gif

3 仿真平臺設(shè)計

    為驗證設(shè)計的接口IP核,構(gòu)建了一個以8051 CPU為內(nèi)核的SoC仿真平臺,利用設(shè)計的接口IP核訪問外部設(shè)備。為了充分利用通用可編程接口地址總線、數(shù)據(jù)總線及控制信號,外設(shè)采用SRAM芯片的Verilog模型,并加以改進(jìn),添加握手信號,使通用可編程接口能讀取該信號并控制數(shù)據(jù)傳輸。通過設(shè)計波形描述符,SoC控制接口IP向外部存儲器執(zhí)行寫/讀操作,仿真平臺對兩次的數(shù)據(jù)進(jìn)行比較并報告設(shè)計的正確性。

    該仿真平臺在Linux操作系統(tǒng)下開發(fā),平臺系統(tǒng)結(jié)構(gòu)如圖4所示。仿真器采用Synopsys公司的VCS仿真器。組成系統(tǒng)的各個模塊可以按照需要加入仿真環(huán)境中,仿真結(jié)果由環(huán)境產(chǎn)生、檢查并輸出到指定目錄結(jié)構(gòu)下的文件中。

ck4-t4.gif

    仿真平臺包括Verilog編寫的Testbench、SoC模型、外部程序存儲器(EXT PROGRAM ROM)、SRAM Verilog模型。SRAM包括地址線(A8~A0)、數(shù)據(jù)線(I/O15~I(xiàn)/O0)、芯片使能(ck4-gs1.gif)、輸出使能(ck4-gs3.gif)、寫使能(ck4-gs2.gif)、握手信號E_RDY(“1”表示SRAM未寫入數(shù)據(jù),“0”代表已寫入數(shù)據(jù))、F_RDY(“1”表示SRAM存滿數(shù)據(jù),“0”代表未滿)。

    仿真平臺工作時,由Testbench產(chǎn)生時鐘(CLK)和通用可編程接口IP時鐘(IFCLK)。

4 仿真結(jié)果分析

    通用可編程接口單字節(jié)寫的仿真結(jié)果如圖5所示,其中IFCLK為內(nèi)部48 MHz時鐘,數(shù)據(jù)寬度為8 bit。當(dāng)CTL3(ck4-gs1.gif)拉低時,外部SRAM有效;當(dāng)CTL5 (ck4-gs2.gif)有效,且RDY1(F_RDY)為低時,數(shù)據(jù)(5A)被放入數(shù)據(jù)總線,并經(jīng)數(shù)據(jù)總線寫入外部SRAM。狀態(tài)總線STATE(PE[2:0])顯示通用可編程接口引擎在每一操作期間循環(huán)經(jīng)過的狀態(tài)。

ck4-t5.gif

    通用可編程接口單字讀模式與單字寫模式類似,仿真結(jié)果如圖6所示。

ck4-t6.gif

    圖7為通用可編程接口批量寫傳輸?shù)姆抡娼Y(jié)果,數(shù)據(jù)寬度為16 bit。當(dāng)ck4-gs1.gif、ck4-gs2.gif被拉低,且F_RDY為低時,接口開始執(zhí)行批量寫程序,從內(nèi)部的FIFO緩存向外部SRAM寫入512 B(00-FF,F(xiàn)F-00)。

ck4-t7.gif

    通用可編程接口批量讀傳輸?shù)姆抡娼Y(jié)果與批量寫類似,仿真結(jié)果如圖8所示。

ck4-t8.gif

    由上述仿真波形可看出,通用可編程接口讀寫數(shù)據(jù)時,時鐘周期為20.8 ns,數(shù)據(jù)總線寬度為16 bit,對應(yīng)數(shù)據(jù)傳輸速率為96 Mb/s。相比之下,UART的傳輸速率為1.5 Mb/s,IIC總線為400 Kb/s~3.4 Mb/s,SPI總線為18 Mb/s,GPIO總線的傳輸速率最高為50 Mb/s[5]。可見,通用可編程接口的傳輸速率最快,更適合當(dāng)前大容量存儲器之間的數(shù)據(jù)傳輸要求。

5 結(jié)束語

    本方案實現(xiàn)了通用可編程接口與外圍設(shè)備接口連接的可配性,并通過設(shè)計驗證了該方案的可行性與準(zhǔn)確性。在數(shù)據(jù)傳輸過程中,通用可編程接口無需CPU的干預(yù),只需對其進(jìn)行正確設(shè)置就可以正常工作。通用可編程接口的強(qiáng)大功能使其不僅可以與外部SRAM連接,還可以與更復(fù)雜的接口(例如ATA接口)實現(xiàn)無縫連接,加快了產(chǎn)品的開發(fā)速度,降低了開發(fā)成本和提高了產(chǎn)品的可靠性。

參考文獻(xiàn)

[1] 王占領(lǐng),張登福,李云杰,等.便攜式ARINC429總線通信接口的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機(jī),2013,30(7):133-136.

[2] HASAMNIS M A,LIMAYE S S.Custom hardware interface using NIOS II processor through GPIO[C].The 7th Conference on Industrial Electronics and Applications(ICIEA′12).Singapore,2012:1381-1385.

[3] 劉志華,郭付才,彭新偉,等.基于CY7C68013A的FPGA配置和通信接口設(shè)計[J].電子技術(shù)應(yīng)用,2013,39(2):18-21.

[4] 趙林,孟令軍,于磊,等.基于CY7C68013A的USB2.0高速接口設(shè)計[J].電子技術(shù)應(yīng)用,2014,40(1):131-133.

[5] STMicroelectronics.RM0008 Reference manual[EB/OL].http://www.st.com/,2014.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。