FPGA_ASIC-SOPC技術(shù)在多總線融合測試系統(tǒng)中的應(yīng)用_第1頁
FPGA_ASIC-SOPC技術(shù)在多總線融合測試系統(tǒng)中的應(yīng)用_第2頁
FPGA_ASIC-SOPC技術(shù)在多總線融合測試系統(tǒng)中的應(yīng)用_第3頁
FPGA_ASIC-SOPC技術(shù)在多總線融合測試系統(tǒng)中的應(yīng)用_第4頁
FPGA_ASIC-SOPC技術(shù)在多總線融合測試系統(tǒng)中的應(yīng)用_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 電子發(fā)燒友 電子技術(shù)論壇SOPC技術(shù)在多總線融合測試系統(tǒng)中的應(yīng)用作者:方甲永,肖明清,劉文杰 來源:微計算機(jī)信息摘 要:多總線融合測試系統(tǒng)基于LXI總線,兼容PXI、VXI、GPIB、1553B、ARINC429,RS422、RS485總線。實現(xiàn)多總線融合的測試系統(tǒng)必須解決LXI總線到其它總線的協(xié)議轉(zhuǎn)換。本文采用SOPC技術(shù)在一塊FPGA芯片上實現(xiàn)了LXI到GPIB、1553B、ARINC429、RS485、RS422總線的協(xié)議轉(zhuǎn)換,軟件層基于µC/OS-實時操作系統(tǒng)和lwip協(xié)議,開發(fā)了應(yīng)用程序。關(guān)鍵詞:多總線融合;SOPC;µC/OS-;Lwip目前測控系統(tǒng)中儀器與計

2、算機(jī)之間常見的連接方式有串行總線、并行總線。串行總線主要有RS-232總線、RS-422總線、RS-485總線、USB總線、IEEE1394(FireWire)總線、ARINC 429總線和1553B總線等;并行總線中主要有IEEE-488(GPIB)總線、SCSI總線、MXI總線等。每種總線都有其各自的特色和相應(yīng)的應(yīng)用領(lǐng)域。目前尚沒有那種總線能夠適用于所有的應(yīng)用領(lǐng)域,因此多總線共存的局面將在很長一段時間存在。典型的多總線融合式自動測試系統(tǒng)包含的總線平臺有LXI、PXI、VXI、GPIB、1553B、ARINC429、RS485、RS422等。由于各種總線的機(jī)械特性、電氣特性、傳輸協(xié)議等標(biāo)準(zhǔn)的

3、不同,只有在數(shù)字接口總線上開發(fā)出一系列接口轉(zhuǎn)換器,才能使不同的總線相互兼容。1 多總線融合測試系統(tǒng)的模型和解決方案組建多總線融合的自動測試系統(tǒng)必須以一種總線為主,本系統(tǒng)基于LXI總線,融合了PXI、VXI、GPIB、1553B、ARINC429、RS485、RS422等總線,系統(tǒng)模型如圖1所示。選用LXI總線作為基礎(chǔ)總線組建系統(tǒng)是由其本身的優(yōu)點(diǎn)和測試系統(tǒng)的發(fā)展趨勢決定的。2004 年Agilent公司和VXI科技公司在結(jié)合了GPIB和VXI總線優(yōu)點(diǎn)的基礎(chǔ)上,開發(fā)了基于以太網(wǎng)的LXI總線1。Agilent公司指出了組建LXI自動測試系統(tǒng)的10個優(yōu)點(diǎn):易于使用、靈活性高、模塊化和可擴(kuò)縮性、性能強(qiáng)、

4、分布式應(yīng)用、長壽命、成本低、通過IEEE1588同步、機(jī)架空間、合成儀器,LXI 解決了系統(tǒng)開發(fā)者所面臨的各種主要問題:降低成本、縮小系統(tǒng)尺寸、簡化集成、提高吞吐率,以及為硬件和軟件的重復(fù)利用提供更多機(jī)會2。這些好處使LXI 成為適應(yīng)當(dāng)前和未來的測試體系結(jié)構(gòu)的新一代總線。1 電子發(fā)燒友 電子技術(shù)論壇圖1 多總線融合測試系統(tǒng)模型基于LXI總線組建多總線測試系統(tǒng),其他測試總線系統(tǒng)向LXI總線轉(zhuǎn)換可以分為兩種情況:1)VXI、PXI總線系統(tǒng)需要零槽控制器來完成LXI到PXI、VXI的轉(zhuǎn)換,這些零槽控制器不僅具備協(xié)議轉(zhuǎn)換的功能而且具有獨(dú)立的嵌入式處理器和時鐘,來完成對VXI、PXI板卡的控制,這類轉(zhuǎn)換

