基于DSP 的PCI 通用運動(dòng)控制卡的硬件設計
2.5 差分電路
在噪聲比較大的環(huán)境中,為了解決干擾和遠距離傳輸等問(wèn)題,通常采用差動(dòng)信號傳輸,如圖4 中虛線(xiàn)框(3)所示。為了進(jìn)一步消除干擾,在每個(gè)輸入端都接入一個(gè)濾波電容,同時(shí)在每一對差動(dòng)信號輸入線(xiàn)之間接一個(gè)用于線(xiàn)路阻抗匹配的電阻。差動(dòng)信號(IN+、IN-、A+、A-、B+、B-)經(jīng)差動(dòng)線(xiàn)路接收器SN75175 和高速光電耦合器6N137 轉換為單端信號(IN、A、B)輸入到LM628 中,以實(shí)現閉環(huán)控制。
2.6 譯碼電路
如圖 4 中虛線(xiàn)框(4)所示,采用一片3/8 譯碼器74LS138 對地址譯碼,實(shí)現對控制卡3路伺服單元的片選,而XA0 則專(zhuān)門(mén)用于對LM628 進(jìn)行讀寫(xiě)控制,這樣得出的地址信號是連續的(0XF60~0XF65)。另外,采用一片四位二進(jìn)制碼比較器74LS85 實(shí)現DSP 對雙口RAM的讀寫(xiě)片選。片選地址信號范圍為0~7FF,這剛好尋址雙口RAM 2K 范圍內的所有空間。
此外,由于TMS320F2812 要從雙口RAM 讀出大量的運動(dòng)軌跡數據并存儲,而其片內只有18KB 的空間,遠不能滿(mǎn)足要求,同時(shí)為了方便程序調試和修改,均需要DSP 擴展一片存儲器。這里選用CYPRESS 公司的256K×16 位的SRAM CY7C1041CV33,其讀寫(xiě)周期時(shí)鐘最快可達12ns,因此可與DSP 進(jìn)行零等待狀態(tài)接口,保證了DSP 的運算速度。
配置空間是 PCI 總線(xiàn)所特有的一個(gè)空間,其通常與接口芯片相關(guān),包括一系列的PCI配置寄存器。PCI9052 的配置寄存器分為PCI 配置寄存器和局部配置寄存器,兩者都可以由PCI 總線(xiàn)和串行EEPROM 訪(fǎng)問(wèn)。
3.1 PCI 配置寄存器及其配置
在 PCI 配置寄存器中的設備ID、制造商ID、版本號、首區類(lèi)代碼、類(lèi)別代碼、指令寄存器和狀態(tài)寄存器等在所有的PCI 設備中都必須實(shí)現。操作系統通常使用其內容來(lái)決定為該PCI 設備加載驅動(dòng)程序。此外,PCI 配置寄存器還提供6 個(gè)基地址寄存器,其中BASE0 和BASE1 是分別映射到內存和I/O 的基地址,可固定用于對PCI9052 的寄存器操作。而B(niǎo)ASE2~BASE5 最多可訪(fǎng)問(wèn)局部端所接的4 個(gè)設備,實(shí)現其局部地址空間的訪(fǎng)問(wèn)。PCI 總線(xiàn)對局部端設備的局部地址映射是通過(guò)1 個(gè)寄存器組(包括PCI 基地址寄存器、局部范圍寄存器、局部基地址寄存器和局部總線(xiàn)區域描述符)來(lái)實(shí)現的。它定義了每個(gè)空間及其特性,并將局部端設備通過(guò)局部端地址翻譯為PCI 總線(xiàn)地址,即將本地設備映射到系統的內存或I/O端口。而片選信號寄存器則用來(lái)選定這些設備。這樣,用程序操作這一段內存(或I/O)實(shí)際上就是對本地設備的操作。這些寄存器的內容必須在設備復位時(shí)通過(guò)串行EEPROM 加載。
3.2 局部配置寄存器及其配置
在這里,選取 LAS0(Local Address Space 0)訪(fǎng)問(wèn)局部端雙口RAM,與其相關(guān)的寄存器為L(cháng)AS0 范圍寄存器、LAS0 局部基地址寄存器、LAS0 局部總線(xiàn)區域描述符和片選0 基地址寄存器。LAS0 范圍寄存器用于定義板卡上資源所占地址空間的大小。由于板卡需要2KB的內存空間,而計算機預留了32KB 空間(即8000H),因此寫(xiě)入寄存器的值為0xFFFF8000H;LAS0 局部基地址寄存器用來(lái)定義板卡資源所占的基地址,它將其重新映射到PCI 地址空間中,以使PC 機能對板卡進(jìn)行訪(fǎng)問(wèn)。由于基地址必須是地址空間范圍的整數倍,又因局部地址空間位0 為使能位,因此,寫(xiě)入寄存器的值為00008001H;LAS0 局部總線(xiàn)區域描述符用來(lái)定義地址空間0 的具體工作特性。由于板卡數據總線(xiàn)采用16 位,工作方式定義為不使能突發(fā)和不可預取,因此寫(xiě)入寄存器的值為4043A1C0H;片選0 基地址寄存器用來(lái)確定片選信號有效的地址范圍,其既確定了片選信號的基地址又確定了片選信號的地址范圍。
這里控制卡采用PCI9052 的CS0#作為雙口RAM 的片選信號,則其起始地址和地址范圍都可由片選0 基地址寄存器設置。由于雙口RAM 容量為2KB,因此設置CS0#基地址寄存器的第11位為1,又局部總線(xiàn)端空間0 的基地址是0x00008000H,為方便尋址,將CS0#的基地址和局部總線(xiàn)端空間0 的基地址設為同一值。由于基地址(8000H)是CS0#地址范圍的16 倍,所以將CS0#基地址寄存器的第16 位設為1,再將位0 設為1 使能,這樣寫(xiě)入片選0 基地址寄存器的值為0x00008401H。當PC 機尋址時(shí),地址映射到局部總線(xiàn)端的空間0,從其基地址開(kāi)始的2K 空間落在CS0#基地址寄存器所設置的范圍內,CS0#端則有效,可對雙口RAM各單元進(jìn)行讀寫(xiě),這樣就不必根據地址譯碼得到片選邏輯,簡(jiǎn)化了硬件設計。此外,PCI9052提供兩種中斷源,即硬件和軟件中斷。這里板卡使用其提供的2 個(gè)局部中斷中的一個(gè),即LINTi1 引腳,通過(guò)設置中斷控制/狀態(tài)寄存器(INTCSR)實(shí)現,并生成PCI 中斷INTA#方式。
4 驅動(dòng)程序的開(kāi)發(fā)
為了從 PCI 總線(xiàn)配置寄存器中獲得上位機動(dòng)態(tài)分配的映射基地址,并對映射端口進(jìn)行讀寫(xiě),必須編寫(xiě)驅動(dòng)程序。編寫(xiě)時(shí)可以使用DDK,但是難度較大,需要做很多通用的基礎性工作。為簡(jiǎn)化驅動(dòng)程序開(kāi)發(fā),可以采用NuMega 公司開(kāi)發(fā)的DriverStudio 中的DriverWorks工具包進(jìn)行WDM 驅動(dòng)程序設計。由于其被嵌入到VC 中,因此可更方便的用于開(kāi)發(fā)和調試驅動(dòng)程序。實(shí)踐表明,DriverStudio 并沒(méi)有通過(guò)犧牲系統性能來(lái)?yè)Q取驅動(dòng)程序的快速開(kāi)發(fā)。
評論