虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

MDL

  • 基于FPGA的调制解调器

    当今电子系统的设计是以大规模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系统实现方案。

    标签: FPGA 调制解调器

    上传时间: 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 的模式

    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/

    标签: Mbps simulink 802.11 5.5

    上传时间: 2014-08-05

    上传用户:黑漆漆

  • 先进pid控制matlab仿真(第二版) 1、所有仿真算法按章归类

    先进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

    标签: matlab pid 仿真 控制

    上传时间: 2014-01-18

    上传用户:lanjisu111

  • music高阶谱分析算法研究

    music高阶谱分析算法研究,同时还包括信号维数的估计,即MDL准则的研究

    标签: music 分析算法

    上传时间: 2014-01-09

    上传用户:stampede

  • This demo nstrates the use of the reversible jump MCMC simulated annealing for neural networks. This

    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 非线性模块仿真正弦信号通过新回环函数

    内容:simulink 非线性模块仿真正弦信号通过新回环函数,switchtest.fig, switchtest.MDL

    标签: simulink 非线性 模块 仿真

    上传时间: 2013-12-19

    上传用户:yuanyuan123

  • 文件多自由度.m为单独的文件

    文件多自由度.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逆变),驱动三相对称电阻负

    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文件

    使用须知 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。

    标签: Mbook MFiles Mfiles 文档

    上传时间: 2016-05-20

    上传用户:cx111111