5、器開發(fā)困難,所以本系統(tǒng)選用了市場上成熟的商品;2)LXI到GPIB、1553B、ARINC429、RS422、RS485的擴(kuò)展,相對于第1種情況,這類轉(zhuǎn)換器開發(fā)起來比較簡單。轉(zhuǎn)換器主要完成協(xié)議間的轉(zhuǎn)換,所以我們基于SOPC技術(shù)開發(fā)了通用總線轉(zhuǎn)換器。2 基于SOPC技術(shù)通用總線轉(zhuǎn)換器的總體設(shè)計方案SOPC(System on a Programmable Chip,片上可編程系統(tǒng))是由Altera公司倡導(dǎo)提出的,這個概念其實是SOC(System On Chip,片上系統(tǒng))概念的擴(kuò)展。它將處理器、存儲器、I/O口、LVDS、CDR等系統(tǒng)設(shè)計需要的功能模塊集成到一個PLD器件上,具有靈活的設(shè)計方式

6、、可裁減、可擴(kuò)充、可升級,并具備軟硬件在系統(tǒng)的可編程能力5。Nios II是Altera特有的基于通用FPGA架構(gòu)的軟CPU內(nèi)核。一個Nios II處理器由Nios II CPU和一系列外設(shè)組成,Altera提供SOPC Builder軟件用于生成所需要的處理器結(jié)構(gòu)。本轉(zhuǎn)換器所需生成的CPU及功能外設(shè)包括:32位標(biāo)準(zhǔn)型Nios II軟核、串口組件、以太網(wǎng)組件、1553B組件,其中1553B為用戶自定義外設(shè)組件,其他兩個外設(shè)組件Altera已經(jīng)提供。 電子發(fā)燒友 電子技術(shù)論壇轉(zhuǎn)換器總體功能結(jié)構(gòu)框圖如圖2所示,其中 RS485、RS422接口由Nios II自帶的UART外設(shè)加相應(yīng)的電平轉(zhuǎn)換芯片產(chǎn)

7、生;以太網(wǎng)接口采用Nios II提供的LAN 91C111控制組件,并用相應(yīng)的控制芯片LAN 91C111實現(xiàn),而對于1553B總線Nios II并沒有提供外設(shè)組件,因此針對1553B的實現(xiàn)有三種方案可以選擇:1)在FPGA剩余的門電路中,用硬件描述語言實現(xiàn)1553B邏輯;2)采用外部協(xié)議轉(zhuǎn)換芯片,并且把協(xié)議芯片當(dāng)作普通的外部設(shè)備PIO來控制;3)采用外部協(xié)議轉(zhuǎn)換芯片,定制用戶外設(shè),把協(xié)議芯片當(dāng)作外部存儲設(shè)備來控制。從以上三種方案中不難看出,第一種方案實現(xiàn)難度最大,需要用戶對1553B協(xié)議非常熟悉。第二種方案實現(xiàn)最為簡單,但是這種方案適于較為簡單的組件,對于1553B協(xié)議控制芯片,如采用這種方

8、案將極大的增加軟件的工作量。對于第三種方案,用戶自定義組件、自定義指令,不僅極大地減少了軟件工作量,而且自定義的組件可以進(jìn)行封裝后重復(fù)利用,同時自定義指令也提高了執(zhí)行效率。所以我們采用了方案3來實現(xiàn)1553B邏輯。圖2 通用轉(zhuǎn)換器總體設(shè)計方案GPIB、ARINC429總線,因為他們的邏輯實現(xiàn)起來比較簡單,而且有成熟的FPGA硬件邏輯設(shè)計電路,所以我們在FPGA芯片剩余的空間內(nèi)用VerilogHDL硬件描述語言來實現(xiàn)。3 開發(fā)流程 電子發(fā)燒友 電子技術(shù)論壇圖3 開發(fā)流程圖系統(tǒng)的開發(fā)可以分為三部分,如圖3所示。三部分可以同時進(jìn)行也可以分別進(jìn)行,第一部分為Nios II軟核處理器及其外設(shè)的設(shè)計,所用

