摘要:在軟件接收機(jī)的研究中,,為了實(shí)現(xiàn)在GPS或者北斗模式下基帶對(duì)射頻前端數(shù)據(jù)的采集,,在Altera公司的CycloneⅢ系列FPGA器件上采用VERILOG語(yǔ)言編寫(xiě)了SPI總線協(xié)議,完成了對(duì)射頻前端芯片GPS/北斗兩種工作模式的切換,,使基帶可以隨時(shí)獲得兩種模式下的數(shù)據(jù),。通過(guò)驗(yàn)證,采集來(lái)的數(shù)據(jù)與期望的結(jié)果一致,。同時(shí)為工程設(shè)計(jì)提供了一種原型,,也為進(jìn)一步的工程開(kāi)發(fā)奠定了基礎(chǔ)。
關(guān)鍵詞:SPI總線協(xié)議,;FPGA,;射頻前端;基帶
隨著現(xiàn)代技術(shù)的發(fā)展,,SPI接口總線已經(jīng)成為了一種標(biāo)準(zhǔn)的接口,,由于協(xié)議實(shí)現(xiàn)簡(jiǎn)單,并且I/O資源占用少,,為此SPI總線的應(yīng)用十分廣泛,。目前,SPI接口的軟件擴(kuò)展方法雖然簡(jiǎn)單方便,,但若用來(lái)通信,,則速度受到限制。因此,,我們采用ALTERA公司的FPGA器件設(shè)計(jì)SPI總線的通信接口,,該總線接口具有高速、配置靈活等優(yōu)點(diǎn),,大大地縮短了系統(tǒng)的開(kāi)發(fā)周期,。
1 SPI總線原理
1.1 SPI總線協(xié)議簡(jiǎn)介
SPI總線是一種全雙工同步串行接口,能夠?qū)崿F(xiàn)微控制器與外設(shè)通信,。它采用主從模式架構(gòu),,支持多slave模式應(yīng)用,并且只占用芯片上四個(gè)管腳,,節(jié)省了芯片的引腳,。
1.2 SPI總線接口
SPI是一個(gè)環(huán)形總線結(jié)構(gòu),,通常有4條線:串行時(shí)鐘(SCK)線、主機(jī)輸入/從機(jī)輸出(MISO)數(shù)據(jù)線,,主機(jī)輸出/從機(jī)輸入(MOSI)數(shù)據(jù)線和低電平有效的從機(jī)選擇線(CS),。
SPI總線在與外設(shè)進(jìn)行數(shù)據(jù)交換時(shí),可根據(jù)外設(shè)的工作要求,,配置SCK的相位和極性,,從而產(chǎn)生不同的數(shù)據(jù)格式。如果時(shí)鐘相位CPFIA=0,,數(shù)據(jù)在時(shí)鐘脈沖的前沿被采樣,;如果時(shí)鐘相位CPHA=1,數(shù)據(jù)在時(shí)鐘脈沖的后沿被采樣,。如果時(shí)鐘的極性CPOL=0,,串行數(shù)據(jù)的移位操作由時(shí)鐘的正脈沖觸發(fā);如果時(shí)鐘的極性CPOL=1,,串行數(shù)據(jù)的移位操作由時(shí)鐘的負(fù)脈沖觸發(fā),。因此,SPI主模塊和從模塊的時(shí)鐘相位和極性應(yīng)該一致,。
2 開(kāi)發(fā)平臺(tái)介紹
本文主要介紹在FPGA中實(shí)現(xiàn)基帶對(duì)射頻前端數(shù)據(jù)的采集,,通過(guò)SPI總線實(shí)現(xiàn)對(duì)射頻前端模式的轉(zhuǎn)換。當(dāng)射頻前端被配置為GPS模式時(shí),,采集到的數(shù)據(jù)來(lái)自GPS衛(wèi)星,;當(dāng)被配置為北斗模式時(shí),采集到的數(shù)據(jù)來(lái)自北斗衛(wèi)星,。本文選用的芯片為杭州中科微有限公司HZG09V2D和ALTERA公司Cyclone III系列中的EP3C40Q240C8,。接口之問(wèn)的連接關(guān)系如圖1所示。
HZG09V2D是杭州中科微有限公司的一款射頻芯片,,它是一款工作在L1頻段的多模式衛(wèi)星導(dǎo)航射頻前端接收芯片,,可支持L1頻段中國(guó)北斗二代、美國(guó)GPS,、俄羅斯GLONASS,、歐洲伽利略等多個(gè)導(dǎo)航系統(tǒng)。
EP3C40Q240C8是Altera公司CycloneⅢ系列中的一款FPGA芯片,,它前所未有地同時(shí)實(shí)現(xiàn)了低功耗,、低成本和高性能。其中CycloneⅢFPGA在布局上提供豐富的存儲(chǔ)器和乘法器資源,,并且所有體系結(jié)構(gòu)都含有非常高效的互聯(lián),。
3 FPGA實(shí)現(xiàn)與調(diào)試結(jié)果
3.1 實(shí)現(xiàn)步驟
首先使用ModelSim SE 6.2對(duì)所編寫(xiě)的Verilog代碼進(jìn)行編譯仿真,從而得到對(duì)功能的驗(yàn)證,。再用QuartusⅡ軟件進(jìn)行編譯后,,將生成的編程文件.sof文件通過(guò)JTAG下載到Altera公司CycloneⅢ系列EP3C40Q240C8運(yùn)行,在數(shù)字示波器的輔助分析下都得到了正確的結(jié)果,。
3.2 模塊設(shè)計(jì)
3.2.1 分頻模塊
由于SPI總線協(xié)議要求的SCK時(shí)鐘頻率與FPGA時(shí)鐘頻率不一致,,所以對(duì)基帶時(shí)鐘進(jìn)行分頻。本文中,,基帶時(shí)鐘頻率為40 MHz,,SPI總線時(shí)鐘頻率為1 MHz,故需要進(jìn)行40倍分頻,。
3.2.2 發(fā)送數(shù)據(jù)模塊
在片選信號(hào)拉低之前,,時(shí)鐘信必須為低電平。當(dāng)片選信號(hào)拉低后,,SCK開(kāi)始工作,,然后寫(xiě)八位地址,接著寫(xiě)32位數(shù)據(jù),;發(fā)送操作結(jié)束后,,片選信號(hào)拉高,SCK=0,。代碼如下:
3.2.3 接收數(shù)據(jù)模塊
當(dāng)片選拉低后,,SCK=0,同時(shí)寫(xiě)八位地址并且使SDA為高阻,,再讀32位數(shù)據(jù),;當(dāng)片選拉高時(shí),CS=1,,SCK=0,,此外,在片選信號(hào)拉低之前,,SCK必須為低電平,。代碼如下:
3.2.4 配置模塊
配置模塊發(fā)送GPS/Compass模式配置命令給SPI功能模塊,從而實(shí)現(xiàn)一次完整的射頻前端工作模式配置,。其中,,射頻前端有5個(gè)與SPI相關(guān)的配置寄存器,具體模式配置命令如下:
3.3 仿真結(jié)果
在GPS模式下,,實(shí)現(xiàn)了寄存器的讀寫(xiě)時(shí)序,,如圖2所示。
在GPS/Compass模式下,,實(shí)現(xiàn)了5個(gè)地址的寫(xiě)操作和讀操作,。在基帶處理中,將讀出來(lái)的數(shù)據(jù)與設(shè)定好的配置的數(shù)據(jù)進(jìn)行對(duì)比,,當(dāng)結(jié)果一致后,,就完成了一次正確的配置操作,。如圖3所示。
3.4 RTL視圖
RTL視圖由兩個(gè)模塊組成,,分別為ModeSet和newspi,,其中ModeSet模塊的功能是發(fā)送命令來(lái)配置射頻前端的模式,newspi模塊實(shí)現(xiàn)射頻前端和基帶之間具體的數(shù)據(jù)讀寫(xiě),。如圖4所示,。
4 結(jié)語(yǔ)
在現(xiàn)代SPI總線得到了廣泛的應(yīng)用,它能夠有效地與FPGA編程結(jié)合在一起,,利用FPGA的靈活性,,將大大減少了電子設(shè)計(jì)的開(kāi)發(fā)周期。本文通過(guò)FPGA實(shí)現(xiàn)了射頻前端GPS/北斗模式的切換,,為將來(lái)射頻前端多模設(shè)計(jì)奠定了基礎(chǔ),,并且可通過(guò)外部器件查看讀寫(xiě)操作是否完成,從而實(shí)現(xiàn)了實(shí)時(shí)配置,。