當今電子系統的設計是以大規模FPGA為物理載體的系統芯片的設計,基于FPGA的片上系統可稱為可編程片上系統(SOPC)。SOPC的設計是以知識產權核(IPCore)為基礎,以硬件描述語言為主要設計手段,借助以計算機為平臺的EDA工具進行的。 本文在介紹了FPGA與SOPC相關技術的基礎上,給出了SOPC技術開發調制解調器的方案。在分析設計軟件Matlab/DSP(Digital Signal Processing)。builder以及Quartus Ⅱ開發軟件進行SOPC(System On a Programmable Chip)設計流程后,依據調制解調算法提出了一種基于DSP Builder調制解調器的SOPC實現方案,模塊化的設計方法大大縮短了調制解調器的開發周期。 在SOPC技術開發調制解調器的過程中,用MATLAB/Simulink的圖形方式調用Altera DSP Builder和其他Simulink庫中的圖形模塊(Block)進行系統建模,在Simulink中仿真通過后,利用DSP Builder將Simulink的模型文件(.MDL)轉化成通用的硬件描述語言VHDL文件,從而避免了VHDL語言手動編寫系統的煩瑣過程,將精力集中于算法的優化上。 基于DSP Builder的開發功能,調制解調器電路中的低通濾波器可直接調用FIRIP Core,進一步提高了開發效率。 在進行編譯、仿真調試成功后,經過QuartusⅡ將編譯生成的編程文件下載到ALTERA公司Cyclone Ⅱ系列的FPGA芯片EP2C5F256C6,完成器件編程,從而給出了一種調制解調器的SOPC系統實現方案。
上傳時間: 2013-05-28
上傳用戶:koulian
有兩種方式可以讓設備和應用程序之間聯系: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
802.11b物理層的simulink建模。模型支持1Mbps, 2Mbps, 5.5Mbps, and 11Mbps 的模式,模型包括幀的生成,BPSK、QPSK調制,巴克碼擴展,CCK以及信道頻移量的選擇和一個AWGN信道。 使用說明:先將壓縮包解壓縮到一個新文件夾中,改變matlab當前執行目錄,然后運行WiFi.MDL文件。 壓縮包中包括6個文件:WiFi.MDL,WiFi_lib.MDL,WiFi_init.m,cck_codes.mat,ber_test.m,test_level_1.m。 模型使用標準:IEEE Std 802.11b-1999, 來源于: http://standards.ieee.org/reading/ieee/std/lanman/
上傳時間: 2014-08-05
上傳用戶:黑漆漆
先進pid控制matlab仿真(第二版) 1、所有仿真算法按章歸類,光盤中的程序名與書中一一對應。 2、將光盤中的仿真程序復制到硬盤MATLAB運行的路徑中,便可仿真運行。 3、本書算法在MATLAB 5.3版下運行成功,并適用于其他版本。 4、程序chap1_11.MDL;chap3_2.MDL;chap3_5.MDL;chap6_2.MDL;chap6_4.MDL需要在Matlab6.5下運行,特此說明。 5、假如您對仿真程序有疑問,請及時通過 E-mail 與作者聯系。 北京航空航天大學 劉金琨 E-mail 地址: ljk@dept3.buaa.edu.cn或ljk@buaa.edu.cn
上傳時間: 2014-01-18
上傳用戶:lanjisu111
music高階譜分析算法研究,同時還包括信號維數的估計,即MDL準則的研究
上傳時間: 2014-01-09
上傳用戶:stampede
This demo nstrates the use of the reversible jump MCMC simulated annealing for neural networks. This algorithm enables us to maximise the joint posterior distribution of the network parameters and the number of basis function. It performs a global search in the joint space of the parameters and number of parameters, thereby surmounting the problem of local minima. It allows the user to choose among various model selection criteria, including AIC, BIC and MDL
標簽: This reversible annealing the
上傳時間: 2015-07-19
上傳用戶:ma1301115706
內容:simulink 非線性模塊仿真正弦信號通過新回環函數,switchtest.fig, switchtest.MDL
上傳時間: 2013-12-19
上傳用戶:yuanyuan123
文件多自由度.m為單獨的文件,單獨執行即可,可以得到一個3自由度的系統受到脈沖作用的結果。 文control.m,plotresult.m,duoziyoudu.MDL為一個完整的程序,先執行control.m,而后執行duoziyoudu.MDL文件,最后plotresult.m文件畫出結果。使用的是kobe地震波.
標簽: 自由度
上傳時間: 2016-01-05
上傳用戶:thinode
AC-DC-AC雙pwm逆變器的Matlab/Simulink仿真源程序。包括兩個電路:一個是50Hz三相 AC(PWM整流)->DC->50Hz三相AC(PWM逆變),驅動三相對稱電阻負載;一個是60Hz 三相AC(全波整流)->DC->50Hz三相AC(PWM逆變),驅動一個永磁同步電動機。(本源碼基于王軍(xiaohongchen@163.com)上載的double_pwm_inverter.MDL改進而來,適用于matlab7.3.0(R2006)版本)
標簽: PWM AC-DC-AC Simulink Matlab
上傳時間: 2016-01-24
上傳用戶:dongbaobao
使用須知 1. 文件夾 兩個文件夾:Mbook和Mfiles。 Mbook文件夾:存放可以用于教學或自學的Mbook形式的文檔。 MFiles文件夾:存放所有例題的M文件,保存的文件名為“Ex+章+序號.m”、“Ex+章+序號.fig”、“Ex+章+序號.MDL”或“Ex+章+序號.doc”。 2. 使用前的準備 (1)軟件需要安裝Office2000 和MATLAB6.5。 (2) 將文件夾Mbook和Mfiles的內容拷貝到用于教學的計算機的硬盤上。 (3)在MATLAB中將“Mfiles”文件夾添加在搜索路徑中 添加搜索路徑的步驟為: 在MATLAB界面選擇菜單“File”→“Set Path”命令,在打開的設置路徑對話框中通過“Add Folder…”或“Add with Subfolders…”按鈕打開瀏覽文件夾窗口來添加搜索目錄。 (3)要運行8.1小節的MEX和EXE文件,則需要有與MATLAB6.5適配的Borland C/C++或MicroSoft Visual C++或Watcom C/C++(詳見11.2和11.3節)。 (4)要運行8.4小節Mbook文件夾的文件,則需要安裝Notebook。
上傳時間: 2016-05-20
上傳用戶:cx111111