數字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
TMS320VC5509
上傳時間: 2013-11-02
上傳用戶:qb1993225
詳細介紹TI公司的TMS320C5402 包括存儲器映射,指令系統,片內外設,引導方式等。
上傳時間: 2013-10-26
上傳用戶:Jesse_嘉偉
雙線性變換的頻率對應關系雙線性變換法雖然避免了“頻率混疊效應”,但出現了模擬頻率與數字頻率為一種非線性的關系情形。即:可見:模擬濾波器與數字濾波器的響應在對應的頻率關系上發生了“畸變”,也造成了相位的非線性變化,這是雙線性變換法的主要缺點。具體而言,在上刻度為均勻的頻率點映射到上時變成了非均勻的點,而且隨頻率增加越來越密。 雙線性變換法除了不能用于線性相位濾波器設計外,仍然是應用最為廣泛的設計IIR數字濾波器的方法。
上傳時間: 2013-10-12
上傳用戶:aysyzxzm
基于FPGA數字電壓表的設計 EDA是電子設計自動化(Electronic Design Automation)的縮寫,在20世紀60年代中期從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發展而來的。 EDA技術就是以計算機為工具,設計者在EDA軟件平臺上,用硬件描述語言VHDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。本電壓表的電路設計正是用VHDL語言完成的 。此次設計采用的是Altera公司 的Quartus II 7.0軟件。本次設計的參考電壓為2.5V,精度為0.01V。此電壓表的設計特點為通過軟件編程下載到硬件實現,設計周期短,開發效率高。
上傳時間: 2013-11-24
上傳用戶:無聊來刷下
隨著HDL Hardware Description Language 硬件描述語言語言綜合工具及其它相關工具的推廣使廣大設計工程師從以往煩瑣的畫原理圖連線等工作解脫開來能夠將工作重心轉移到功能實現上極大地提高了工作效率任何事務都是一分為二的有利就有弊我們發現現在越來越多的工程師不關心自己的電路實現形式以為我只要將功能描述正確其它事情交給工具就行了在這種思想影響下工程師在用HDL語言描述電路時腦袋里沒有任何電路概念或者非常模糊也不清楚自己寫的代碼綜合出來之后是什么樣子映射到芯片中又會是什么樣子有沒有充分利用到FPGA的一些特殊資源遇到問題立刻想到的是換速度更快容量更大的FPGA器件導致物料成本上升更為要命的是由于不了解器件結構更不了解與器件結構緊密相關的設計技巧過分依賴綜合等工具工具不行自己也就束手無策導致問題遲遲不能解決從而嚴重影響開發周期導致開發成本急劇上升 目前我們的設計規模越來越龐大動輒上百萬門幾百萬門的電路屢見不鮮同時我們所采用的器件工藝越來越先進已經步入深亞微米時代而在對待深亞微米的器件上我們的設計方法將不可避免地發生變化要更多地關注以前很少關注的線延時我相信ASIC設計以后也會如此此時如果我們不在設計方法設計技巧上有所提高是無法面對這些龐大的基于深亞微米技術的電路設計而且現在的競爭越來越激勵從節約公司成本角度出 也要求我們盡可能在比較小的器件里完成比較多的功能 本文從澄清一些錯誤認識開始從FPGA器件結構出發以速度路徑延時大小和面積資源占用率為主題描述在FPGA設計過程中應當注意的問題和可以采用的設計技巧本文對讀者的技能基本要求是熟悉數字電路基本知識如加法器計數器RAM等熟悉基本的同步電路設計方法熟悉HDL語言對FPGA的結構有所了解對FPGA設計流程比較了解
上傳時間: 2013-11-06
上傳用戶:asdfasdfd
選擇映射法(SLM)和概率類算法都可以降低OFDM (Orthogonal Frequency Division Multiplexing)系統的PAPR(Peak to Average Power Ratio),傳統SLM算法自身較為復雜,但由于其優良的性能,棄之可惜。研究表明,SLM算法和限幅類算法在性能上具有一定的互補性。任何一個算法未必能達到抑制PAPR的理想效果,在深入研究了兩個算法的基礎上,將其優點聯合起來,以達到降低OFDM系統PAPR的目的。最后對聯合改進算法進行了分析與仿真,并驗證了聯合改進算法的有效性和可行性
上傳時間: 2013-11-22
上傳用戶:xinhaoshan2016