9、的軟件為SOPC Builder ,需要做的主要工作是自定義組件BU61688控制邏輯的設(shè)計。第二部分GPIB和ARINC429總線邏輯Verilog HDL 源代碼的書寫,所用的軟件是Quartus II,第一部分生成的Nios II 處理器及其外設(shè)與第二部分的總線邏輯也是在Quartus II軟件中通過原理圖輸入方式或文本輸入方式進(jìn)行組合的。第三部分為操作軟件的書寫,是在開發(fā)環(huán)境Nios II IDE中進(jìn)行的,所需做的主要工作是在µC/OS-實時操作系統(tǒng)的基礎(chǔ)上開發(fā)應(yīng)用程序,主要包括TCP/IP協(xié)議的實現(xiàn),嵌入式Web界面的實現(xiàn),以及與其它接口進(jìn)行通訊的應(yīng)用程序。4 基于

10、1;C/OS-實時操作系統(tǒng)的軟件設(shè)計在Nios II IDE中進(jìn)行軟件設(shè)計時需要實現(xiàn)復(fù)雜的TCP/IP協(xié)議,并且要進(jìn)行網(wǎng)絡(luò)接口到其它數(shù)據(jù)接口轉(zhuǎn)化的多任務(wù)操作,如果不采用嵌入式操作系統(tǒng),軟件的工作量很大,而且工作效率也比較低。在Nios II IDE中已經(jīng)移植了µC/OS-操作系統(tǒng),而且移植了基于µC/OS-操作系統(tǒng)的輕量TCP/IP協(xié)議,這就大大降低了我們編程的工作量。4.1 嵌入式TCP/IP協(xié)議的實現(xiàn)。Nios II IDE中已經(jīng)嵌入了lwip協(xié)議,具體的實現(xiàn)過程及實現(xiàn)函數(shù)如圖4所示4。 電子發(fā)燒友 電子技術(shù)論壇圖4 lwip協(xié)議實現(xiàn)過程接收數(shù)據(jù)流程:網(wǎng)絡(luò)接口驅(qū)動通過l

11、ow_level_input()函數(shù)從網(wǎng)絡(luò)接口接收數(shù)據(jù)包,區(qū)分是ARP包還是IP包。如果是ARP包將調(diào)用ARP功能函數(shù)處理這個包,如果是ARP請求,則發(fā)送一個ARP地址應(yīng)答包,如果是ARP應(yīng)答報,則更新ARP地址影射表。如果是一個IP包,則更新ARP地址影射表,然后將數(shù)據(jù)包交由ip_input()函數(shù)處理,ip_input()函數(shù)將數(shù)據(jù)包進(jìn)行簡單的處理后分析該數(shù)據(jù)包是否需要轉(zhuǎn)發(fā),如果需要則進(jìn)行轉(zhuǎn)發(fā),如果數(shù)據(jù)包有誤則發(fā)送ICMP包。如果該包是發(fā)送給本機(jī)的正常數(shù)據(jù)包,ip_input()則根據(jù)數(shù)據(jù)包的類型,分別發(fā)送給udp_input(),tcp_input()或icmp_input()函數(shù)進(jìn)行處

12、理。如果是發(fā)送給icmp_input()的的數(shù)據(jù)包則必然是echo包,由icmp處理函數(shù)發(fā)送應(yīng)答。如果是發(fā)送給UDP或TCP協(xié)議的數(shù)據(jù)包,UDP或TCP協(xié)議的處理函數(shù)將進(jìn)行相應(yīng)的處理,最后發(fā)送給應(yīng)用程序。 電子發(fā)燒友 電子技術(shù)論壇發(fā)送數(shù)據(jù)流程:當(dāng)應(yīng)用程序需要發(fā)送一個數(shù)據(jù)包時,它將調(diào)用UDP或TCP協(xié)議處理函數(shù)udp_send()或tcp_write()函數(shù)發(fā)送一個數(shù)據(jù)包,UDP或TCP協(xié)議處理函數(shù)接到數(shù)據(jù)后,將對數(shù)據(jù)進(jìn)行打包、分段,然后發(fā)送給IP層的ip_output_if()函數(shù)(需要的時候調(diào)用ip_route函數(shù)進(jìn)行路由選擇),該函數(shù)把數(shù)據(jù)打包、封裝然后調(diào)用網(wǎng)絡(luò)接口驅(qū)動函數(shù)low_leve

