新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于DSP 的PCI 通用運動控制卡的硬件設計

        基于DSP 的PCI 通用運動控制卡的硬件設計

        作者: 時間:2012-10-23 來源:網絡 收藏

        2.5 差分電路

        在噪聲比較大的環境中,為了解決干擾和遠距離傳輸等問題,通常采用差動信號傳輸,如圖4 中虛線框(3)所示。為了進一步消除干擾,在每個輸入端都接入一個濾波電容,同時在每一對差動信號輸入線之間接一個用于線路阻抗匹配的電阻。差動信號(IN+、IN-、A+、A-、B+、B-)經差動線路接收器SN75175 和高速光電耦合器6N137 轉換為單端信號(IN、A、B)輸入到LM628 中,以實現閉環控制。

        2.6 譯碼電路

        如圖 4 中虛線框(4)所示,采用一片3/8 譯碼器74LS138 對地址譯碼,實現對3路伺服單元的片選,而XA0 則專門用于對LM628 進行讀寫控制,這樣得出的地址信號是連續的(0XF60~0XF65)。另外,采用一片四位二進制碼比較器74LS85 實現 對雙口RAM的讀寫片選。片選地址信號范圍為0~7FF,這剛好尋址雙口RAM 2K 范圍內的所有空間。

        此外,由于TMS320F2812 要從雙口RAM 讀出大量的軌跡數據并存儲,而其片內只有18KB 的空間,遠不能滿足要求,同時為了方便程序調試和修改,均需要 擴展一片存儲器。這里選用CYPRESS 公司的256K×16 位的SRAM CY7C1041CV33,其讀寫周期時鐘最快可達12ns,因此可與 進行零等待狀態接口,保證了DSP 的運算速度。

        3 的配置

        配置空間是 總線所特有的一個空間,其通常與接口芯片相關,包括一系列的配置寄存器。9052 的配置寄存器分為PCI 配置寄存器和局部配置寄存器,兩者都可以由PCI 總線和串行EEPROM 訪問。

        3.1 PCI 配置寄存器及其配置

        在 PCI 配置寄存器中的設備ID、制造商ID、版本號、首區類代碼、類別代碼、指令寄存器和狀態寄存器等在所有的PCI 設備中都必須實現。操作系統通常使用其內容來決定為該PCI 設備加載驅動程序。此外,PCI 配置寄存器還提供6 個基地址寄存器,其中BASE0 和BASE1 是分別映射到內存和I/O 的基地址,可固定用于對PCI9052 的寄存器操作。而BASE2~BASE5 最多可訪問局部端所接的4 個設備,實現其局部地址空間的訪問。PCI 總線對局部端設備的局部地址映射是通過1 個寄存器組(包括PCI 基地址寄存器、局部范圍寄存器、局部基地址寄存器和局部總線區域描述符)來實現的。它定義了每個空間及其特性,并將局部端設備通過局部端地址翻譯為PCI 總線地址,即將本地設備映射到系統的內存或I/O端口。而片選信號寄存器則用來選定這些設備。這樣,用程序操作這一段內存(或I/O)實際上就是對本地設備的操作。這些寄存器的內容必須在設備復位時通過串行EEPROM 加載。

        3.2 局部配置寄存器及其配置

        在這里,選取 LAS0(Local Address Space 0)訪問局部端雙口RAM,與其相關的寄存器為LAS0 范圍寄存器、LAS0 局部基地址寄存器、LAS0 局部總線區域描述符和片選0 基地址寄存器。LAS0 范圍寄存器用于定義板卡上資源所占地址空間的大小。由于板卡需要2KB的內存空間,而計算機預留了32KB 空間(即8000H),因此寫入寄存器的值為0xFFFF8000H;LAS0 局部基地址寄存器用來定義板卡資源所占的基地址,它將其重新映射到PCI 地址空間中,以使PC 機能對板卡進行訪問。由于基地址必須是地址空間范圍的整數倍,又因局部地址空間位0 為使能位,因此,寫入寄存器的值為00008001H;LAS0 局部總線區域描述符用來定義地址空間0 的具體工作特性。由于板卡數據總線采用16 位,工作方式定義為不使能突發和不可預取,因此寫入寄存器的值為4043A1C0H;片選0 基地址寄存器用來確定片選信號有效的地址范圍,其既確定了片選信號的基地址又確定了片選信號的地址范圍。

        這里采用PCI9052 的CS0#作為雙口RAM 的片選信號,則其起始地址和地址范圍都可由片選0 基地址寄存器設置。由于雙口RAM 容量為2KB,因此設置CS0#基地址寄存器的第11位為1,又局部總線端空間0 的基地址是0x00008000H,為方便尋址,將CS0#的基地址和局部總線端空間0 的基地址設為同一值。由于基地址(8000H)是CS0#地址范圍的16 倍,所以將CS0#基地址寄存器的第16 位設為1,再將位0 設為1 使能,這樣寫入片選0 基地址寄存器的值為0x00008401H。當PC 機尋址時,地址映射到局部總線端的空間0,從其基地址開始的2K 空間落在CS0#基地址寄存器所設置的范圍內,CS0#端則有效,可對雙口RAM各單元進行讀寫,這樣就不必根據地址譯碼得到片選邏輯,簡化了。此外,PCI9052提供兩種中斷源,即和軟件中斷。這里板卡使用其提供的2 個局部中斷中的一個,即LINTi1 引腳,通過設置中斷控制/狀態寄存器(INTCSR)實現,并生成PCI 中斷INTA#方式。

        4 驅動程序的開發

        為了從 PCI 總線配置寄存器中獲得上位機動態分配的映射基地址,并對映射端口進行讀寫,必須編寫驅動程序。編寫時可以使用DDK,但是難度較大,需要做很多的基礎性工作。為簡化驅動程序開發,可以采用NuMega 公司開發的DriverStudio 中的DriverWorks工具包進行WDM 驅動程序。由于其被嵌入到VC 中,因此可更方便的用于開發和調試驅動程序。實踐表明,DriverStudio 并沒有通過犧牲系統性能來換取驅動程序的快速開發。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新安县| 望江县| 城固县| 临江市| 环江| 洪江市| 满城县| 淄博市| 英德市| 邮箱| 长治县| 濉溪县| 虹口区| 莱州市| 吉安市| 萍乡市| 安庆市| 鸡东县| 卢龙县| 太原市| 华阴市| 信宜市| 灯塔市| 墨竹工卡县| 元江| 什邡市| 合肥市| 八宿县| 泗洪县| 晋宁县| 博野县| 石狮市| 桑日县| 庄河市| 泗洪县| 宁阳县| 枝江市| 鄂州市| 安仁县| 舞阳县| 新乡县|