摘 要 針對現有單相機單光源視線追蹤系統存在的幾個問題:精度不高、頭動受限以及標定復雜,提出了一種新的基于瞳孔?角膜反射(PCCR)技術的視線追蹤方法.通過提出的瞳孔邊緣濾波算法(RDPEF)和三通道偽彩色圖(TCPCM)解決了近紅外條件下瞳孔定位誤差較大、瞳孔跟蹤魯棒性較差的問題,進而提高了視線特征提取的精度.通過提出的頭部位置補償方法以及個體差異轉化模型,使二維映射模型允許使用者頭部運動并且只需要單點標定.該方法提高了單相機視線追蹤的精度和應用范圍,為面向人機交互的視線追蹤系統提供了有效的低成本解決方案.關鍵詞 視線追蹤;瞳孔定位;瞳孔跟蹤;視線估計;瞳孔?角膜反射(PCCR)技術
上傳時間: 2013-10-21
上傳用戶:超凡大師
at91rm9200啟動過程教程 系統上電,檢測BMS,選擇系統的啟動方式,如果BMS為高電平,則系統從片內ROM啟動。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩個地址處都可以訪問到ROM。由于9200的ROM中固化了一個BOOTLOAER程序。所以PC從0X0處開始執行這個BOOTLOAER(準確的說應該是一級BOOTLOADER)。這個BOOTLOER依次完成以下步驟: 1、PLL SETUP,設置PLLB產生48M時鐘頻率提供給USB DEVICE。同時DEBUG USART也被初始化為48M的時鐘頻率; 2、相應模式下的堆棧設置; 3、檢測主時鐘源(Main oscillator); 4、中斷控制器(AIC)的設置; 5、C 變量的初始化; 6、跳到主函數。 完成以上步驟后,我們可以認為BOOT過程結束,接下來的就是LOADER的過程,或者也可以認為是裝載二級BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、連接在外部總線上的8位并行FLASH的順序依次來找合法的BOOT程序。所謂合法的指的是在這些存儲設備的開始地址處連續的存放的32個字節,也就是8條指令必須是跳轉指令或者裝載PC的指令,其實這樣規定就是把這8條指令當作是異常向量表來處理。必須注意的是第6條指令要包含將要裝載的映像的大小。關于如何計算和寫這條指令可以參考用戶手冊。一旦合法的映像找到之后,則BOOT程序會把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超過16K-3K的大小。當BOOT程序完成了把合法的映像搬到SRAM的任務以后,接下來就進行存儲器的REMAP,經過REMAP之后,SRAM從映設前的0X200000地址處被映設到了0X0地址并且程序從0X0處開始執行。而ROM這時只能在0X100000這個地址處看到了。至此9200就算完成了一種形式的啟動過程。如果BOOT程序在以上所列的幾種存儲設備中找到合法的映像,則自動初始化DEBUG USART口和USB DEVICE口以準備從外部載入映像。對DEBUG口的初始化包括設置參數115200 8 N 1以及運行XMODEM協議。對USB DEVICE進行初始化以及運行DFU協議。現在用戶可以從外部(假定為PC平臺)載入你的映像了。在PC平臺下,以WIN2000為例,你可以用超級終端來完成這個功能,但是還是要注意你的映像的大小不能超過13K。一旦正確從外部裝載了映像,接下來的過程就是和前面一樣重映設然后執行映像了。我們上面講了BMS為高電平,AT91RM9200選擇從片內的ROM啟動的一個過程。如果BMS為低電平,則AT91RM9200會從片外的FLASH啟動,這時片外的FLASH的起始地址就是0X0了,接下來的過程和片內啟動的過程是一樣的,只不過這時就需要自己寫啟動代碼了,至于怎么寫,大致的內容和ROM的BOOT差不多,不同的硬件設計可能有不一樣的地方,但基本的都是一樣的。由于片外FLASH可以設計的大,所以這里編寫的BOOTLOADER可以一步到位,也就是說不用像片內啟動可能需要BOOT好幾級了,目前AT91RM9200上使用較多的bootloer是u-boot,這是一個開放源代碼的軟件,用戶可以自由下載并根據自己的應用配置。總的說來,筆者以為AT91RM9200的啟動過程比較簡單,ATMEL的服務也不錯,不但提供了片內啟動的功能,還提供了UBOOT可供下載。筆者寫了一個BOOTLODER從片外的FLASHA啟動,效果還可以。 uboot結構與使用uboot是一個龐大的公開源碼的軟件。他支持一些系列的arm體系,包含常見的外設的驅動,是一個功能強大的板極支持包。其代碼可以 http://sourceforge.net/projects/u-boot下載 在9200上,為了啟動uboot,還有兩個boot軟件包,分別是loader和boot。分別完成從sram和flash中的一級boot。其源碼可以從atmel的官方網站下載。 我們知道,當9200系統上電后,如果bms為高電平,則系統從片內rom啟動,這時rom中固化的boot程序初始化了debug口并向其發送'c',這時我們打開超級終端會看到ccccc...。這說明系統已經啟動,同時xmodem協議已經啟動,用戶可以通過超級終端下載用戶的bootloader。作為第一步,我們下載loader.bin.loader.bin將被下載到片內的sram中。這個loder完成的功能主要是初始化時鐘,sdram和xmodem協議,為下載和啟動uboot做準備。當下載了loader.bin后,超級終端會繼續打印:ccccc....。這時我們就可以下在uboot了。uboot將被下載到sdram中的一個地址后并把pc指針調到此處開始執行uboot。接著我們就可以在終端上看到uboot的shell啟動了,提示符uboot>,用戶可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了對內存、flash、網絡、系統啟動等一些命令。 如果系統上電時bms為低電平,則系統從片外的flash啟動。為了從片外的flash啟動uboot,我們必須把boot.bin放到0x0地址出,使得從flash啟動后首先執行boot.bin,而要少些boot.bin,就要先完成上面我們講的那些步驟,首先開始從片內rom啟動uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz燒寫到flash中的目的,假如我們已經啟動了uboot,可以這樣操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系統復位,就可以看到系統先啟動boot,然后解壓縮uboot.gz,然后啟動uboot。注意,這里uboot必須壓縮成.gz文件,否則會出錯。 怎么編譯這三個源碼包呢,首先要建立一個arm的交叉編譯環境,關于如何建立,此處不予說明。建立好了以后,分別解壓源碼包,然后修改Makefile中的編譯器項目,正確填寫你的編譯器的所在路徑。 對loader和boot,直接make。對uboot,第一步:make_at91rm9200dk,第二步:make。這樣就會在當前目錄下分別生成*.bin文件,對于uboot.bin,我們還要壓縮成.gz文件。 也許有的人對loader和boot搞不清楚為什么要兩個,有什么區別嗎?首先有區別,boot主要完成從flash中啟動uboot的功能,他要對uboot的壓縮文件進行解壓,除此之外,他和loader并無大的區別,你可以把boot理解為在loader的基礎上加入了解壓縮.gz的功能而已。所以這兩個并無多大的本質不同,只是他們的使命不同而已。 特別說名的是這三個軟件包都是開放源碼的,所以用戶可以根據自己的系統的情況修改和配置以及裁減,打造屬于自己系統的bootloder。
上傳時間: 2013-10-27
上傳用戶:wsf950131
怎樣寫testbench-xilinx 在ISE 環境中, 當前資源操作窗顯示了資源管理窗口中選中的資源文件能進行的相關操作。在資源管理窗口選中了 testbench 文件后,在當前資源操作窗顯示的 ModelSim Simulator 中顯示了4種能進行的模擬操作,分別是:Simulator Behavioral Model(功能仿真)、Simulator Post-translate VHDL Model(翻譯后仿真)、Simulator Post-Map VHDL Model(映射后仿真)、Simulator Post-Place & Route VHDL Model(布局布線后仿真) 。如
標簽: testbench-xilinx
上傳時間: 2013-11-14
上傳用戶:467368609
HCS12微控制器MC9S12DP256 第一步: 1) HCS12 技術概述2) Operating Modes工作模式3) Resource Mapping資源映射4) External Bus Interface外部總線接口5) Port Integration Module端口集成模塊6) Background Debug Mode背景調試模塊
上傳時間: 2013-12-20
上傳用戶:源碼3
匯編器在微處理器的驗證和應用中舉足輕重,如何設計通用的匯編器一直是研究的熱點之一。本文提出了一種開放式的匯編器系統設計思想,在匯編語言與機器語言間插入中間代碼CMDL(code mapping description language)語言,打破匯編語言與機器語言的直接映射關系,由此建立起一套描述匯編語言與機器語言的開放式映射體系。基于此開放式映射體系開發了一套匯編器系統,具有較高層次上的通用性和可移植性。【關鍵詞】指令集,CMDL,匯編器,開放式 Design of Retargetable Assembler System Liu Ling Feng Wen Nan Wang Ying Chun Jiang An Ping Ji Li Jiu IME of Peking University, 100871【摘要】An assembler plays a very important role in the field of microprocessor verifications and applications, thus how to build a retargetable assembler system has been a hotspot in this field for long time. This paper presents a new method about the retargetable assembler system design.It provides a kind of language CMDL, code mapping description language. During the process of assembling, assembler languages are firstly translated to CMDL, and then mapped to the machine codes. In an other word, CMDL is inserted between assembler languages and machine codes during the translation procedure. As a medium code, CMDL has a lot of features, such as high extraction, strong descript capabilities. It can describe almost all attributes of assembler languages. By breaking the direct mapping relationship between assembler languages and machine codes, the complexities of machine codes are hided to the users, therefore, the new retargetable assembler system has higher retargetable level by converting the mapping from assembler languages and machine codes to assembler languages and CMDL, and implementationof it becomes easier. Based on the new mapping system structure, a retargetable assemblersystem is developed. It proved the whole system has good retargetability and implantability.【關鍵詞】instruction set, symbol table, assembler, lexical analysis, retargetability
上傳時間: 2013-10-10
上傳用戶:meiguiweishi
基于M CORE微控制器的嵌入式系統從應用的角度出發,全面介紹了構成嵌人式系統的微控制器的結構和常用支撐硬件的原理以及設計開發方法。本書共 24章,分為3大部分。第 1部分(第 1~14章)介紹具有 32位 RISC CPU核的M·CORE微控制器的結構及原理,按模塊分章,對各功能模塊的原理及使用方法都有詳盡的講解。眾所周知,微控制器種類繁多,雖然不同種類微控制器的CPU及內部功能模塊有所不同,但基本原理(尤其是一些通用的功能)是一致的。第2部分(第15—19章)介紹嵌入式系統常用外圍電路的原理及設計和使用方法,包括有:異步串行接口的互連及應用舉例、同步串行總線及應用舉例、液晶顯示模塊、液晶控制器、觸摸屏及觸摸屏控制器和各類存儲器的應用舉例。第3部分(第20—24章)介紹嵌人式系統的開發環境與軟件開發,在討論嵌人式系統軟件開發的一般過程和開發工具需求的基礎上,介紹M·CORE軟件開發支持工具集、MMC2107微控制器評估板、M·CORE常用工具軟件、QodeWarrior集成開發環境IDE及M·CORE的基本程序設計技術。 第1部分 M·COREM控制器的結構及原理 第1章 微控制器及其應用技術概述 1.1 微控制器的特點 1.2 微控制器技術的發展 1.3 M·CORE系列微控制器 l.3.1 MMC2107的特點及組成 1.3.2 MMC2107的引腳描述 1.3.3 MMC2107的系統存儲器地址映射 第2章 M·CORE M210中央處理單元(CPU) 2.1 M·CORE處理器綜述 2.1.1 M·CORE處理器的微結構 2.1.2 M·CORE處理器的編程模型 2.1.3 M·CORE的數據格式 2.1.4 M·CORE處理器的寄存器 2.2 M·CORE處理器指令系統簡述 2. 2.l 指令類型和尋址方式
上傳時間: 2013-10-28
上傳用戶:lhw888
數字I/O腳有專用和復用。數字I/O腳的功能通過9個16位控制寄存器來控制。控制寄存器分為兩類:(1)I/O復用控制寄存器(MCRX),來選擇I/O腳是外設功能還是I/O功能。(2)數據方向控制寄存器(PXDATDIR):控制雙向I/O腳的數據和數據方向。注意:數字I/O腳是通過映射在數據空間的控制寄存器來控制的,與器件的I/O空間無任何關系。240X/240XA多達41只數字I/O腳,多數具有復用功能。
標簽: 數字
上傳時間: 2013-10-31
上傳用戶:qimingxing130
有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數:Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數InputBuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
上傳時間: 2013-10-17
上傳用戶:gai928943
計算機部件要具有通用性,適應不同系統與不同用戶的需求,設計必須模塊化。計算機部件產品(模塊)供應出現多元化。模塊之間的聯接關系要標準化,使模塊具有通用性。模塊設計必須基于一種大多數廠商認可的模塊聯接關系,即一種總線標準。總線的標準總線是一類信號線的集合是模塊間傳輸信息的公共通道,通過它,計算機各部件間可進行各種數據和命令的傳送。為使不同供應商的產品間能夠互換,給用戶更多的選擇,總線的技術規范要標準化。總線的標準制定要經周密考慮,要有嚴格的規定。總線標準(技術規范)包括以下幾部分:機械結構規范:模塊尺寸、總線插頭、總線接插件以及按裝尺寸均有統一規定。功能規范:總線每條信號線(引腳的名稱)、功能以及工作過程要有統一規定。電氣規范:總線每條信號線的有效電平、動態轉換時間、負載能力等。總線的發展情況S-100總線:產生于1975年,第一個標準化總線,為微計算機技術發展起到了推動作用。IBM-PC個人計算機采用總線結構(Industry Standard Architecture, ISA)并成為工業化的標準。先后出現8位ISA總線、16位ISA總線以及后來兼容廠商推出的EISA(Extended ISA)32位ISA總線。為了適應微處理器性能的提高及I/O模塊更高吞吐率的要求,出現了VL-Bus(VESA Local Bus)和PCI(Peripheral Component Interconnect,PCI)總線。適合小型化要求的PCMCIA(Personal Computer Memory Card International Association)總線,用于筆記本計算機的功能擴展。總線的指標計算機主機性能迅速提高,各功能模塊性能也要相應提高,這對總線性能提出更高的要求。總線主要技術指標有幾方面:總線寬度:一次操作可以傳輸的數據位數,如S100為8位,ISA為16位,EISA為32位,PCI-2可達64位。總線寬度不會超過微處理器外部數據總線的寬度。總數工作頻率:總線信號中有一個CLK時鐘,CLK越高每秒鐘傳輸的數據量越大。ISA、EISA為8MHz,PCI為33.3MHz, PCI-2可達達66.6MHz。單個數據傳輸周期:不同的傳輸方式,每個數據傳輸所用CLK周期數不同。ISA要2個,PCI用1個CLK周期。這決定總線最高數據傳輸率。5. 總線的分類與層次系統總線:是微處理器芯片對外引線信號的延伸或映射,是微處理器與片外存儲器及I/0接口傳輸信息的通路。系統總線信號按功能可分為三類:地址總線(Where):指出數據的來源與去向。地址總線的位數決定了存儲空間的大小。系統總線:數據總線(What)提供模塊間傳輸數據的路徑,數據總線的位數決定微處理器結構的復雜度及總體性能。控制總線(When):提供系統操作所必需的控制信號,對操作過程進行控制與定時。擴充總線:亦稱設備總線,用于系統I/O擴充。與系統總線工作頻率不同,經接口電路對系統總統信號緩沖、變換、隔離,進行不同層次的操作(ISA、EISA、MCA)局部總線:擴充總線不能滿足高性能設備(圖形、視頻、網絡)接口的要求,在系統總線與擴充總線之間插入一層總線。由于它經橋接器與系統總線直接相連,因此稱之為局部總線(PCI)。
上傳時間: 2013-11-09
上傳用戶:nshark
摘要:設計并實現了一個USB/EPP 轉接系統,給出其硬件設計方案并討論了相關技術細節, 使其實現USB 接口到EPP接口的相互數據轉發。使僅具有EPP 接口的傳統儀器設備借助于USB/EPP 轉接系統擁有USB 總線所提供的即插即用和設備插架特性, 方便其通過USB 接口靈活接入同時擁有多個外設的計算機主機系統。關鍵詞:USB;EPP;轉接系統中圖分類號:TP368.3 文獻標識碼:A文章編號:1008- 0570(2005)11- 2- 0166- 03 在傳統的I/O 模式中,計算機外設通常映射為CPU 中固定I/O 地址,要求由主機分配一個指定的IRQ 中斷請求。由于PC 機的端口和中斷資源有限,因而使外設的可擴展性受到局限;同時,隨著電腦應用的拓展,PC 機的外設接口越來越多,外設對系統資源的獨占性也容易導致系統資源沖突。由于各種外部設備不斷增加,容易導致各種I/O 沖突。由Intel、Compaq、Microsoft、IBM等廠商所提出的USB 總線標準,基于即插即用和設備插架技術,設備接入時不影響應用程序的運行,具有良好的可擴充性和擴展的方便性。目前USB 協議已經發展到了最新的2.0 版本,可支持峰值傳輸速率為480Mbps 的高速外設,可提供4~8 個USB 2.0 接口,同時通過USB 集線器(HUB)的擴展還可以支持多達127 個外設同時連接,基本上解決了各種外設同時存在同時使用的所有問題。基于USB 接口的上述優點,目前的計算機,特別是筆記本計算機基本上都只配備USB 接口,而取消了傳統的串口和并口,這對那些以前購置的需要與計算機進行通信而只有串口或并口的各種儀器的繼續使用造成了極大的障礙。 針對傳統的數字化儀器與計算機通信中存在的接口不足的問題,本文設計了一個USB/EPP 轉接系統,使其能夠從計算機的USB 接口接收數據,經過格式轉換,從USB/EPP 轉接系統的并行接口EPP 發送給傳統的儀器設備;同時也能夠從USB/EPP 轉接系統的并行接口EPP 接收數據,將其轉化為USB 幀格式,并發送到計算機的USB 接口。從而使僅具有EPP 接口的傳統儀器設備借助于USB/EPP 轉接系統,可以繼續正常使用。2 USB 總線2.1 USB 系統描述及總線協議USB 是一種電纜總線,支持在主機和各種即插即用外設之間進行數據傳輸。由主機預定的標準協議使各種設備分享USB 帶寬,當其它設備和主機在運行時,總線允許添加、設置、使用以及拆除外設,這為多個儀器設備共享同一個主計算機提供了可能。USB 協議采用了管道模型的軟硬件協議,摒棄了一般外設協議的端口映射方式,從而有效地避免了計算機應用系統I/O 端口地址沖突。根據功能劃分,一個USB 系統由三個部分組成:即USB 互連、USB 主機和USB 設備。圖1 給出了USB系統的通用拓撲結構。
上傳時間: 2013-10-09
上傳用戶:半熟1994