13、l_output()函數(shù)將數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)接口。4.2 應(yīng)用軟件設(shè)計圖5 程序?qū)哟谓Y(jié)構(gòu)圖4.1講述了lwip協(xié)議實現(xiàn)的具體過程,但是我們在編輯應(yīng)用程序時并沒有直接調(diào)用協(xié)議棧中的回調(diào)函數(shù),圖5表示了應(yīng)用程序的層次結(jié)構(gòu),我們在開發(fā)應(yīng)用程序時調(diào)用了Nios II IDE中提供的標(biāo)準(zhǔn)接口函數(shù)。例如在對lwip協(xié)議的初始化和網(wǎng)絡(luò)接口的初始化時我們調(diào)用了Nios II IDE提供的兩個初始化函數(shù)lwip_stack_init()和lwip_devices_init(),而在實現(xiàn)lwip協(xié)議時我們調(diào)用了lwip提供的標(biāo)準(zhǔn)套字編程接口函數(shù),它跟普通的socket API 一樣是基于open_read_write

14、_close模型的,提供了一套標(biāo)準(zhǔn)的方法使用lwip,在這里我們不進(jìn)行詳細(xì)的講解。lwip_stack_init()函數(shù)的原型是void lwip_stack_init(int thread_prio, void (*init_done_func)(void *), void *arg) 其中thread_prio是TCP/IP協(xié)議的優(yōu)先級,init_done_func()是協(xié)議初始完后調(diào)用的函數(shù),這個函數(shù)可以完成設(shè)備的初始化和任務(wù)的建立,arg是傳遞給init_done_func()函數(shù)的變量,一般情況下為0。lwip_devices_init()函數(shù)的原型是int lwip_devices

15、_init(int rx_thread_prio) 函數(shù)的返回值表示網(wǎng)絡(luò)接口設(shè)備初始化成功,接下來你就可以創(chuàng)建基于TCP/IP協(xié)議的任務(wù),rx_thread_prio是網(wǎng)絡(luò)接口接收發(fā)送數(shù)據(jù)任務(wù)優(yōu)先級,在這個函數(shù)中還需要調(diào)用其它兩個函數(shù)get_mac_addr()和get_ip_addr()。其中g(shù)et_mac_addr()函數(shù)的原型為err_t get_mac_addr(alt_lwip_dev* lwip_dev),在這個函數(shù)內(nèi)部你要填寫網(wǎng)絡(luò)設(shè)備的MAC地址。函數(shù)get_ip_addr()的原型為int get_ip_addr(alt_lwip_dev* lwip_dev, struct i

16、p_addr* ipaddr, struct 電子發(fā)燒友 電子技術(shù)論壇ip_addr* netmask, struct ip_addr* gw, int* use_dhcp),你可以動態(tài)或者靜態(tài)的獲得IP地址,只需修改use_dhcp的值,如果靜態(tài)獲得IP地址,你需要在相應(yīng)的區(qū)域內(nèi)手動輸入初始化值7。另外我們還編寫了other_devices_init()函數(shù)來完成其他外設(shè)的初始化,其原型為int other_devices_init(int rx1_thread_prio, int rx2_thread_prio, int rx3_thread_prio, int rx4_thread_pr

17、io,)其中rx1_thread_prio,rx2_thread_prio,rx3_thread_prio,rx4_thread_prio,rx5_thread_prio對應(yīng)于GPIB、1553B、ARINC429、RS485、RS422外設(shè)接口接收發(fā)送數(shù)據(jù)的優(yōu)先級。在完成對系統(tǒng)的初始化后我們就可以創(chuàng)建任務(wù)。主程序流程圖如圖6。圖6主程序流程圖在主程序中,可以看到我們建立了6個主要任務(wù),這些任務(wù)都是基于µC/OS-操作系統(tǒng)的,一個任務(wù),就是一個線程,是一個無限的循環(huán)程序,它有五種狀態(tài)休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)、中斷態(tài),在這里我們不進(jìn)行詳細(xì)的講述。任務(wù)之間的通訊與同步是通過信號量、

