PC104是一種專門為嵌入式控制而定義的工業(yè)控制總線,,PC104與普通PC總線控制系統(tǒng)的主要區(qū)別是:
(1)小尺寸結(jié)構(gòu)。
(2)堆棧式連接,。
(3)輕松總線驅(qū)動(dòng),。
PC104有2個(gè)版本,8位和16位,,分別與PC和PC/AT相對(duì)應(yīng),。PC104 PLUS則與PCI總線相對(duì)應(yīng)。本文主要涉及的是PC104與DSP的16位數(shù)據(jù)通信接口設(shè)計(jì),,采用了CYPRESS公司的雙端口靜態(tài)讀寫存儲(chǔ)器CY7C028V15AC作為共享存儲(chǔ)器,,雙端口RAM右側(cè)接ADI公司的DSP芯片T S101,左側(cè)接PC104總線,,控制邏輯用ALTERA公司ACEX系列CPLD中的EP1K100TC208來實(shí)現(xiàn)。
2雙端口RAM訪問模式
CY7C028V15AC是16 b×64 k的雙端口RAM,,支持高速的訪問,,訪問速度為20 ns,支持左右2個(gè)端口完全異步訪問,。2個(gè)端口的選通信號(hào)有效,,則雙端口RAM兩側(cè)可以同時(shí)對(duì)雙端口RAM進(jìn)行讀寫操作。需要解決的是當(dāng)同時(shí)訪問到一個(gè)存貯塊時(shí)的沖突問題,。有2種方法可以解決訪問沖突:一種是信號(hào)令牌傳遞方式,,雙端口RAM內(nèi)部提供了8個(gè)Semaphore鎖存單元,可以在邏輯上把雙端口RAM劃分為8個(gè)區(qū)段;當(dāng)某個(gè)端口要訪問某個(gè)區(qū)塊時(shí),,首先向相應(yīng)的鎖存單元請(qǐng)求令牌,,以確定訪問是否會(huì)產(chǎn)生沖突,即向某一個(gè)鎖存單元寫“0”,,然后讀回所寫數(shù)據(jù),,如果成功,則對(duì)應(yīng)于該鎖存單元的塊是空閑的,,可以訪問,,否則就不能訪問。當(dāng)一側(cè)正在訪問雙端口RAM的某一塊,,則相應(yīng)的鎖存單元對(duì)另一側(cè)是不能訪問的,。申請(qǐng)令牌通過讀寫I/O的方式實(shí)現(xiàn),實(shí)際用到的是雙端口RAM左右兩側(cè)數(shù)據(jù)總線的D0位,,地址總線的A2~A0位(其譯碼對(duì)應(yīng)于8個(gè)鎖存單元),,以及左右兩側(cè)對(duì)鎖存單元訪問的使能控制端SEML和SEMR。另一種方式是中斷方式,。在中斷方式下,,RAM最高的兩個(gè)地址作為通訊郵箱,,F(xiàn)FFEH分配給右端口,F(xiàn)FFFH分配給左端口,。兩個(gè)郵箱的使用方法一致,。以右端口為例,當(dāng)DSP向FFFEH地址寫任意一個(gè)值時(shí),,左端口的中斷請(qǐng)求信號(hào)INTL有效,,當(dāng)響應(yīng)完中斷請(qǐng)求后,PC104總線讀一次FFFEH地址就可以INTL清除中斷,。
本文中采用中斷方式設(shè)計(jì)PC104與DSP的握手信號(hào),。考慮到用CPLD來設(shè)計(jì)數(shù)字邏輯的靈活性和可重復(fù)編程,,用CPLD來控制中斷請(qǐng)求與響應(yīng)信號(hào),,所以RAM最高端的兩個(gè)地址仍作為普通的R AM單元使用。雙端口RAM左右端口的連接如圖1所示,。
當(dāng)DSP向PC104請(qǐng)求數(shù)據(jù),TS101的標(biāo)志位FLAG0通過CPLD的緩沖連接到PC104的其中一條中斷信號(hào)引腳,,當(dāng)PC104收到中斷請(qǐng)求向RAM寫完數(shù)據(jù),通過寫I/O口的方式,,由CPLD產(chǎn)生回復(fù)信號(hào)到TS101的IRQ0,,TS101在適當(dāng)?shù)臅r(shí)間讀取數(shù)據(jù)并進(jìn)行算法處理。當(dāng)TS101向PC104發(fā)送數(shù)據(jù),,則先向RAM中寫數(shù)據(jù),,寫完后由標(biāo)志位FLAG1產(chǎn)生讀數(shù)據(jù)請(qǐng)求信號(hào),通過CPLD緩沖連接到PC10 4的另一條中斷信號(hào)引腳,,PC104響應(yīng)中斷讀完數(shù)據(jù),,通過寫I/O口的方式由CPLD產(chǎn)生回復(fù)信號(hào)到TS101的IRQ1。當(dāng)PC104訪問雙端口RAM時(shí),。數(shù)據(jù)總線的16位通過CPLD緩沖連接到RAM左端口的I/O15L~I/O0L,,因?yàn)?6位的數(shù)據(jù)訪問占用的是偶地址,所以地址總線的A16~A1在CPLD緩沖后連接到RAM的左端口的A15L~A0L地址線,。PC104其余的地址線通過在CPLD里的譯碼產(chǎn)生RAM左端口的選通信號(hào),。當(dāng)TS101訪問RAM,TS101的前16根地址線連接到RAM的A15R~A0R,前16根數(shù)據(jù)線連接到RAM右端口的I/O15R~I/O0R,用產(chǎn)生選通信號(hào),,通過TS 101的編程實(shí)現(xiàn),,訪問RAM的有效地址由用戶定義。?
3PC104與CPLD的連接關(guān)系
通過CPLD,,PC104要實(shí)現(xiàn)對(duì)雙端口RAM的訪問,,首先要考慮的是分配給RAM的存儲(chǔ)地址,因?yàn)?4 k×16 b的RAM需要64 k的偶地址空間,或者說128 k的連續(xù)地址空間,,工控機(jī)1 M以內(nèi)可由用戶使用的自由地址空間往往達(dá)不到128 k,。所以應(yīng)將RAM安排在1 M地址空間以外訪問。此時(shí)除了用到用于1 M尋址的地址線SA19~SA0,,還要采用1 M外尋址的地址線LA23~LA17,。需要注意的是,PC104的總線上的SA19~SA17與LA19~LA17是重復(fù)的,。區(qū)別在于SA10~SA0是通過總線地址鎖存使能信號(hào)BALE鎖存輸出,,而LA19~LA17未經(jīng)鎖存,為保證在對(duì)RAM訪問期內(nèi)地址信號(hào)一直有效,,至少應(yīng)在CPLD內(nèi)將LA23~LA20進(jìn)行BALE鎖存,。本文中將RAM的地址安排在1 M地址空間外從100000 H開始的64 K偶地址。所有需要用到的PC104信號(hào)線都連接到CPLD,,CPLD將SA16~SA1緩沖連接到RAM,,其余地址線譯碼產(chǎn)生RAM左端口選通信號(hào)。PC104與CPLD連接的訪問邏輯如圖2所示,。
其中有效表示數(shù)據(jù)總線的高8位有效,,SA0有效表示數(shù)據(jù)總線的低8位有效,作為譯碼信號(hào)的一部分,,對(duì)于單片16位數(shù)據(jù)線的集成電路,實(shí)際上也可以不連接,,用SA0和高端地址線譯碼產(chǎn)生選片信號(hào),。AEN信號(hào)有效表示計(jì)算機(jī)在和某個(gè)設(shè)備進(jìn)行DMA傳送,其他的設(shè)備發(fā)現(xiàn)AEN信號(hào)有效,,就不要響應(yīng)尋址信號(hào),。因此在CPLD內(nèi)部邏輯里設(shè)置當(dāng)AEN信號(hào)有效時(shí),將進(jìn)入CPLD的地址信號(hào)線置為高阻態(tài),。
是存儲(chǔ)器讀寫信號(hào),,是用于1 M以外地址空間的讀寫信號(hào),當(dāng)這兩個(gè)信號(hào)之一有效且尋址到1 M內(nèi)的地址,,將分別使1 M以內(nèi)地址的讀寫
一起控制總線周期的長短,。有3種存儲(chǔ)器訪問周期:標(biāo)準(zhǔn)周期,就緒周期,,無等待狀態(tài)周期,。訪問時(shí)序如圖3所示。
在設(shè)計(jì)的時(shí)候考慮到信號(hào)在CPLD里的延時(shí),,如果標(biāo)準(zhǔn)周期對(duì)于訪問的時(shí)間長度不夠,,可以采 用有1個(gè)等待狀態(tài)的就緒周期,而這只需要修改CPLD的設(shè)計(jì)并重新下載到CPLD即可,,由此可 見用CPLD作為控制芯片的優(yōu)點(diǎn),。
4結(jié)語
本文說明的這種PC104總線與DSP的數(shù)據(jù)通訊接口設(shè)計(jì),,也可以作為采用其他計(jì)算機(jī)總線與DS P進(jìn)行16位數(shù)據(jù)通訊接口設(shè)計(jì)的參考。