黃秋元,劉東
(武漢理工大學(xué)信息工程學(xué)院,武漢430070)
劉東(碩士研究生),主要研究方向?yàn)榍度胧较到y(tǒng)應(yīng)用開發(fā)與高速電路設(shè)計(jì)仿真。
M1A3P1000內(nèi)置Cortex-M1內(nèi)核,功能強(qiáng)大,內(nèi)部已經(jīng)集成了多種控制器資源,因此可比較方便地在片外添加相應(yīng)外設(shè)。本開發(fā)平臺(tái)在硬件設(shè)計(jì)上,采用 FPGA主板加擴(kuò)展子板的架構(gòu),可以通過(guò)豐富的GPIO資源進(jìn)行系統(tǒng)級(jí)的軟、硬件設(shè)計(jì)開發(fā);也可進(jìn)行功能擴(kuò)展,進(jìn)行相關(guān)的產(chǎn)品設(shè)計(jì)。平臺(tái)硬件結(jié)構(gòu)如圖1所示,主板電路以M1A3P1000為處理器,按照功能可分為:電源部分、緩沖部分、存儲(chǔ)器擴(kuò)展部分(包括SDRAM 、SRAM、NOR Flash等)、IrDA、USB控制器、子板擴(kuò)展部分等。
(1)電源模塊
開發(fā)平臺(tái)用到的標(biāo)準(zhǔn)電壓有:5 V、3.3 V、1.8 V、1.5 V,需要給FPGA內(nèi)核、存儲(chǔ)器、IrDA、外部的高速擴(kuò)展子板等器件供電,要求電壓穩(wěn)定??紤]到 DC—DC紋波較大,調(diào)試比較繁瑣,另外平臺(tái)所需電流也較大,因此選用有較高 PSRR的 LDO(低壓差線性穩(wěn)壓器)芯片,EXRA公司的SP29302以及NS公司的 LM1117。
圖1 開發(fā)平臺(tái)結(jié)構(gòu)框圖
SP29302輸出電流3 A,LM1117輸出電流800 mA,精度±1%。電源部分結(jié)構(gòu)框圖如圖2所示,平臺(tái)采用5 V電壓適配器直流輸入,通過(guò) LM1117轉(zhuǎn)換為3.3 V,給FPGA的I/O供電。還有一路通過(guò)SP29302轉(zhuǎn)換為3.3 V給存儲(chǔ)器、子板電路及其他外設(shè)供電,然后此路3.3 V再經(jīng)過(guò)LM1117轉(zhuǎn)換為1.5 V給FPGA內(nèi)核供電,另一個(gè)LM1117轉(zhuǎn)換為1.8 V給IrDA和Buffer供電。
圖2 電源部分結(jié)構(gòu)框圖
(2)存儲(chǔ)器部分
考慮到處理能力、易擴(kuò)展性等因素,本系統(tǒng)平臺(tái)共采用了3種類型的存儲(chǔ)器:NOR Flash、SDRAM 、SRAM,默認(rèn)訪問(wèn)數(shù)據(jù)寬度均32位。
Flash存儲(chǔ)器具有低功耗、大容量、擦寫速度快等特點(diǎn),一般分為NOR Flash和NAND Flash兩類。NOR Flash可以直接運(yùn)行裝載于NOR Flash里面的代碼,在系統(tǒng)啟動(dòng)的時(shí)候直接運(yùn)行它,不必再把代碼讀到系統(tǒng)RAM中。NAND Flash能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,且寫入和擦除的速度也很快;其缺點(diǎn)是比較容易出現(xiàn)壞塊,不能直接運(yùn)行NAND Flash上的代碼。本系統(tǒng)平臺(tái)選用2片Spasion公司的NOR Flash存儲(chǔ)器S29JL064H,容量為4M×16位,工作電壓2.7~3.6 V,CPU可對(duì)其32位操作,一片為高16位,一片為低16位,兩片復(fù)用地址線。NOR Flash主要用于存儲(chǔ)啟動(dòng)代碼、操作系統(tǒng)、用戶應(yīng)用程序及數(shù)據(jù)信息等,連接示意圖如3所示。
圖3 NORFlash電路連接框圖
SDRAM具有單位空間存儲(chǔ)容量大、速度快、價(jià)格低等優(yōu)點(diǎn),其存儲(chǔ)單元可理解為一個(gè)電容,必須定時(shí)刷新(充電)來(lái)避免數(shù)據(jù)丟失。為充分發(fā)揮32位Cortex-M1內(nèi)核的處理能力,本文并聯(lián) 2片ISSI公司 16 MB的IS42S16400A,構(gòu)建32位的SDRAM 存儲(chǔ)系統(tǒng),工作電壓3.3 V。如圖4所示,用于存放系統(tǒng)及用戶堆棧、程序代碼及大量動(dòng)態(tài)數(shù)據(jù),也是程序運(yùn)行的場(chǎng)所。
SRAM處理速度快,加電情況下不需刷新,數(shù)據(jù)不會(huì)丟失,常用作高速緩存容量較低的情況。本開發(fā)平臺(tái)采用了ISSI公司的2片1 MB的SRAM IS61LV51216,通過(guò)SRAM_CS0和SRAM_CS1信號(hào)實(shí)現(xiàn)16位和32位操作。由于Flash、SRAM、USB、IrDA、擴(kuò)展BUS等總線設(shè)備均通過(guò)內(nèi)部MemC-trl控制器控制,考慮到FPGA的I/O扇出問(wèn)題,加入了緩沖芯片Buffer,增加扇出能力。連接框圖如圖5所示。
圖5 SRAM電路連接框圖
(3)USB及ⅠrDA部分
為保證FPGA能與PC側(cè)實(shí)現(xiàn)快速的數(shù)據(jù)交換,通過(guò)FPGA的I/O口采用總線方式擴(kuò)展了USB Host控制器。芯片采用Cypress公司的CY7C68013A來(lái)實(shí)現(xiàn),時(shí)鐘由24 MHz晶振提供,支持USB2.0協(xié)議,速度可達(dá)480 Mbps,16位數(shù)據(jù)總線加入Buffer,增加驅(qū)動(dòng)能力。EEPROM芯片24LC64用來(lái)存儲(chǔ)CY7C68013A啟動(dòng)的程序和數(shù)據(jù),數(shù)據(jù)交換由I2C總線實(shí)現(xiàn)。電路結(jié)構(gòu)框圖如圖6所示。
圖6 USB電路連接框圖
紅外通信(IrDA)部分選用ROHM公司的IrDA控制模 塊 BU92004AGU 和 通 信 芯 片 RPM972-H14。BU92004AGU內(nèi)置5 KB的FIFO,以幀為單位分割數(shù)據(jù),數(shù)據(jù)總線16位,且不需DMA控制,分別為讀寫控制、片選及中斷信號(hào),均低電平有效。通過(guò)16位數(shù)據(jù)總線和4位地址總線與FPGA實(shí)現(xiàn)數(shù)據(jù)傳輸,而其與通信芯片RPM972-H14的數(shù)據(jù)傳輸由TX、RX串口實(shí)現(xiàn),工作時(shí)鐘由外部48 MHz晶振提供,支持SIR和FIR,最高速率可達(dá)4 Mbps。由于 RPM972-H14內(nèi)部發(fā)光二極管需要電流較大,約為200~300 mA,因此通過(guò)VCC5給內(nèi)部LED供電,I/O電壓為3.3 V,FPGA通過(guò)IrDA_PWDN信號(hào)對(duì)IrDA模塊實(shí)現(xiàn)功耗控制,由10 k Ω電阻下拉,默認(rèn)為低電平。IrDA部分電路結(jié)構(gòu)框圖如圖7所示。
圖7 IrDA電路連接框圖
(4)外部總線擴(kuò)展
平臺(tái)通過(guò)64腳連接器擴(kuò)展了24位地址線、16位數(shù)據(jù)位、GPIO、各類控制信號(hào),還擴(kuò)展了 RS232接口、2個(gè)JTAG接口(20腳的用于 Cortex-M1調(diào)試、10腳的用于FPGA配置)。另外,擴(kuò)展10個(gè)子板連接器,提供I2C總線、SPI總線、UART、GPIO 及 3.3 V 電壓。通過(guò)這些擴(kuò)展口可以方便地實(shí)現(xiàn)多功能的項(xiàng)目開發(fā)。
本開發(fā)平臺(tái)的多功能體現(xiàn)在,通過(guò)豐富的I/O資源擴(kuò)展出多個(gè)連接器,分別設(shè)計(jì)了400 M Hz RF、藍(lán)牙、GPS、溫度傳感器、陀螺儀等多個(gè)子板,插拔靈活,支持不同項(xiàng)目開發(fā),可滿足多功能開發(fā)的需求。由于篇幅有限,本文只介紹GPS子板的設(shè)計(jì)。
GPS子板采用Fastrax公司的IT310模塊。該模塊內(nèi)置RFIC和基帶處理IC,固件可從串口更新,內(nèi)部可產(chǎn)生32.768 kHz的RTC時(shí)鐘和16.369 MHz的主時(shí)鐘,工作電壓3.3 V,功耗典型值為110 mW,RF輸入最大值+15 dBm,電路設(shè)計(jì)結(jié)構(gòu)框圖如圖8所示。
圖8 GPS子板電路結(jié)構(gòu)框圖
GPS天線采用片式天線,中心頻率為1 575 MHz,帶寬20 M Hz,增益大于1 dB,另外預(yù)留了有源天線SMA接頭,增加設(shè)計(jì)靈活性。在RF信號(hào)進(jìn)入GPS模塊之前加入了低噪聲放大器(LNA)NGJ1107,其內(nèi)部集成DC隔離電容、偏置電路、放大電路,工作頻段在1.5 GHz~2.4 GHz之間,工作電流僅為2.5 mA。GPS子板通過(guò)擴(kuò)展連接器與FPGA主板對(duì)接,由串口RX和TX信號(hào)實(shí)現(xiàn)數(shù)據(jù)傳輸,BOOT信號(hào)可實(shí)現(xiàn)UART和內(nèi)部Flash啟動(dòng)模式選擇,調(diào)試方便;FPGA通過(guò)RST_N信號(hào)對(duì)GPS模塊復(fù)位,ECLK是預(yù)留的外部時(shí)鐘輸入,需由10 kΩ電阻上拉至3.3 V;TSYNC是同步脈沖信號(hào),上升沿觸發(fā),由FPGA控制同步接收衛(wèi)星數(shù)據(jù),默認(rèn)為低電平,由10 kΩ電阻下拉至地。子板無(wú)獨(dú)立電源,3.3 V由主板提供,并通過(guò)MOSFET實(shí)現(xiàn)功耗控制,不用時(shí)將其切斷,也可由跳線實(shí)現(xiàn)。為保證內(nèi)部RTC持續(xù)工作,時(shí)間信息不丟失,斷電時(shí)由3 V/150 mA的鋰電池為RTC提供備份電壓VCC_RTC。
主板采用8層PCB,疊層結(jié)構(gòu)為:信號(hào)層—地層—信號(hào)層—地層—電源層—信號(hào)層—地層—信號(hào)層,復(fù)用總線器件采用菊花鏈布局。疊層中單獨(dú)設(shè)置電源層并對(duì)其分割,以降低直流阻抗。FPGA每?jī)蓚€(gè)電源引腳加入 1個(gè)0.1 μ F電容 ,每一個(gè) bank 加入 1 個(gè) 10 μ F 和 1 個(gè)1 μ F電容,濾除高頻噪聲、抑制紋波,電源走線需在0.5 mm以上,按1 A/1 mm的規(guī)則計(jì)算。對(duì)于SRAM、SDRAM等數(shù)據(jù)線和地址線,走蛇形線,同類走線走一層,使其等長(zhǎng),在時(shí)鐘周期內(nèi)時(shí)延一致,保證信號(hào)完整,但需保證其自身走線之間寬度3倍于線寬,防止串?dāng)_。對(duì)于時(shí)鐘、片選和總線信號(hào),應(yīng)盡量遠(yuǎn)離I/O線和接插件。晶振走線盡量短而寬,且少打過(guò)孔,并用地線包裹,屏蔽輻射,減少干擾。對(duì)數(shù)據(jù)線和時(shí)鐘線進(jìn)行SI仿真,修改優(yōu)化布線規(guī)則,盡量做到一次投板成功,縮短開發(fā)周期。
GPS子板采用4層PCB,疊層結(jié)構(gòu)為:信號(hào)層—地層—信號(hào)層—地層。RF信號(hào)及低頻信號(hào)走Top層,其他關(guān)鍵信號(hào)走中間層,保證關(guān)鍵走線屏蔽良好。RF信號(hào)需進(jìn)行50 Ω阻抗匹配,與鋪銅地網(wǎng)絡(luò)距離要大于6 mm,可減小耦合衰減與串?dāng)_。LNA的地引腳應(yīng)多點(diǎn)有效接地,為RF信號(hào)提供較好的屏蔽。
M1A3P1000內(nèi)部集成了Cortex-M1處理器,該處理器內(nèi)核是基于ARM公司推出的AMBA總線架構(gòu),包括AHB和APB。AHB是片內(nèi)高速總線,主要用于掛載高性能高時(shí)鐘頻率模塊,支持多主控制器,可配置32~128位總線寬度;APB主要用于掛載低帶寬低頻率的周邊外設(shè),不支持多主模塊,唯一的主模塊是AHB2APB橋。M1A3P1000內(nèi)部的SoC是在 Libero8.5平臺(tái)上搭建的,具體結(jié)構(gòu)如圖9所示。
圖9 SoC結(jié)構(gòu)框圖
基于 AHB和 APB掛載了 Cortex-M1、CoreAhb-Sram 、CoreRemap、CoreInterrup、CorePWM 、CoreWatchdog 、CoreSPI、CoreIIC 、Core16500 、CoreUART 、CoreSDR 、GPIO、CoreMemctrl等多種 IP核,AHB與 APB之間以AHB2APB橋連接,主要用來(lái)鎖存來(lái)自AHB系統(tǒng)總線的地址、數(shù)據(jù)和控制信號(hào),并提供二級(jí)譯碼以產(chǎn)生APB外設(shè)的選擇信號(hào),實(shí)現(xiàn) AHB協(xié)議到 APB協(xié)議的轉(zhuǎn)換,也是Cortex-M1對(duì)外設(shè)控制的橋梁。通過(guò)JTAG接口調(diào)試Cortex-M1內(nèi)核。CoreInterrupt核可支持32個(gè)IRQ和8個(gè)FIQ中斷源。由外部復(fù)位電路輸入RESET信號(hào)為系統(tǒng)復(fù)位,通過(guò)PLL硬核作為時(shí)鐘分配器,只需1個(gè)14.745 6 MHz的板級(jí)晶振輸入系統(tǒng)時(shí)鐘SYSCLK,即可配置參數(shù)產(chǎn)生多種時(shí)鐘,由時(shí)鐘樹給系統(tǒng)及各模塊提供時(shí)鐘,避免了在板級(jí)加入多個(gè)晶振所帶來(lái)的SI問(wèn)題,減小PCB設(shè)計(jì)難度,增強(qiáng)平臺(tái)的穩(wěn)定性。
Actel公司提供的CoreSDR模塊沒有提供AHB slave接口,無(wú)法直接操作外掛SDRAM,因此在Libero8.5平臺(tái)上,由Verilog語(yǔ)言實(shí)現(xiàn)了簡(jiǎn)單的CoreSDR設(shè)計(jì),并通過(guò)Modelsim前仿,可對(duì)SDRAM正確讀寫,成功進(jìn)行平臺(tái)協(xié)同驗(yàn)證。
CoreSDR作為掛載在AHB上的Slave設(shè)備,是 AHB與SDRAM數(shù)據(jù)讀寫的紐帶,包括控制、刷新、數(shù)據(jù)通路3個(gè)模塊。其作用分別為:控制模塊接收來(lái)自AHB總線的命令、地址等信息,對(duì)刷新請(qǐng)求、讀寫請(qǐng)求等進(jìn)行仲裁,產(chǎn)生接口控制命令、時(shí)序參數(shù)和存儲(chǔ)器訪問(wèn)地址,對(duì)SDRAM器件進(jìn)行操作;刷新模塊產(chǎn)生周期性的刷新命令請(qǐng)求,根據(jù)不同的SDRAM設(shè)置刷新計(jì)數(shù)器值,當(dāng)計(jì)數(shù)器減到0時(shí),產(chǎn)生刷新請(qǐng)求信號(hào)REF_REQ;數(shù)據(jù)通路模塊控制數(shù)據(jù)以正確的時(shí)序在AHB與SDRAM之間有效傳輸。CoreSDR結(jié)構(gòu)框圖如圖10所示。右端為SDRAM常用信號(hào),左端作為Slave設(shè)備與AHB的連接情況。其中HCLK為系統(tǒng)時(shí)鐘;HRST_N為復(fù)位信號(hào);HREADY為傳輸狀態(tài),1表示傳輸完成,0表示傳輸未完成,需延長(zhǎng)傳輸時(shí)間;HRESP表示傳輸響應(yīng)信息;HRDATA表示讀數(shù)據(jù)總線;HSEL為從設(shè)備選擇信號(hào);HWRITES表示寫數(shù)據(jù)信號(hào);HSIZES為AHB傳輸寬度指示(字、字節(jié)、半字等),本系統(tǒng)中位寬為32位,設(shè)置為010;HTRANS表示當(dāng)前傳輸數(shù)據(jù)的類型;HWDATA 表示寫數(shù)據(jù)總線,支持32比特傳輸。
CoreSDR的狀態(tài)機(jī)主要分3個(gè)操作:初始化、寫操作、讀操作。在上電復(fù)位后進(jìn)行初始化操作,首先配置寄存器(sdr_cfg),主要包括設(shè)置刷新計(jì)數(shù)器值、定義延時(shí)參數(shù) Tcl、tRAS、設(shè)定 SDRAM大小、bank數(shù)目、列的位寬,然后執(zhí)行初始化操作,包括對(duì)所有bank執(zhí)行預(yù)充電、執(zhí)行模式寄存器寫命令、啟動(dòng)自動(dòng)刷新、進(jìn)入正常讀寫狀態(tài)。
圖10 CoreSDR結(jié)構(gòu)框圖
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]ProASIC3 Flash Family FPGAs Datasheet[EB/OL].[2009-08-16].http://www.actel.com/documents/PA3_DS.pdf.
[2]周潤(rùn)景,袁偉亭.Cadnec高速電路設(shè)計(jì)與仿真[M].北京:電子工業(yè)出版社,2007.
[3]IT310 specification[EB/OL].[2009-08-16].http://www.Fastrax.com.
[4]李瑞,趙建明,等.基于SOC的SDRAM 控制器的分析與設(shè)計(jì)[J].信息技術(shù),2007(12).