Nios 的用户定义接口逻辑实例 有许多人问我使用 Nios 的用户定义接口逻辑怎么用,想了几天决定设计一个实例来说明。该例为一个使用 user to interface logic 设计的 PWM 实例,其中包括三个文件: plus32.v 是一个为 32bit nios 设计的 pwm 实例。 plus16.v 是一个为 16bit nios 设计的 pwm 实例。 test.s 是一个使用中断调用 pwm 的汇编语言测试程序。以上模块和程序均调试通过,并可稳定工作。这里让大家参考是使大家通过该例来真正理解 user to interface logic 设计方法,和nios 中通过汇编调用中断的方法,所以超值喔。另外热烈欢迎大家的指导。 注:在设计 Nios 时,将你调用的 user to interface logic 插件重命名为 plus_0,这样我的 test.s 可不作任何改动,你就可用示波器通过 nios 的 plus 管脚观察到一个要求的输出。
上传时间: 2013-11-15
上传用户:cc1915
有两种方式可以让设备和应用程序之间联系: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
Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践详细介绍了KeilCx51V7.机C语言编译器和全新Windows集成开发环境μVision2的强大功能和具体使用方法。全面介绍了最新版本Cx51编译器新增加的控制命令,给出了全部Cx51运行库函数及其应用范例,对KeilCx51软件包中各种应用工具,如BL51/Lx51连接定位器、A51/Ax51宏汇编器、LIB51库管理程序以及OH51符号转换程序等都作了详细介绍,还介绍了单片机实时多任务操作系统RTX51及其子集RTX51TINY的具体功能与应用方法。μVision2已经将调试器功能集成于其中,用户可以在单一环境下完成从源程序编写、编译、连接定位一直到目标文件的仿真调试等全部工作,书中详细介绍了μVision2各种功能和应用,包括软件模拟调试和硬件目标板实时在线仿真。第1章 851单片机与KeilCx51基础 1.1 851单片机的存储器组织结构 1.2 KeilCx51开发工具 1.3 Cx51简单编程与调试第2章 Cx51程序设计基础 2.1 标识符与关键字 2.2 Cx51程序设计的基本语法 2.2.1 数据类型 2.2.2 常量 2.2.3 变量及其存储模式 2.2.4 用typedef重新定义数据类型 2.2.5 运算符与表达式 2.3 Cx51程序的基本语句 2.3.1 表达式语句 2.3.2 复合语句 2.3.3 条件语句 2.3.4 开关语句 2.3.5 循环语句 2.3.6 返回语句第3章 函数 3.1 函数的定义; 3.2 函数的调用 3.2.1 函数的调用形式 3.2.2 对被调用函数的说明 3.2.3 函数的参数和函数的返回值 3.2.4 实际参数的传递方式 3.3 函数的递归调用与再入函数
上传时间: 2014-01-16
上传用户:edisonfather
10pin jtag接口定义 表1 Rainbow Blaster 的10PIN 母头接口定义引AS 模式 PS 模式 JTAG 模式脚 信号名 描述 信号名 描述 信号名 描述1 DCLK 时钟信号 DCLK 时钟信号 TCK 时钟信号2 GND 信号地 GND 信号地 GND 信号地3 CONF_DONE 配置完毕 CONF_DONE 配置完毕 TDO 数据来自于器件4 VCC(TRGT) 目标电源 VCC(TRGT) 目标电源 VCC(TRGT) 目标电源5 nCONFIG 配置控制 nCONFIG 配置控制 TMS JTAG 状态机控制6 nCE Cyclone 芯片使能/ /7 DATAOUT AS 数据输出 nSTATUS 配置状态 /8 nCS 串行配置器件芯片使能/ /9 ASDI AS 数据输入 DATA0 数据到器件 TDI 数据到器件10 GND 信号地 GND 信号地 GND 信号地
上传时间: 2014-04-02
上传用户:lina2343
LVDS和TTL板的接口定义及连接原理图: TTL板与LVDS 相同 一、接口定义: 1、 LCD MODULE与驱动板之间的信号线接口定义如下:VDS接口又称RS-644总线接口,是20世纪90年代才出现的一种数据传输和接口技术。LVDS即低电压差分信号,这种技术的核心是采用极低的电压摆幅高速差动传输数据,可以实现点对点或一点对多点的连接,具有低功耗、低误码率、低串扰和低辐射等特点,其传输介质可以是铜质的PCB连线,也可以是平衡电缆。LVDS在对信号完整性、低抖动及共模特性要求较高的系统中得到了越来越广泛的应用。目前,流行的LVDS技术规范有两个标准:一个是TIA/EIA(电讯工业联盟/电子工业联盟)的ANSI/TIA/EIA-644标准,另一个是IEEE 1596.3标准。
上传时间: 2013-10-14
上传用户:wangchong
在电子系统开发过程中,为了验证接收系统的灵敏度、抗干扰性等指标,是否可以在复杂的信号环境下正常工作,需要一个复杂的信号源,该信号源应该能够产生被测试系统在实际工作环境下的复杂接收信号,如数字调制信号,跳频信号,噪声干扰信号等。从而使接收系统工作于真实电子信号环境中。本文将阐述如何利用安捷伦ADS 仿真软件和ESG E4438C 矢量信号发生器,产生用户自定义波形的复杂信号。
上传时间: 2013-10-20
上传用户:fairy0212
指针变量的定义
上传时间: 2013-11-07
上传用户:xuan‘nian
Altium Designer中的板层定义介绍
上传时间: 2013-11-03
上传用户:ch3ch2oh
PADS元件引脚定义
上传时间: 2013-11-08
上传用户:bnfm
AutoCAD是由美国Autodesk欧特克官方于二十世纪八十年代初为微机上应用CAD技术而开发的绘图程序软件。AutoCAD 2010于2009年3月23日发布,它可以在各种操作系统支持的微型计算机和工作站上运行,并支持分辨率由320×200到2048×1024的各种图形显示设备40多种,以及数字仪和鼠标器30多种,绘图仪和打印机数十种。 AutoCAD 2010官方简体中文版下载(32bit,1.74GB) AutoCAD 2010官方简体中文版下载(64bit,1.92GB) - 动态块对几何及尺寸约束的支持,让你能够基于块属性表来驱动块尺寸,甚至在不保存或退出块编辑器的情况下测试块。 - 光滑网线工具能够让你创建自由形式和流畅的3D模型。 - 子对象选择过滤器可以限制子对象选择为面、边或顶点。 - PDF输出提供了灵活、高质量的输出。把TureType字体输出为文本而不是图片,定义包括层信息在内的混合选项,并可以自动预览输出的PDF。 - PDF覆盖是AutoCAD2010中最受用户期待的功能。你可以通过与附加其它的外部参照如DWG、DWF、DGN及图形文件一样的方式,在AutoCAD图形中附加一个PDF文件。你甚至可以利用熟悉的对象捕捉来捕捉PDF文件中几何体的关键点。 - 填充变得更加强大和灵活,你能够夹点编辑非关联填充对象。 - 初始安装能够让你很容易地按照你的需求定义AutoCAD环境。你定义的设置会自动保存到一个自定义工作空间。 - 应用程序菜单(位于AutoCAD窗口的左上角)变得更加有效,可以更加容易地访问工具。 - Ribbon功能升级了,对工具的访问变得更加灵活和方便。这个功能被投票为AutoCAD 2010 beta测试人员最喜欢的功能之一。 - 快速访问工具栏的功能增强了,提供了更多的功能。 - 多引线提供了更多的灵活性,它能让你对多引线的不同部分设置属性,对多引线的样式设置垂直附件,还有更多! - 查找和替换功能使你能够缩放到一个高亮的文本对象,可以快速创建包含高亮对象的选择集。 - 新功能研习已经升级,包含了AutoCAD 2010的新功能。 - 尺寸功能增强了,提供了更多对尺寸文本的显示和位置的控制功能。 - 颜色选择可以在AutoCAD颜色索引器里更容易被看到,你甚至可以在层下拉列表中直接改变层的颜色。 - 测量工具使你能够测量所选对象的距离、半径、角度、面积或体积。 - 反转工具使你可以反转直线、多段线、样条线和螺旋线的方向。 - 样条线和多段线编辑工具可以把样条线转换为多段线。 - 清理工具包含了一个清理0长度几何体和空文本对象的选项。 - 视口旋转功能使你能够控制一个布局中视口的旋转角度。 - 参照工具(位于Ribbon的插入标签)能够让你附加和修改任何外部参照文件,包括DWG, DWF, DGN, PDF或图片格式。 - 图纸集使你可以设置哪些图纸或部分应该被包含在发布操作中,图纸列表表格比以前更加灵活。 - 快速查看布局和快速查看图形除了包含布局预览外,还会有一个模型空间预览图形。 - 文件浏览对话框(如打开和保存)在输入文件名的时候支持自动完成。对象尺寸限制已经被扩大到至少4GB(取决于你的系统配置),这会提供更大的灵活性。 - 3D打印功能让你通过一个互联网连接来直接输出你的3D AutoCAD图形到支持STL的打印机。 - CUIx文件格式在CUI编程器中工作时,会提高性能。它会包含文件中定义的命令所使用的自定义图像。 - 动作宏包含了一个新的动作宏管理器,一个基点选项和合理的提示
上传时间: 2013-11-13
上传用户:674635689