徐光輝,劉文佳
(上海航天電子技術(shù)研究所,上海 201109)
本文采用將所有子系統(tǒng)模塊的總線數(shù)據(jù)全部集合到基于FPGA實(shí)現(xiàn)的總線轉(zhuǎn)換橋模塊。通過在模塊內(nèi)部對(duì)數(shù)據(jù)進(jìn)行控制和管理,解決各個(gè)子系統(tǒng)模塊中數(shù)據(jù)交換問題,避免傳統(tǒng)方法中效率低下的缺點(diǎn)。
各系統(tǒng)間的總線轉(zhuǎn)換效率直接影響整個(gè)雷達(dá)系統(tǒng)的性能,本文設(shè)計(jì)的總線轉(zhuǎn)換橋IP核的結(jié)構(gòu)如圖1所示,它在外圍實(shí)現(xiàn)所需總線接口功能,利用FPGA的可編程的特點(diǎn)及并行運(yùn)行的特點(diǎn),所有的外部總線設(shè)備都能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,所有的數(shù)據(jù)在交換模塊里面實(shí)現(xiàn)數(shù)據(jù)的交換,隨后分發(fā)到對(duì)應(yīng)的總線模塊上。

圖1 總線轉(zhuǎn)換橋結(jié)構(gòu)
交換模塊是總線交換橋的核心模塊,它的效率直接影響系統(tǒng)的運(yùn)行。本文所設(shè)計(jì)轉(zhuǎn)換橋的交換模塊可以將數(shù)據(jù)交換到各個(gè)目的總線上,交換模塊的結(jié)構(gòu)圖如圖2所示,但是需要用戶遵循固定的數(shù)據(jù)封裝格式。

