高璽璟 張志國
摘要:針對電路交換和軟交換中廣泛應(yīng)用的SLIC接口電路,提出了一種基于Xilinx軟核Microblaze為主控CPU的設(shè)計方案,給出了系統(tǒng)設(shè)計的全過程,包括基于EDK軟件環(huán)境搭建硬件平臺、IP核的制作和加載,以及軟件平臺的開發(fā)。通過SPI接口實現(xiàn)對SLIC芯片的控制,SLIC接口芯片采用SI公司的SI32260,實現(xiàn)完整的BORSCH功能。設(shè)計最大限度地利用FPGA的內(nèi)部資源,釋放了大量IO并簡化了PCB設(shè)計,提高了系統(tǒng)的可靠性。
關(guān)鍵詞:嵌入式系統(tǒng);Microblaze;軟核;用戶接口
中圖分類號:TP331文獻(xiàn)標(biāo)志碼:A文章編號:1008-1739(2019)06-67-2
0引言
近年來,基于FPGA的嵌入式系統(tǒng)設(shè)計與開發(fā)取得了突飛猛進(jìn)的發(fā)展,F(xiàn)PGA不再僅僅只是一個邏輯器件,而是集成了CPU核與豐富外設(shè)的可編程片上系統(tǒng)SOPC[1]。用戶線接口電路SLIC是電路交換、軟交換系統(tǒng)中不可或缺的用于提供模擬電話的接口[2]。SLIC接口有2種實現(xiàn)方式,一種是采用集成SLIC芯片及外圍電路,另外一種是采用分立模擬器件搭建電路。采用SLIC芯片,具有開發(fā)周期短、集成度高和易于維護(hù)等優(yōu)點,成為SLIC接口開發(fā)的主要方式。SI公司主流的SLIC接口芯片支持SPI控制接口和PCM數(shù)字音頻接口,提供SLIC接口。Microblaze是XILINX SPANTAN系列FPGA內(nèi)部的32位微處理器軟核,作為CPU完成多路SLIC芯片的控制[3-4]。
1硬件系統(tǒng)
1.1硬件總體設(shè)計
硬件主要包括硬件平臺的搭建和FPGA邏輯設(shè)計[5]。使用 XILINX集成開發(fā)環(huán)境XPS完成基于Microblaze的系統(tǒng)平臺搭建[6],配置所需的各種外設(shè);設(shè)計時序邏輯,并作為定制IP核加載到Microblaze外設(shè)總線[7];使用EDK完成系統(tǒng)軟件的編譯,與硬件可執(zhí)行文件合并,實現(xiàn)對SLIC芯片的控制,完成用戶接口電路完整的BORSCHT功能。
1.2搭建硬件平臺
基于Microblaze的硬件平臺如圖1所示[8-9]。
以FPGA軟核Microblaze為核心,搭建一個具有SPI接口、外設(shè)接口EPC、外部存儲器接口EMC、串口、外部中斷接口和GPIO接口的系統(tǒng)。一組SPI總線完成對SLIC芯片的控制,另一組SPI總線連接FPGA的配置芯片F(xiàn)lash,系統(tǒng)上電首先運行Boot Loader程序,將主程序從Flash加載到外部RAM,加載完成時程序跳轉(zhuǎn)至RAM執(zhí)行。EPC接口連接至邏輯IP核的雙口RAM,用于控制字的讀取和狀態(tài)字的寫入;邏輯IP核使用VHDL語言編寫邏輯代碼,完成交換機(jī)總線到SLIC芯片的PCM總線時隙調(diào)整,每路控制字、狀態(tài)字寫入對應(yīng)的雙口RAM,定時給CPU發(fā)送中斷等邏輯功能,做成一個IP核加載到Microblaze上[10]。
1.3 FPGA邏輯設(shè)計
FPGA邏輯設(shè)計主要完成交換機(jī)總線接口、CPU接口、雙口RAM的時序調(diào)整和邏輯控制。頂層文件完成外部接口描述和各個模塊之間的連接關(guān)系。交換機(jī)總線是程控交換機(jī)主控板與外圍板之間通過時分復(fù)用收發(fā)信令、PCM的一組總線。交換機(jī)總線接口通過串并轉(zhuǎn)換將收到的每一路控制字存入雙口RAM對應(yīng)位置,CPU只讀。CPU接口完成Microblaze對雙口RAM的讀寫。CPU將每路SLIC的狀態(tài)字寫入雙口RAM,交換機(jī)總線接口通過并串轉(zhuǎn)換在對應(yīng)時隙將狀態(tài)字發(fā)給交換機(jī)。為了使雙口RAM兩側(cè)的讀寫不沖突,CPU對雙口RAM的讀寫與狀態(tài)字、控制字的收發(fā)不在同一幀。
2軟件系統(tǒng)
2.1軟件開發(fā)流程
SDK提供了豐富的函數(shù)庫和實例,方便開發(fā)。system.mss包含系統(tǒng)所有接口的定義及函數(shù)的實例,用戶可以利用這些實例快速地編寫軟件。
硬件平臺導(dǎo)出至SDK后,SDK新建Boot Loader和主程序2個工程。Boot Loader工程為FPGA加載完成后的啟動程序,完成主程序從Flash到外部RAM的搬運,主程序完全搬運到RAM中后,程序跳轉(zhuǎn)至RAM中運行,軟件流程圖如圖2所示。
2.2主程序設(shè)計
主程序完成SLIC芯片的初始化和軟件流程控制,主程序流程圖如圖3所示。
Microblaze初始化包括SPI控制器初始化、中斷向量初始化和通用引腳(GPIO)初始化。Microblaze系統(tǒng)平臺搭建完畢以后會自動為每種設(shè)備分配基地址和設(shè)備類型字,Xilinx公司提供了各種IP核的API函數(shù),通過這些函數(shù)用戶可以很容易地實現(xiàn)對IP核的控制。MAIN程序中主要包括SPI控制器初始化函數(shù)、中斷初始化函數(shù)、GPIO初始化函數(shù)和SPI讀寫函數(shù)。
SLIC芯片初始化包括直流饋電設(shè)置、鈴流設(shè)置、時隙分配設(shè)置和中斷使能設(shè)置,初始化完成后SLIC接口就產(chǎn)生饋電電壓。通過SPI接口和GPIO接口配合使用實現(xiàn)對多路SLIC芯片的控制。CPU的SPI接口的CS信號連接至數(shù)據(jù)緩沖器的使能端,每一路SLIC芯片的CS通過數(shù)據(jù)緩沖器用一個GPIO來控制。
2.3雙口RAM地址映射
CPU通過外部設(shè)備控制器(EPC)讀寫存于雙口RAM的控制字和狀態(tài)字,F(xiàn)PGA完成串并轉(zhuǎn)換和交換機(jī)總線信令的收發(fā)。FPGA的邏輯IP核對,定時給CPU發(fā)送一個外部中斷,CPU對狀態(tài)字、控制字進(jìn)行一次更新。IP核對背板來的信令進(jìn)行串并轉(zhuǎn)換,并順序存入雙口RAM。交換機(jī)總線控制字、狀態(tài)字的讀寫,通過數(shù)組來完成雙口RAM地址映射。
2.4中斷程序設(shè)計
對控制字和狀態(tài)字的處理是在中斷程序內(nèi)完成的??刂谱钟糜诳刂朴脩舳丝诘母鞣N功能;Microblaze根據(jù)收到的控制字,通過SPI接口對SLIC芯片對應(yīng)寄存器進(jìn)行更新,從而控制話機(jī)振鈴及停鈴等。狀態(tài)字用于描述用戶端口的各種工作狀態(tài),SLIC芯片檢測到話機(jī)摘機(jī)后通過SPI接口上報給Microblaze,Microblaze更新雙口RAM上報狀態(tài)字。外部中斷定時觸發(fā)一次中斷程序,完成控制字和狀態(tài)字的更新,并控制SLIC芯片完成BORSCHT功能。
3關(guān)鍵技術(shù)問題分析
3.1定制IP核的制作
IP核的制作過程是將用戶自己用VHDL或者Verilog HDL語言編寫的邏輯源程序做成一個外設(shè)加載到XPS工程。源文件主要由源程序和網(wǎng)表文件2種文件組成。需要注意的是,XPS不支持VHDL和Verilog HDL混合編程。在實際應(yīng)用中,尤其是FPGA邏輯是由幾個研發(fā)人員共同編寫的,有時會出現(xiàn)幾個源文件是用不同的語言編寫的情況。在這種情況下,需要先用ISE進(jìn)行混合編程,生成網(wǎng)表文件,再加入到XPS中。
把IP核用到的所有源程序文件和網(wǎng)表文件放于指定目錄下,編寫mpd文件、pao文件和bbd文件,按照外設(shè)導(dǎo)入向?qū)У牟襟E加入到XPS工程中。
3.2軟硬件平臺的融合
Xilinx硬件平臺的搭建和軟件的編譯是分開進(jìn)行的。XPS搭建好硬件平臺以后,需要生成硬件可執(zhí)行文件,導(dǎo)出至SDK,SDK完成軟硬件的融合。
3.3 Flash加載
系統(tǒng)上電以后,F(xiàn)PGA加載啟動程序,啟動程序加載完成后完成主程序從Flash到外部RAM的搬運,當(dāng)主程序完全搬運到RAM中后,程序跳轉(zhuǎn)至RAM中運行。
啟動程序和系統(tǒng)硬件通過EDK編譯為一個可執(zhí)行文件,主程序工程編譯為另一個可執(zhí)行文件,二者是通過批處理腳本文件合并生成一個mcs固件燒寫到Flash。腳本文件定義了主程序的起始地址。
4結(jié)束語
通過XPS搭建基于Microblaze的硬件平臺,外圍邏輯制作成IP核加載到CPU,基于SDK編譯控制軟件,實現(xiàn)對SLIC接口芯片的控制,提高系統(tǒng)可靠性,降低了成本。
參考文獻(xiàn)
[1]楊強(qiáng)浩.基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機(jī)械工業(yè)出版社,2008.
[2]劉晨暉,任勇峰,李輝景,等.基于FPGA的多接口PCM傳輸系統(tǒng)的設(shè)計[J].電子器件,2016,39(2):324-328.
[3]吳志勇,郭元興,劉雨沁.基于FPGA的波特率連續(xù)可調(diào)的UART接口設(shè)計[J].通信技術(shù),2018(1):252-256.
[4]趙澤才,常青.基于Microblaze的嵌入式系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2006,29(10):56-57.
[5]劉安,禹衛(wèi)東,馬小兵,等.基于FPGA的高速串行數(shù)據(jù)收發(fā)接口設(shè)計[J].電子技術(shù)應(yīng)用,2017(6):48-51.
[6]單超,王萍,朱愛民,等.基于Microblaze軟核的嵌入式系統(tǒng)設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011,11(3):18-21.
[7]路后兵.Xilinx FPGA的嵌入式系統(tǒng)開發(fā)過程[J].單片機(jī)與嵌入式系統(tǒng)應(yīng),2012,12(11):32-34.
[8]劉雨沁,郭元興,劉繼平.基于FPGA的SDIO通信接口的設(shè)計實現(xiàn)[J].通信技術(shù),2017,50(11):2632-2636.
[9]張強(qiáng),王華,蘇宏鋒,等.基于Xilinx FPGA的硬件協(xié)處理器設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2017(4):173-174.
[10]阮芳,馮永新.基于Xilinx Microblaze的嵌入式I/O系統(tǒng)設(shè)計與實現(xiàn)[J].電子器件,2008,31(2):626-630.