基于PCIE總線的多DSP系統(tǒng)接口設(shè)計(jì)和驅(qū)動(dòng)開發(fā)
2 DSP與FPGA互連接口設(shè)計(jì)
2.1 互連及數(shù)據(jù)通信方法
首先,采用DSP高速鏈路口實(shí)現(xiàn)DSP點(diǎn)對(duì)點(diǎn)連接,TS201芯片采用全雙工模式,當(dāng)處理器內(nèi)核工作在500 MHz時(shí),鏈路口最高也可工作在500 MHz,每個(gè)鏈路口的雙向吞吐率可以達(dá)到1 GB/s,實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)的高速傳輸。任意兩片DSP之間都通過鏈路口連接,使得DSP之間傳遞數(shù)據(jù)變得靈活,使程序設(shè)計(jì)變得簡(jiǎn)單。另外,每塊DSP通過一個(gè)鏈路口與FPGA互連,在數(shù)據(jù)傳輸不沖突的情況下,F(xiàn)PGA可以同時(shí)與多片DSP通信,實(shí)現(xiàn)FPGA和DSP的高速數(shù)據(jù)交換。
2.2 接口設(shè)計(jì)原理與實(shí)現(xiàn)
由于系統(tǒng)中DSP之間實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)互連,接口的設(shè)計(jì)主要涉及到DSP和FPGA之間的時(shí)序電路開發(fā)。TS201有4個(gè)鏈路口,鏈路口采用全雙工模式,每個(gè)鏈路口有兩個(gè)獨(dú)立的DMA通道可以同時(shí)進(jìn)行通信。每個(gè)通道用LxCLKOUTP/N,LxACKI,LxCLKINP/N和LxACKO控制數(shù)據(jù)傳輸,LxBCM PI和LxBCMP用于指示現(xiàn)行緩沖器發(fā)送是否完成。利用鏈路口傳輸數(shù)據(jù)時(shí),數(shù)據(jù)幀的開始是由時(shí)鐘的上升沿來指示的,在時(shí)鐘上升沿和下降沿分別傳送數(shù)據(jù)。由于鏈路口具有收發(fā)兩個(gè)模塊,所以FPGA需要在內(nèi)部實(shí)現(xiàn)收發(fā)兩個(gè)模塊來與DSP的兩個(gè)模塊相對(duì)應(yīng)。
依照鏈路口通信協(xié)議,F(xiàn)PGA向DSP發(fā)送數(shù)據(jù)時(shí)的鏈路口發(fā)送時(shí)鐘是由內(nèi)部鎖相環(huán)產(chǎn)生的,接收DSP傳送的數(shù)據(jù)時(shí)的接收時(shí)鐘由DSP的隨路時(shí)鐘提供。鏈路口時(shí)鐘、數(shù)據(jù)信號(hào)線均使用LVDS電平標(biāo)準(zhǔn)進(jìn)行連接,ACK和BCMP信號(hào)則采用單端的方式連接至FPGA。
FPGA內(nèi)部邏輯主要包括接收/發(fā)送模塊和接收/發(fā)送緩沖。接收模塊與DSP的鏈路口發(fā)送端連接,發(fā)送模塊與DSP的接收端連接,在FPGA和DSP通信時(shí)這兩個(gè)模塊可以對(duì)數(shù)據(jù)分別進(jìn)行打包和拆包處理。接收/發(fā)送緩沖則用來配合接收/發(fā)送模塊,在傳輸數(shù)據(jù)時(shí)用來緩沖數(shù)據(jù)。
FPGA與DSP之間傳輸數(shù)據(jù)時(shí)發(fā)送方先要將數(shù)據(jù)傳送給鏈路口發(fā)送模塊緩沖(一個(gè)異步FIFO),接收方控制模塊檢測(cè)到LxACKI為高并且FIFO內(nèi)至少有一個(gè)4字?jǐn)?shù)據(jù)塊的數(shù)據(jù)時(shí),雙方握手完成,啟動(dòng)數(shù)據(jù)傳輸,否則繼續(xù)等待。一個(gè)數(shù)據(jù)移位控制模塊使數(shù)據(jù)按照鏈路口通信協(xié)議的標(biāo)準(zhǔn)進(jìn)行排列后傳送給DDIO模塊產(chǎn)生DDR數(shù)據(jù),另一個(gè)DDIO宏單元?jiǎng)t是用來產(chǎn)生同步的時(shí)鐘。發(fā)送模塊的仿真波形如圖2所示。
3 PCIE驅(qū)動(dòng)程序開發(fā)
3.1 WDM驅(qū)動(dòng)程序的開發(fā)介紹
WDM是微軟全力推出的一種設(shè)備驅(qū)動(dòng)程序模型,相對(duì)于KDM(Kernel Driver Model),WDM增加了對(duì)即插即用(pnp)、電源管理等新的硬件標(biāo)準(zhǔn)的支持。
WDM的分層結(jié)構(gòu)有利于系統(tǒng)的設(shè)計(jì)、擴(kuò)展和驅(qū)動(dòng)程序的開發(fā)。采用DriverStudio來開發(fā)運(yùn)行在Windows XP下的WDM模式PCIE設(shè)備驅(qū)動(dòng)程序(用DriverWorks編寫代碼,用DriverMonitor和SoftlCE調(diào)試驅(qū)動(dòng)。Drive/Works對(duì)WindowsDDK的類進(jìn)行了很好的封裝,因此在開發(fā)WDM驅(qū)動(dòng)程序時(shí),DriverWorks向?qū)Мa(chǎn)生驅(qū)動(dòng)框架,開發(fā)人員只需選擇合適的例程即可,因此可以在較短的時(shí)間內(nèi)開發(fā)出效率較高的驅(qū)動(dòng)程序。
一個(gè)WDM驅(qū)動(dòng)程序的功能模塊一般由初始化、創(chuàng)建和刪除設(shè)備、即插即用處理、訪問硬件、處理Win32 I/O及控制請(qǐng)求、調(diào)用其他驅(qū)動(dòng)程序等組成。
評(píng)論