圖2 交換模塊的結(jié)構(gòu)圖
圖2是交換模塊的結(jié)構(gòu)圖,其中數(shù)據(jù)交換單元負(fù)責(zé)將所有通路上的數(shù)據(jù)傳送到對(duì)應(yīng)的FIFO存儲(chǔ)上,以便目的設(shè)備來讀取相應(yīng)的數(shù)據(jù)。中斷控制單元的八路中斷分別連接到六個(gè)總線外設(shè)上,當(dāng)任何一個(gè)總線設(shè)備需要給其他設(shè)備發(fā)送數(shù)據(jù)時(shí)必須先產(chǎn)生中斷通知目的設(shè)備。目的設(shè)備根據(jù)狀態(tài)輸出來識(shí)別時(shí)哪個(gè)設(shè)備需要發(fā)送數(shù)據(jù),然后向該設(shè)備申請(qǐng)讀數(shù)。數(shù)據(jù)解析狀態(tài)寄存器決定該數(shù)據(jù)的目的地。
通用異步收發(fā)器是一種異步串行通信總線,通信的發(fā)送方和接收方各自有獨(dú)立的時(shí)鐘,傳輸速度由雙方約定。
該串口模塊主要由接收中斷和串口中斷實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。接收FIFO和接收控制共同組成接收邏輯,功能主要是從轉(zhuǎn)換橋模塊接收32位的數(shù)據(jù),通過產(chǎn)生接收中斷將分解后8位數(shù)據(jù)傳送到OS中,隨后OS將數(shù)據(jù)發(fā)送到串口設(shè)備上。發(fā)送FIFO和發(fā)生控制組成發(fā)送邏輯單元,OS接收到出口中斷后,讀取串口設(shè)備的8位數(shù)據(jù),并發(fā)送請(qǐng)求給發(fā)送邏輯。發(fā)送邏輯將數(shù)據(jù)打包成32位數(shù)據(jù)傳送到轉(zhuǎn)換橋模塊。
轉(zhuǎn)換橋中SPI模塊用來控制CAN總線數(shù)據(jù)收發(fā)。初始化配置和控制,數(shù)據(jù)管理模塊負(fù)責(zé)CAN總線上數(shù)據(jù)的解包打包處理,然后分發(fā)到控制模塊或者外圍的CAN節(jié)點(diǎn)上。
發(fā)送邏輯的功能主要是從總線轉(zhuǎn)換橋的控制模塊上接收32位的數(shù)據(jù),然后存儲(chǔ)到接收FIFO上,由于一個(gè)CAN標(biāo)準(zhǔn)幀需要3個(gè)32位的數(shù)據(jù)字組成,因此數(shù)據(jù)管理連續(xù)讀取3次FIFO的數(shù)據(jù)組成一個(gè)標(biāo)準(zhǔn)幀。同樣接收邏輯的功能主要是從CAN總線上接收完整的一個(gè)標(biāo)準(zhǔn)幀,然后在數(shù)據(jù)管理里面對(duì)進(jìn)行解包取出有效數(shù)據(jù),將其拆分成32位存儲(chǔ)到接收FIFO里面。
數(shù)據(jù)管理主要集中在控制邏輯的設(shè)計(jì)上,本文采用oneshot編碼的有限狀態(tài)機(jī)作為控制,分別定義了9個(gè)工作狀態(tài)。
SPI模塊的控制狀態(tài)機(jī)開始處于Idle狀態(tài),根據(jù)不同條件狀態(tài)機(jī)轉(zhuǎn)移到其他狀態(tài),狀態(tài)機(jī)轉(zhuǎn)換條件有不同優(yōu)先級(jí),復(fù)位具有最高優(yōu)先級(jí)。
(1)當(dāng)收到復(fù)位信號(hào)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到Initial狀態(tài),此狀態(tài)進(jìn)行初始化操作。
(2)當(dāng)收到數(shù)據(jù)時(shí)進(jìn)入RX_state狀態(tài),此狀態(tài)時(shí)處理接收到的標(biāo)準(zhǔn)幀數(shù)據(jù),并將其發(fā)送到數(shù)據(jù)管理模塊。
(3)當(dāng)需要發(fā)送數(shù)據(jù)時(shí)進(jìn)入Read_State狀態(tài),此狀態(tài)時(shí)先讀取三個(gè)發(fā)送緩沖區(qū)的當(dāng)前狀態(tài),當(dāng)至少存在一個(gè)空閑的發(fā)送緩沖區(qū)時(shí)從數(shù)據(jù)管理模塊讀取封裝好的標(biāo)準(zhǔn)幀數(shù)據(jù),并且將標(biāo)準(zhǔn)幀通過并串轉(zhuǎn)換模塊發(fā)送。
本文將PCI模塊劃分為三個(gè)設(shè)備,PCI模塊的結(jié)構(gòu)圖如圖3所示。三個(gè)設(shè)備都有各自的初始化功能和數(shù)據(jù)處理功能,因此VxWorks會(huì)設(shè)別到三個(gè)中斷源:中斷A、中斷B和中斷C。在本設(shè)計(jì)模塊中,VxWork分別給三個(gè)模塊分配了5、10和12號(hào)中斷。

圖3 PCI模塊的結(jié)構(gòu)圖
初始化功能主要是設(shè)置子設(shè)備的設(shè)備號(hào)、分類號(hào)和設(shè)備商信息,向系統(tǒng)申請(qǐng)空間大小等。當(dāng)以上的信息設(shè)置成功之后,操作系統(tǒng)設(shè)別到該唯一性設(shè)備,并能對(duì)其進(jìn)控制與數(shù)據(jù)收發(fā)。
數(shù)據(jù)處理功能主要就是處理PCI總線的數(shù)據(jù),負(fù)責(zé)將接收的32位數(shù)據(jù)發(fā)送總線上或者將總線上屬于自己的數(shù)據(jù)取出并發(fā)送到指定外圍設(shè)備。
基于雷達(dá)系統(tǒng)的實(shí)際需求,本文設(shè)計(jì)了一種總線轉(zhuǎn)換IP核的結(jié)構(gòu),它能夠很好的滿足使用不同總線的模塊間交換數(shù)據(jù),實(shí)際結(jié)果表明該設(shè)計(jì)能高效、可靠的完成該型號(hào)雷達(dá)系統(tǒng)的模塊間的數(shù)據(jù)交換,簡(jiǎn)化了雷達(dá)系統(tǒng)中的分系統(tǒng)的復(fù)雜性。另外將其封裝成IP核后,可以直接應(yīng)用到其它的工程中,加快工程的開發(fā)進(jìn)度。