多DSP局部總線與VME總線的接口設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
VME(Versa Module Eurocard)總線是一種計(jì)算機(jī)總線結(jié)構(gòu),1981年由其生產(chǎn)商Motorola,Mostesk和Signe-tios三家公司組成的集團(tuán)合作定義。1987年,VME總線被批準(zhǔn)為國際標(biāo)準(zhǔn)IEEE1014-1987。VME總線系統(tǒng)采用主控/目標(biāo)結(jié)構(gòu)、異步非復(fù)用傳輸模式,支持16位、24位、32位尋址及8位、16位、24位、32位數(shù)據(jù)傳輸,最大總線速度是40 MB/s。1996年的新標(biāo)準(zhǔn)VME64(ANSI/VI-TA1-1994)將總線數(shù)據(jù)寬度提升到64位,最大數(shù)據(jù)傳輸速度為80 MB/s。而由FORCE COMPUTERS制定的VME64x總線規(guī)范將總線速度提高到了320 MB/s。歷史上,VME總線由于其眾多的功能、強(qiáng)大的兼容性、并行性和高可靠性一直是實(shí)時(shí)嵌入式系統(tǒng)的首選機(jī)型,主要應(yīng)用于圖像處理、軍事通信、雷達(dá)信號(hào)處理等眾多領(lǐng)域。本文基于雷達(dá)實(shí)時(shí)信號(hào)處理的需要,用FPGA實(shí)現(xiàn)了多DSP信號(hào)處理模板局部總線和基于標(biāo)準(zhǔn)VME總線的計(jì)算機(jī)進(jìn)行通信的接口設(shè)計(jì)。
2 VME總線的功能特點(diǎn)
VME總線系統(tǒng)的功能結(jié)構(gòu)可以分為4類:數(shù)據(jù)傳輸總線(DTB)、DTB仲裁總線、優(yōu)先中斷總線和實(shí)用總線。每一類都包括一條總線以及與之相關(guān)的功能模塊,他們共同完成某一確定的功能。
2.1 數(shù)據(jù)傳輸總線
DTB信號(hào)線可以分為3類:尋址線、數(shù)據(jù)線、控制線。為了適應(yīng)處理器尋址的靈活性,并對(duì)地址空問進(jìn)行保護(hù),VME總線提供6條地址修改線,選擇不同的地址修改碼即可實(shí)現(xiàn)16,24,32位的尋址變化,并對(duì)地址空間賦予特定的保護(hù)權(quán)限??刂凭€和地址線的不同組合可以靈活地控制數(shù)據(jù)的傳送寬度和方式,如8,16,24,32位。依靠這些控制信號(hào)的互鎖邏輯,VME總線進(jìn)行異部傳輸,而不需要時(shí)鐘的同步,從而可以可靠地實(shí)現(xiàn)不同設(shè)備之間的數(shù)據(jù)傳輸。當(dāng)主從模塊交換數(shù)據(jù)時(shí),地址線由主模塊驅(qū)動(dòng)進(jìn)行尋址,根據(jù)利用的地址線數(shù)目的不同,地址可以是短地址、標(biāo)準(zhǔn)地址和擴(kuò)展地址,所用地址線的數(shù)目由地址修改線AM0~AM5規(guī)定。數(shù)據(jù)線D00~D31用來傳輸l~4個(gè)字節(jié)的數(shù)據(jù)。主模塊用數(shù)據(jù)選通線DS0~DS1,字長線LWORD和地址線A01配合制定不同的數(shù)據(jù)傳輸周期類型。其數(shù)據(jù)長度選擇的真值表和地址總線真值表如表1和表2所示。這里暫不涉及64位據(jù)和地址總線。
2.2 DTB仲裁總線
在VME總線系統(tǒng)中,當(dāng)同時(shí)有多個(gè)模塊要求使用DTB時(shí),仲裁子系統(tǒng)就檢測(cè)這些請(qǐng)求,并在某一時(shí)刻僅允許一塊模板使用DTB。
仲裁總線由6條總線信號(hào)線和4組菊花鏈信號(hào)線組成:總線請(qǐng)求線BR0~BR3;總線忙線BBSY;總線清除線BCLR;總線允許輸入線BG0IN~BG3IN;總線允許輸出線BG0OUT~BG3OUT。菊花鏈信號(hào)線由每塊板的總線允許輸入線(BgxIN)和總線允許輸出線(BgxOUT)組成。從n號(hào)插槽出來的菊花鏈信號(hào)線,如BGxOUT與下一板(n+1)號(hào)插槽的(BgxIN)相連。槽1的BgxIN一般由槽1的總線仲裁模塊來驅(qū)動(dòng)。
在VME總線仲裁系統(tǒng)中共有O~3四種優(yōu)先級(jí),第3優(yōu)先級(jí)最高,第0優(yōu)先級(jí)最低,也就是說DTB仲裁總線中總線請(qǐng)求,總線允許輸入和總線允許輸出各有4條。每個(gè)請(qǐng)求模塊只驅(qū)動(dòng)一條請(qǐng)求線,并接受同一級(jí)別的總線允許鏈路仲裁,即BRx,BGxIN,BGxOUT中x相同時(shí)才能構(gòu)成一級(jí)仲裁鏈路。至于仲裁驅(qū)動(dòng)模塊對(duì)4條仲裁鏈路的處理,則可以采用3種不同的方式:優(yōu)先法、循環(huán)法和單級(jí)法。優(yōu)先級(jí)仲裁是按照4條總線請(qǐng)求的優(yōu)先級(jí)別從最高的BR3到最低的BR0這一固定的優(yōu)先順序分配總線的。循環(huán)仲裁是按照循環(huán)優(yōu)先的原則來分配總線的,在總線請(qǐng)求線BR(n)上某一請(qǐng)求模塊已獲準(zhǔn)使用總線時(shí),則下一次仲裁的最高優(yōu)先級(jí)就是BR(n-1);單級(jí)僅接受BR3上的請(qǐng)求,并依靠BR3上的總線允許菊花鏈來裁判。
2.3 優(yōu)先中斷總線
通常僅有一個(gè)處理器處理中斷,監(jiān)視中斷請(qǐng)求線(IRQl~I(xiàn)RQ7),IRQ7優(yōu)先權(quán)最高,在響應(yīng)中斷時(shí),一個(gè)地址周期產(chǎn)生,這個(gè)地址指示請(qǐng)求已被響應(yīng),中斷響應(yīng)線(IACK)被仲裁器改變以daisy-chain(菊花鏈)的方式向下傳送,用IACKIN和IACKOUT信號(hào),一個(gè)數(shù)據(jù)周期指出請(qǐng)求設(shè)備,并提取請(qǐng)求設(shè)備的狀態(tài)和IV(中斷矢量)。
2.4 實(shí)用總線
實(shí)用總線功能提供系統(tǒng)周期定時(shí),上電初始化和故障檢測(cè)功能,主要有SYSCLK(系統(tǒng)時(shí)鐘線),ACFAIL(交流故障線),SYSRESET(系統(tǒng)復(fù)位線),SYSFAIL(系統(tǒng)故障線);系統(tǒng)時(shí)鐘線是獨(dú)立的頻率為16 MHz的時(shí)鐘信號(hào),由位于1號(hào)槽的系統(tǒng)時(shí)鐘驅(qū)動(dòng)模塊產(chǎn)生,可以作為整個(gè)系統(tǒng)的時(shí)間基準(zhǔn)。另外3條信號(hào)線由l號(hào)槽的電源監(jiān)控模塊產(chǎn)生。
3 系統(tǒng)接口設(shè)計(jì)方案
通常,設(shè)計(jì)多DSP局部總線與標(biāo)準(zhǔn)總線接口可以采用專業(yè)公司提供的接口控制芯片。例如,利用Cypress公司的VIC64橋接電路可以設(shè)計(jì)功能全面,具有完全的主模塊/從模塊功能的標(biāo)準(zhǔn)VME總線接口。但是如果用戶開發(fā)的基于VME總線的應(yīng)用模塊僅作為從設(shè)備.那么就只需要具備從從模塊的總線接口,這樣就可以使用FPGA自行設(shè)計(jì)橋接電路,本設(shè)計(jì)結(jié)合系統(tǒng)需要,采用雙口RAM實(shí)現(xiàn)數(shù)據(jù)交換,F(xiàn)PGA實(shí)現(xiàn)接口邏輯轉(zhuǎn)換。接口設(shè)計(jì)方案如圖1所示。
圖1中DSP為Analog Devices公司TS101,4片TS101共享總線組成緊耦合系統(tǒng)。雙口RAM為Cypress公司的高速、大容量、低功耗芯片CY7C025AV,他的容量為32 kB,數(shù)據(jù)寬度為16 b,最高訪問速度達(dá)到80 MHz。FPGA為ALTERA公司的EPF10K30A。
雙口RAM的左端口與多DSP局部總線相連,局部總線的MS0連接雙口RAM的CEL(左端口使能),雙口RAM在多DSP局部總線的地址空間映射為0X8000000~0X8007FFF。雙口RAM的讀寫時(shí)序與普通存儲(chǔ)器相同,可以直接與局部總線相連,DSP可以通過慢速總線傳輸協(xié)議訪問雙口RAM的地址空間。雙口RAM的OEL(左端口輸出使能)和RWL(左端口讀寫使能)分別接局部總線的RD和W/R,左端口數(shù)據(jù)線(D0L~D15L)和地址線(A0L~A14L)也分別與局部總線的數(shù)據(jù)和地址線相連。
雙口RAM右端口和標(biāo)準(zhǔn)VME總線通信,由FPGA負(fù)責(zé)譯碼標(biāo)準(zhǔn)VME總線控制信號(hào)線產(chǎn)生接口控制邏輯,雙口RAM的右端口數(shù)據(jù)線(D0R~D15R)和地址線(A0R~A14R)通過總線驅(qū)動(dòng)器74F16245驅(qū)動(dòng)后和標(biāo)準(zhǔn)VME:總線的數(shù)據(jù)和地址線相連。74F16245的使能和傳輸方向信號(hào)由FPGA譯碼產(chǎn)生。
標(biāo)準(zhǔn)VME總線的控制信號(hào)線與FPGA連接,由于FPGA的I/O管腳可以兼容各種電平,所以VME的控制信號(hào)線可以直接與FPGA相連。
4 FPGA接口程序的設(shè)計(jì)
FPGA中的VME總線接口程序主要由2大模塊組成,一個(gè)模塊是VME主機(jī)對(duì)雙口RAM訪問的普通I/O模塊,該模塊主要實(shí)現(xiàn)標(biāo)準(zhǔn)VME總線訪問時(shí)序到雙口RAM訪問時(shí)序的邏輯轉(zhuǎn)換,VME總線地址譯碼和訪問模式譯碼,以及VME總線到雙口RAM的數(shù)據(jù)地址線驅(qū)動(dòng)的邏輯控制。另一個(gè)模塊多DSP模板向VME主機(jī)發(fā)送中斷的中斷請(qǐng)求模塊,該模塊主要完成中斷信號(hào)的發(fā)送,主機(jī)發(fā)來的中斷認(rèn)可的處理和向主機(jī)發(fā)送中斷狀態(tài)和識(shí)別碼。
4.1 普通I/O模塊的設(shè)計(jì)
普通I/O模塊的程序設(shè)計(jì)采用VHDL語言狀態(tài)機(jī)實(shí)現(xiàn),整個(gè)過程分為5種狀態(tài):idle(空閑狀態(tài)),selection(選中狀態(tài)),write(寫數(shù)據(jù)狀態(tài)),read(讀數(shù)據(jù)狀態(tài))和answer(應(yīng)答狀態(tài))。
idle狀態(tài)表示本模塊沒有被VME主機(jī)訪問;selection狀態(tài)表示地址和模式譯碼已經(jīng)選中本模塊,主機(jī)要訪問雙口RAM的地址空間;write狀態(tài)VME主機(jī)正在向雙口RAM寫入數(shù)據(jù);read狀態(tài)表示VME主機(jī)正在從雙口RAM中讀出數(shù)據(jù);answer表示本模塊響應(yīng)訪問周期向VME主機(jī)發(fā)送數(shù)據(jù)傳輸應(yīng)答。描述整個(gè)過程的狀態(tài)轉(zhuǎn)移圖如圖2所示。
I/O模塊標(biāo)準(zhǔn)傳輸?shù)倪^程描述為:idle狀態(tài)時(shí),地址監(jiān)測(cè)劃模塊應(yīng)處于VME總線地址譯碼和訪問模式監(jiān)測(cè)狀態(tài),本模塊的訪問模式為A24-D16標(biāo)準(zhǔn)數(shù)據(jù)訪問模式。當(dāng)VME主機(jī)輸出的地址和訪問模式與本模塊一致時(shí),即輸入地址VA20~VA23為程序所設(shè)的地址,AM碼等于3A(H),LWORD為高,VA1為低和AS為低,地址監(jiān)測(cè)模塊輸出“從模塊選中信號(hào)”,啟動(dòng)了從模塊訪問,這時(shí)模塊進(jìn)人selection狀態(tài)。
進(jìn)入selection狀態(tài)后,程序監(jiān)視DS0,1(數(shù)據(jù)選通信號(hào))和WRITE(讀寫信號(hào))。當(dāng)DS0,DS1都為低,WRITE為高時(shí),模塊進(jìn)入read狀態(tài);當(dāng)DS0,DS1都為低,WRITE為低時(shí),模塊進(jìn)入write狀態(tài)。
當(dāng)模塊處于read狀態(tài)時(shí),F(xiàn)PGA置雙口RAM的CER為低使能雙口RAM,OER為低使能數(shù)據(jù)輸出,RWR為高關(guān)閉寫使能,使雙口RAM為數(shù)據(jù)輸出狀態(tài)。FPGA還要打開總線驅(qū)動(dòng)使能,設(shè)置總線驅(qū)動(dòng)方向,使VME地址總線為輸入,數(shù)據(jù)總線為輸出。
當(dāng)模塊處于write狀態(tài)時(shí),F(xiàn)PGA置雙口RAM的CER為低使能雙口RAM,RWR為低使能寫信號(hào),OER為高關(guān)閉輸出數(shù)據(jù)使能,使雙口RAM為數(shù)據(jù)輸入狀態(tài)。FPGA還要打開總線驅(qū)動(dòng)使能,設(shè)置總線驅(qū)動(dòng)方向,使VME地址數(shù)據(jù)線都為輸入。
為了設(shè)置“讀應(yīng)答使能”和“寫應(yīng)答使能”,模塊在進(jìn)入read(讀數(shù)據(jù)狀態(tài))或write(寫數(shù)據(jù)狀態(tài))后,都使能一個(gè)計(jì)數(shù)器計(jì)數(shù)。當(dāng)計(jì)數(shù)器的計(jì)數(shù)值為某值時(shí)(此計(jì)數(shù)值可以用來調(diào)整讀寫周期的大小,本例中使用32 MHz時(shí)鐘時(shí),計(jì)數(shù)值為1即可),分別置“讀應(yīng)答使能”和“寫應(yīng)答使能”有效,模塊進(jìn)入answer(應(yīng)答狀態(tài))狀態(tài)。在模塊進(jìn)入an-swer后,程序置DTACK為低,向主機(jī)發(fā)送數(shù)據(jù)傳送應(yīng)答。這樣,當(dāng)主機(jī)向雙口RAM寫數(shù)據(jù)時(shí),通知主機(jī)可以釋放總線;當(dāng)主機(jī)從雙口RAM讀數(shù)據(jù)時(shí),通知主機(jī)數(shù)據(jù)已經(jīng)穩(wěn)定可以鎖存數(shù)據(jù)。主機(jī)收到DTACK后釋放DS0,DS1為高,AS為高;模塊檢測(cè)到DS0,DS1為高,AS為高后,將DTACK置高,關(guān)閉雙口RAM使能和VME總線驅(qū)動(dòng),模塊進(jìn)入idle(空閑狀態(tài)),一個(gè)標(biāo)準(zhǔn)的VME總線傳輸周期結(jié)束。
整個(gè)過程的仿真時(shí)序波形如圖3所示:圖中,“000”表示idle狀態(tài),“001”表示selection狀態(tài),“101”表示read狀態(tài),“011”表示write狀態(tài),“111”表示answer狀態(tài)。
4.2 中斷請(qǐng)求模塊的設(shè)計(jì)
本模塊設(shè)計(jì)采用VHDL語言編寫程序,使用進(jìn)程對(duì)中斷產(chǎn)生模塊的功能進(jìn)行描述,即用進(jìn)程中if-elsif-else語句來描述這個(gè)時(shí)序過程。
中斷模塊負(fù)責(zé)產(chǎn)生標(biāo)準(zhǔn)VME總線中斷,處理VME主機(jī)中斷管理模塊發(fā)來的中斷響應(yīng)。程序設(shè)計(jì)了一個(gè)8位的內(nèi)部寄存器VINT,用來控制中斷信號(hào)的產(chǎn)生,寄存器位VINT1~7對(duì)應(yīng)IRQ1~7,控制VME總線中斷信號(hào)的產(chǎn)生和撤銷,VINT0作為發(fā)中斷使能位.當(dāng)VINT0等于1時(shí),程序檢查VINT1~7,置相應(yīng)的中斷請(qǐng)求信號(hào)線IRQ1~7為低,便向監(jiān)控該信號(hào)的VME主機(jī)中斷管理模塊發(fā)出了中斷請(qǐng)求。
中斷請(qǐng)求模塊發(fā)出中斷請(qǐng)求后,監(jiān)控輸入信號(hào)IACK-IN和A1~3,等待VME主機(jī)中斷管理模塊發(fā)來的中斷響應(yīng)。當(dāng)檢測(cè)到IACKIN為低,即開始中斷號(hào)對(duì)照,檢測(cè)A1~3上的值是否和本模塊發(fā)出的中斷號(hào)一致,如果不一致就將驅(qū)動(dòng)IACKOUT輸出菊花鏈為低,如果一致將該中斷的狀態(tài)/識(shí)別碼放到VD0~7上,當(dāng)數(shù)據(jù)穩(wěn)定后,驅(qū)動(dòng)DTACK為低,通知VME主機(jī)中斷管理模塊取走中斷狀態(tài)識(shí)別碼,主機(jī)進(jìn)入相應(yīng)的中斷服務(wù)程序.即完成了從模塊VME總線中斷的發(fā)送和響應(yīng)過程。
5 結(jié) 語
用VHDL語言實(shí)現(xiàn)了多DSP局部總線到標(biāo)準(zhǔn)VME總線普通I/O模塊和中斷請(qǐng)求模塊的設(shè)計(jì),雙口RAM的存儲(chǔ)空間映射到工控機(jī)的存儲(chǔ)空間的地址為0XC0410000~0XC0413FFFC。使用32 MHz時(shí)鐘時(shí).通信速率町達(dá)16 MB/s,能夠滿足雷達(dá)信號(hào)處理板到終端通信的要求。