高速紅外VFIR控制器的設(shè)計(jì)與實(shí)現(xiàn)
2.2 紅外接口控制邏輯
根據(jù)紅外接口控制寄存器控制字,紅外接口控制邏輯實(shí)現(xiàn)外部RX/TXFIFO與紅外收發(fā)器接口之間的數(shù)據(jù)傳輸和邏輯時(shí)序。它的工作原理如下:根據(jù)控制字,首先啟動(dòng)紅外收發(fā)器接口CRC校驗(yàn)、編解碼器和可編程時(shí)鐘(RX/TXFIFO讀/寫時(shí)鐘RCLK、WCLK和編解碼時(shí)鐘fclock),然后根據(jù)控制字的TX/RX位決定是接收還是發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)時(shí),TXFIFO緩沖器不為空,TXFIFO的EF信號(hào)就觸發(fā)紅外接口控制邏輯發(fā)TXFIFO讀操作信號(hào)ENR#,讀取TXFIFO的數(shù)據(jù)(數(shù)據(jù)寬度32位)傳給紅外收發(fā)器接口進(jìn)行CRC校驗(yàn)、編碼以及并/串轉(zhuǎn)換。同理當(dāng)甚高速紅外控制器接收數(shù)據(jù)時(shí),紅外收發(fā)器接收到的數(shù)據(jù)經(jīng)過譯碼、串/并轉(zhuǎn)換(數(shù)據(jù)寬度32位),然后觸發(fā)紅外接口控制邏輯發(fā)出紅外接收FIFO的寫操作信號(hào)ENW#,把接收數(shù)據(jù)寫入紅外接收FIFO。當(dāng)RXFIFO寫滿后,觸發(fā)控制邏輯發(fā)出S5933 FIFO寫信號(hào)WRFIFO#,上層協(xié)議啟動(dòng)PCI接口初始化S5933為同步主控寫操作實(shí)現(xiàn)紅外接收FIFO到主機(jī)內(nèi)存的數(shù)據(jù)傳畀。另外紅外接口邏輯還實(shí)現(xiàn)紅外接口狀態(tài)寄存器狀態(tài)的配置,以方便上層協(xié)議了解紅外控制器工作狀態(tài)。
2.3 紅外收發(fā)器接口
紅外收發(fā)器接口的設(shè)計(jì)與實(shí)現(xiàn)是紅外控制器成功的關(guān)鍵。該接口需要實(shí)現(xiàn)各種工作模式(SIR、MIR、FIR、VFIR)的編解碼器和硬件CRC校驗(yàn)、設(shè)計(jì)比較復(fù)雜。編碼器前、譯碼器后,數(shù)據(jù)都要進(jìn)行硬件CRC校驗(yàn)實(shí)現(xiàn)差錯(cuò)控制。SIR模式采用RZI(歸零反轉(zhuǎn))編碼,信號(hào)為高電平,調(diào)制為低電平;信號(hào)為低電平,調(diào)制為高電平脈沖,最大脈沖寬度是位周期的3/16。MIR模式也采用RZI(歸零反轉(zhuǎn))編碼,但最大脈沖寬度是位周期的1/4。FIR模式采用4PPM(脈沖位置調(diào)制)調(diào)制,它的原理是被編碼的二進(jìn)制數(shù)據(jù)流每兩位組合成一個(gè)數(shù)據(jù)碼元組(DBP),其占用時(shí)間Dt=500ns,再將該數(shù)據(jù)碼元組(DBP)分為4個(gè)125ns的時(shí)隙(chip),根據(jù)碼元組的狀態(tài),在不同的時(shí)隙放置單脈沖。由于PPM通信依賴信號(hào)光脈沖在時(shí)間上的位置傳輸信息,所以解調(diào)時(shí)先保證收發(fā)雙方時(shí)隙同步、幀同步,然后根據(jù)脈沖在500ns周期中的位置解調(diào)出發(fā)送數(shù)據(jù)??紤]到紅外收發(fā)器通信距離突然變化引發(fā)脈沖寬度擴(kuò)展,發(fā)生碼間干擾,導(dǎo)致譯碼出錯(cuò),因此根據(jù)Hiroshi Uno提出的新算法[7]簡化4PPM譯碼過程,并通過實(shí)驗(yàn)驗(yàn)證該算法比最大似然譯碼算法結(jié)構(gòu)更簡單,功耗更低,而且更容易實(shí)現(xiàn)。
VFIR模式采用HHH(1,13)編解碼技術(shù)。編碼器原理:為了正確實(shí)現(xiàn)編碼,要求在計(jì)算內(nèi)部碼字C=(c1,c2,c3)之前,在nT(T表示一個(gè)chip時(shí)間)時(shí)刻到達(dá)編碼器輸入端的輸入數(shù)據(jù)碼元組d=(d1,d2)經(jīng)過3個(gè)編碼周期(每個(gè)編碼周期是3T)的延時(shí)后進(jìn)行邏輯計(jì)算,得到下一狀態(tài)矢量值N=(s1,s2,s3),即與輸入數(shù)據(jù)有關(guān)的N出現(xiàn)在(n+9T)時(shí)刻;再經(jīng)過一個(gè)編碼周期,即(n+12T)時(shí)刻,狀態(tài)N賦給內(nèi)部狀態(tài)矢量S=(s1,s2,s3),同時(shí)計(jì)算與輸入數(shù)據(jù)碼元組d=(d1,d2)有關(guān)的內(nèi)部碼字矢量C=(c1,c2,c3),再經(jīng)過一個(gè)編碼周期,內(nèi)部碼字C賦給輸出碼字矢量Y=(y1,y2,y3)。由此可見16Mbps的數(shù)據(jù)速率經(jīng)過編碼器變?yōu)?4Mchip/s編碼速率,整個(gè)編碼過程延時(shí)5個(gè)編碼周期即15個(gè)chip。注意編碼器初始狀態(tài)S應(yīng)設(shè)置為(1,0,0)。譯碼器原理:輸入數(shù)據(jù)R=(r1,r2,r3)經(jīng)過鎖存器延時(shí)得到矢量Y4=(y10,y11,y12),對Y4進(jìn)行不同的延時(shí)得到Y(jié)3、Y2及Y1。這里矢量Yi是Y4的4-I次延時(shí)(由鎖存器實(shí)現(xiàn)延時(shí));對Y4進(jìn)行或非運(yùn)算得到Zd,再將Zd進(jìn)行不同的延時(shí)得到Zc和Zb。這里Zc、Zb、Zd是變量,然后將Y4、Y3、Y2、Y1、Zb、Zc、Zd進(jìn)行邏輯運(yùn)算、延時(shí)分別得到矢量X1=(x1,x2)、X2=(x3,x4)、X3=(x5,x6);最后將x1、x2經(jīng)過鎖存器得到譯碼器輸出矢量值U=(u1,u2)。整個(gè)譯碼過程延時(shí)4個(gè)周期即12個(gè)chip??梢奌HH(1,13)編譯碼電路比較簡單,利用FPGA基于門級(jí)描述即可實(shí)現(xiàn),但必須注意鎖存器時(shí)鐘fclock=1/3fchip。VFIR模式增加線性反饋移位寄存器(LFSR)實(shí)現(xiàn)加擾和解擾功能提高系統(tǒng)性能,減少誤碼。
控制器軟件主要分為三部分:系統(tǒng)初始化部分、接收部分、發(fā)送部分。系統(tǒng)初始化首先調(diào)用BIOS 1Ah中斷功能獲取設(shè)備PCI總線號(hào)、功能號(hào)、內(nèi)存、I/O空間基地址和空間大小以及中斷號(hào),然后通過直通(Pass-Thrn)方式寫控制命令初始化紅外控制器,選擇控制器接收或發(fā)送數(shù)據(jù),設(shè)置控制器工作模式和波特率分頻數(shù)并允許控制器工作。紅外控制器具有收發(fā)雙向數(shù)據(jù)傳輸能力。編程時(shí)將S5933FIFO設(shè)置成由PCI接口初始化為同步主控方式,支持突發(fā)傳輸(DMA);然后根據(jù)控制器收/發(fā)位判斷PCI總線主控讀還是主控寫操作。程序采用中斷控制,主程序調(diào)用set_up_pci_busmaster()初始化主控操作,該函數(shù)不僅裝載訪問內(nèi)存實(shí)際地址和傳輸字節(jié)數(shù),而且還要允許讀/寫傳輸字節(jié)數(shù)到零中斷。紅外控制器初始化完成后,系統(tǒng)等待中斷。中斷服務(wù)處理程序讀取S5933中斷狀態(tài)/控制寄存器INTCSR判斷中斷源,并清除中斷標(biāo)志;讀取CRC校驗(yàn)狀態(tài)位,判斷接收數(shù)據(jù)是否正確。發(fā)送數(shù)據(jù)時(shí),中斷服務(wù)處理程序還要檢測紅外發(fā)送FIFO狀態(tài)位是否為1(1表示FIFO為空),不為1置發(fā)送不為發(fā)空標(biāo)志tx_not_empty=1,主程序繼續(xù)等待,直到TXFIFO數(shù)據(jù)為空;同理接收數(shù)據(jù)也需要檢測紅外接口狀態(tài)寄存器的紅色接收FIFO狀態(tài)位是否為1(測試位為1表示FIFO為空)。這樣可保證接收和發(fā)送FIFO的數(shù)據(jù)完全被取走。編寫的應(yīng)用程序使用Turbo C2.0調(diào)試通過。
PCI總線已經(jīng)成為當(dāng)今電腦的主流總線,為此根據(jù)紅外串行物理層規(guī)范IRDA-1.4設(shè)計(jì)基本PCI總線的甚高速紅外VFIR控制器。使用AMCC公司PCI總線專用控制器外加部分接口控制電路實(shí)現(xiàn)VFIR控制器硬件設(shè)計(jì),縮短開發(fā)周期、提高效率、節(jié)約成本。目前正在使用VtoolsD開發(fā)虛擬驅(qū)動(dòng)程序,解決系統(tǒng)如何分配紅外控制器配置資源、如何訪問硬件設(shè)備、如何處理硬件中斷和總線主控DMA操作以及VXD和應(yīng)用程序之間的通信。另外國外已有公司推出VFIR紅外控制器專用芯片,如MKNET公司的MK7100。
評(píng)論