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