《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 通用可編程接口IP核的設(shè)計(jì)與實(shí)現(xiàn)
通用可編程接口IP核的設(shè)計(jì)與實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第6期
胡小剛1,,趙琳娜1,,虞致國1,,魏敬和2,,顧曉峰1
1.江南大學(xué) 電子工程系 輕工過程先進(jìn)控制教育部重點(diǎn)實(shí)驗(yàn)室,江蘇 無錫214122,; 2.中國電子科技集團(tuán)公司第五十八研究所,,江蘇 無錫214035
摘要: 為滿足SoC外設(shè)接口高帶寬,、外部電路接口多樣性的要求,,利用可編程狀態(tài)機(jī)和波形描述符存儲(chǔ)器,,設(shè)計(jì)了一種通用可編程接口IP核。分別從接口硬件連接設(shè)計(jì),、固件程序設(shè)計(jì),、波形描述符設(shè)計(jì)和仿真平臺(tái)設(shè)計(jì)等方面對(duì)接口的設(shè)計(jì)流程進(jìn)行了詳述。以8051 CPU核為基礎(chǔ),,利用所設(shè)計(jì)的接口IP核構(gòu)建了仿真驗(yàn)證環(huán)境,,對(duì)接口IP核編程后實(shí)現(xiàn)了對(duì)外部存儲(chǔ)器的訪問,并通過比較寫出和讀入的數(shù)據(jù)驗(yàn)證了設(shè)計(jì)的正確性,。
中圖分類號(hào): TP302.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)通用性,要求接口具有對(duì)多種標(biāo)準(zhǔn)通信協(xié)議有一定的廣適性,;(3)可再配置,,要求通信系統(tǒng)具有用戶根據(jù)實(shí)際需要進(jìn)行二次配置的特性。

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

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

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

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

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

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

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

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

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

ck4-t1.gif

    (1)端點(diǎn)控制模塊

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

    (2)端點(diǎn)緩存模塊

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

    (3)波形存儲(chǔ)器模塊

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

    (4)地址生成模塊

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

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

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

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

ck4-t2.gif

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

    (2)State1:將SRAM寫信號(hào)和使能信號(hào)置為有效(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)部端點(diǎn)FIFO數(shù)據(jù)寫入外部SRAM模型,轉(zhuǎn)移到State(4),;

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

2.3 端點(diǎn)FIFO緩存設(shè)計(jì)

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

ck4-t3.gif

3 仿真平臺(tái)設(shè)計(jì)

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

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

ck4-t4.gif

    仿真平臺(tái)包括Verilog編寫的Testbench,、SoC模型、外部程序存儲(chǔ)器(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),、握手信號(hào)E_RDY(“1”表示SRAM未寫入數(shù)據(jù),,“0”代表已寫入數(shù)據(jù))、F_RDY(“1”表示SRAM存滿數(shù)據(jù),,“0”代表未滿),。

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

4 仿真結(jié)果分析

    通用可編程接口單字節(jié)寫的仿真結(jié)果如圖5所示,,其中IFCLK為內(nèi)部48 MHz時(shí)鐘,,數(shù)據(jù)寬度為8 bit。當(dāng)CTL3(ck4-gs1.gif)拉低時(shí),,外部SRAM有效,;當(dāng)CTL5 (ck4-gs2.gif)有效,且RDY1(F_RDY)為低時(shí),,數(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為低時(shí),接口開始執(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ù)時(shí),,時(shí)鐘周期為20.8 ns,,數(shù)據(jù)總線寬度為16 bit,對(duì)應(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)前大容量存儲(chǔ)器之間的數(shù)據(jù)傳輸要求,。

5 結(jié)束語

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

參考文獻(xiàn)

[1] 王占領(lǐng),,張登福,,李云杰,等.便攜式ARINC429總線通信接口的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(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ì)[J].電子技術(shù)應(yīng)用,,2013,39(2):18-21.

[4] 趙林,,孟令軍,,于磊,等.基于CY7C68013A的USB2.0高速接口設(shè)計(jì)[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)載,。