18、事件標(biāo)簽和消息隊列完成的3。下面我們講解各個任務(wù)的功能和工作過程。網(wǎng)絡(luò)接口任務(wù)完成以太網(wǎng)數(shù)據(jù)的接收和發(fā)送。TCP/IP協(xié)議服務(wù)主要是實現(xiàn)TCP/IP協(xié)議,完成對網(wǎng)絡(luò)數(shù)據(jù)的網(wǎng)絡(luò)層和數(shù)據(jù)層的接收和發(fā)送。Web界面任務(wù)主要是實現(xiàn)應(yīng)用層的http協(xié)議,從而實現(xiàn)嵌入式Web界面。其他外設(shè)接口任務(wù)來實現(xiàn)GPIB、1553B、ARINC429、RS485、RS422外設(shè)接口的數(shù)據(jù)接收和發(fā)送。 電子發(fā)燒友 電子技術(shù)論壇數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)來完成數(shù)據(jù)的轉(zhuǎn)發(fā),來實現(xiàn)各個接口間的數(shù)據(jù)轉(zhuǎn)換。其他輔助任務(wù)主要是完成如LED燈控制和按鍵控制等任務(wù)。任務(wù)之間的工作過程如下:各個任務(wù)完成初始化后進(jìn)入掛起狀態(tài),當(dāng)有數(shù)據(jù)從某個外設(shè)接口進(jìn)

19、入后(這里我們以網(wǎng)絡(luò)接口為例),將引起中斷請求,在中斷函數(shù)內(nèi)通過信號量使網(wǎng)絡(luò)接口任務(wù)處于運(yùn)行態(tài),網(wǎng)絡(luò)接口任務(wù)將接收到的數(shù)據(jù)包發(fā)送給TCP/IP協(xié)議服務(wù)任務(wù)來完成數(shù)據(jù)的處理,然后根據(jù)請求的不同調(diào)用不同的任務(wù),如果是Web界面請求則調(diào)用Web界面任務(wù),如果請求是向其它外設(shè)接口發(fā)送數(shù)據(jù)則調(diào)用數(shù)據(jù)轉(zhuǎn)換任務(wù),將轉(zhuǎn)換的數(shù)據(jù)發(fā)到相應(yīng)的端口,調(diào)用相應(yīng)的外設(shè)接口任務(wù),最終完成數(shù)據(jù)在對應(yīng)外設(shè)接口的輸出。 5 仿真和實驗在程序的開發(fā)過程中,我們對用Verilog HDL語言開發(fā)的GPIB和ARIC429總線邏輯進(jìn)行了時序仿真。仿真圖如圖7和圖8所示。圖8 GPIB發(fā)送數(shù)據(jù)時序圖圖7 ARIC429發(fā)送數(shù)據(jù)時序圖對嵌

20、入式Web界面的實現(xiàn),我們在Altera公司的DE2 Development and Education board上進(jìn)行了實驗,Web歡迎界面如圖9所示。 電子發(fā)燒友 電子技術(shù)論壇圖 9 嵌入式Web歡迎界面6 結(jié)束語實現(xiàn)LXI總線到其他總線協(xié)議的轉(zhuǎn)換,有多種方案可供選擇。一種是采用以太網(wǎng)控制器+單片機(jī)(DSP)+FPGA,這種方案要在單片機(jī)或DSP內(nèi)實現(xiàn)TCP/IP協(xié)議,工作量大而且電路復(fù)雜;一種是網(wǎng)絡(luò)芯片+控制器+FPGA,采用專門的網(wǎng)絡(luò)芯片來實現(xiàn)TCP/IP協(xié)議,減少了工作量,但是這種協(xié)議是固化的,不一定和我們的需要相一致。本文作者的創(chuàng)新點(diǎn)是采用以太網(wǎng)控制器+FPGA方案,在FPGA內(nèi)嵌入Nios II軟核處理器,實現(xiàn)控制作用,并移植了&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論