I/O接口控制系统(精选6篇)
I/O接口控制系统 第1篇
1 设计方法总体介绍
图1为笔者节选自AT89C51单片机实际开发电路的一部分原理图,如图所示,使用一片GAL16V8芯片,既解决了外部数据空间地址译码的问题,同时也配合74LS273把外部设备直接当作外部数据存储单元来处理,使得开发者可以方便的连接足够多的设备到51单片机。下面先介绍GAL16V8芯片,然后详述它在电路中配合74LS273对51单片机I/O接口进行扩展的方法及原理。
2 GAL16V8介绍
GAL是Generic Array Logic的缩写,即通用可编程阵列逻辑。GAL是早期可编程逻辑器件的发展形式,其特点是大多基于EECMOS工艺,结构简单,可编程逻辑多为与、或阵列,价格低廉,适用于简单的数字逻辑电路设计。GAL16V8是GAL家族中适用于5V系统的一种。
3 GAL16V8配合74LS273对51单片机I/O接口进行扩展的方法及原理
在工程开发过程中,由于51单片机的I/O接口资源有限,需要对其进行扩展,本文选用GAL16V8,使其既担当了地址译码的任务,同时又配合74LS273扩展了单片机的I/O接口,把外围器件和外部数据存储器统一编址,使51单片机能够像访问外部数据存储器一样对外围器件进行读写操作(本文只介绍了写操作,读操作类似)。
3.1 GAL16V8编程
除了按照原理图进行布线制板外,还需要对GAL16V8进行编程,其详细的编程过程在此不再赘述,只列出编程后各引脚间的逻辑关系,如下:
1)Reduced Equations:
3.2 51单片机访问外围器件的示例程序
在图1所示电路中,51单片机使用外部数据存储器访问指令对外围器件进行访问的Keil C51示例程序如下:
3.3 51单片机对74LS273一次写操作的时序分析
如给出的事例程序,单片机的一次外部设备控制操作只是一次对外部数据存储器的写操作,其具体的时序如图2所示,由于是使用此时序去写74LS273,其写入时序需要GAL16V8的参与(如图1所示)。74LS273写入控制端口CP(上升沿有效)与GAL16V8的第15管脚—P15相连,而P15管脚的逻辑表达式为:P15=!(!A13&!A14&A15&!WR)(以下用逻辑式1代替);往地址0X8000写入一次控制字Out_val的过程如下:
1)首先,51单片机P0口输出低位地址0X00,并把它锁存在74LS373里,P2口输出高位地址0X80,在P2口输出高位地址0X80的同时,GAL16V8根据逻辑式1开始译码,由于此时写信号为高,则P15=!(!0&!0&1&!1)=1;与之相连的74LS273写入控制端口CP也变为高电平。
2)51单片机写信号变为低,P0口输出控制字Out_val,同时GAL16V8由逻辑式1决定,使P15=!(!0&!0&1&!0)=0;与之相连的74LS273写入控制端口CP也变为低电平。
3)51单片机写信号变为高,而在此之后的t WHQX(在写信号由低变为高后,数据总线上有效数据的保持时间,最小值为33ns)时间内P0口输出的控制字Out_val保持有效,同时GAL16V8由逻辑式1决定,使P15=!(!0&!0&1&!1)=1;与之相连的74LS273写入控制端口CP也变为高电平。这样就在端口CP产生了一个上升沿,由于74ls273从CP端到输出端的信号最大传播时延为27ns
参考文献
[1]朱善君,孙新亚,古吟东.ASP单片机接口技术与应用[M].北京:清华大学出版社,2005.
[2]唐继贤.51单片机工程应用实例[M].北京:北京航空航天大学出版社,2009.
[3]Lattice Semiconductor Corporation.GAL16V8 Data Sheet(16lv8.pdf).Aug 2008
I/O接口控制系统 第2篇
介绍了计算机联锁系统利用工业总线构成通信网络,实现了CPU与控制模板在物理上分开.实现集中联锁分散控制的.功能.并阐述了系统优势.
作 者:张大涛 Zhang Datao 作者单位:中冶京诚工程技术有限公司信号与通工程技术所,100176,北京 刊 名:铁道通信信号 英文刊名:RAILWAY SIGNALLING & COMMUNICATION 年,卷(期):2009 45(2) 分类号:U2 关键词:计算机联锁系统 工业总线 集中联锁分散控制★ JAVA的文件类和I/O系统简介Java
★ A/O工艺处理某矿区生活污水运行实例
★ Lon总线多点I/O智能节点的开发
I/O接口控制系统 第3篇
随着微电子工业和半导体加工技术的不断发展,集成电路的规模不断增大。这使得将复杂系统集成在单个芯片上成为可能,于是便出现了片上系统SOC(System on a Chip)。SOC极大地缩小了系统体积;SOC减少了板级系统SOB(System on Board)中芯片与芯片之间的互连延时,从而提高了系统的性能;SOC采用基于IP(Intellectual Property)核的设计(Core-based Design),它允许在芯片设计过程中复用(Reuse)已经经过验证的高性能的IP核,从而提高了设计效率[1]。FPGA的飞速发展为SOC的发展开辟了新的方向—SOPC(System On a Programmable Chip)。对于比较复杂的系统,仅仅使用基于硬件的FPGA对其进行协调控制还是比较困难的,因此通常把一个微处理器内核嵌入到FPGA芯片中,采用软硬件协同设计的技术,不仅使得对设备的控制更加灵活,调试也更加方便,并缩短了开发周期。
MicroBlaze是由Xilinx公司推出的一款32位RISC微处理器IP核,具有很高的可配置度,可以将外部存储器,液晶显示屏、键盘接口等外部设备连接在一起并协调它们的工作,适合设计针对网络、电信、数据通信等应用背景的复杂嵌入式系统。
本文以嵌入式I/O系统为例,介绍了基于MicroBlaze进行嵌入式系统设计开发的方法,给出了一种输入/输出系统的设计实现方案,分析了其开发流程,并讨论了设计开发过程中相应的软硬件设计问题。
2.嵌入式I/O系统总体设计
2.1 MicroBlaze的体系结构
MicroBlaze采用功能强大的32位流水线结构,包含32个32位通用寄存器和1个可选的32位移位器,时钟频率可达150 MHz[3]。MicroBlaze软核的结构框图如图1所示。它具有以下基本特征:
(1)32个32位通用寄存器和2个专用寄存器(程序计数器和状态标志寄存器)。
(2)32位指令系统,支持3个操作数和2种寻址方式。
(3)分离的32位指令和数据总线,符合IBM的OPB总线规范(与外设相连接的低速总线)。
(4)通过本地存储器总线(LMB,本地高速总线)直接访问片内块存储器(BRAM)。
(5)具有高速的指令和数据缓存(cache),三级流水线结构(取址、译码、执行)。
(6)具有硬件调试模块(MDM)。
(7)带8个输入和8个输出快速链路接口(FSL)。
2.2 MicroBlaze嵌入式开发工具EDK
Xilinx公司提供了完善的嵌入式开发工具EDK(Embedded Development Kit)。EDK是Xilinx公司于2003年推出的SOPC系统开发套件。该套件集成了丰富的开发工具和大量的IP核资源,其中集成的工具包括硬件平台生成器(Plat Gen)、硬件仿真模型生成器(Sim Gen)、硬件调试工具(XMD)、软件库生成器(Lib Gen)、应用软件编译工具(GNU Compilers)、软件调试工具(GNU Debuggers)等;IP核资源包括LMB和OPB总线接口、外部存储器控制器(EMC)、SDRAM控制器、UART接口、中断控制器、定时器等[2]。
所有这些工具和资源都由EDK中的XPS(Xilinx Platform Studio)集成开发环境统一管理。XPS提供一个友好的图形用户界面(GUI),使用非常方便。
2.3 系统的设计开发流程
在嵌入式系统的开发中,软硬件协同设计的方法可以降低开发成本,缩短开发时间,并使得设计更加灵活,从而逐步取代了传统的设计流程。其中涉及到的关键问题是系统资源的规划和利用,所以在系统设计前首先要考虑系统功能的软硬件划分,清楚地界定系统内部各项功能的最终实现形式;而在进行软硬件分割时,若想达到系统性能的最佳化,就必须考虑到各功能部件之间数据交换的性能以及不同功能部件之间的同步,确保系统在执行时能满足所需的时间约束(timing constraint)[3]。
EDK工具包括XPS工具和SDK工具,XPS工具完成主要软/硬件设计调试工作,SDK工具用于设计和调试应用软件。ISE工具,用于混合编程和定制IP核。ChipScope Pro工具,用于在线调试硬件系统。第三方工具,如Modelsim工具,用于仿真硬件系统。
在本系统的设计开发过程中就采用了软硬件协同设计的方法,其流程如图2所示。
3.系统的关键硬件模块实现
3.1 4×4键盘模块的硬件实现
键盘是计算机系统中最常用的人机交互输入设备,然而在应用中都采用通用的键盘扫描器件是不现实的,需要单独设计成专用的小键盘。
(1)4×4键盘工作原理
4×4键盘的工作原理如图3所示,其中P0~P3为输出口,P4~P7为输入口。无按键按下时,输入口被上拉为高电平。输出口以一定频率循环输出0111、1011、1101、1110。通过读输入口的状态,便可判断击键情况。键盘扫描电路键盘上的每一个按键其实是一个开关电路,当某键被按下时,该按键的接点会呈现逻辑0状态,反之,未被按下时则呈现逻辑1的状态。当尚未按下键盘时,依据表1所示编码方式逐一扫描键盘按键,键盘输入到按键检测电路的值均为1,使键盘无论扫描哪个键时,都检测到尚未按下键盘;当使用者按下键盘按钮,则键盘输入到按键检测电路的值为0,直到键盘扫描到此键时,检测到已按键。
(2)按键的去抖动问题
按键大多是机械式开关结构,在开关切换的瞬间会在接触点出现抖动的现象。因此,必须加上抖动消除电路。如果要防抖动,就不能用时钟去检测按键的按下状态,而要去检测按键按下或者抬起的边沿。例如按键按下的时候就检测与按键连接的FPGA管脚的下降沿,按键松开的时候就检测与按键连接的FPGA管脚的上升沿。这样就可以不用理会按键按下的时间长度,根据按键按下或者抬起的次数来确定计数。
(3)硬件实现
虽然EDK提供的IP核非常丰富,但不可能满足所有用户的需求,根据实际需求定制IP核是嵌入式设计中常需要的,也是实现“量身定制”系统的前提。EDK工具提供了简单的界面帮助用户完成IP核定制过程,其中非常重要的方式是通过IPIF接口定制IP核。IPIF(IP Interface)是EDK提供的标准IP接口,允许用户在系统内总线上构建自己的IP核,用户只需关注自己想要的功能逻辑,EDK工具会根据用户选择的总线方式实现相应的总线接口逻辑,合成完整的IP核模块[4]。
在接口电路设计中,我们使用IPIF接口定制一个KEY_IP核,用于对键盘进行扫描进而采样键盘输出,最终生成扫描码以及产生中断请求。键盘扫描信号频率只需在几百赫兹左右即可,实现时将50MHZ OPB总线频率分频,上升沿循环扫描,下降沿采样,根据采样结果生成扫描码。
考虑到机械式按键的不稳定性,需要对扫描结果进行防抖处理,故在扫描到有键按下时启动一个计数器,计数若干次同一键被扫描到后,即可认为此键已被人为按下,将其存储于本地寄存器后,产生一个中断请求通知CPU调度键盘中断处理程序。
3.2 LCD液晶显示模块的硬件实现
(1)工作原理
TS1620-1 LCD为16×2字符型液晶显示器,可显示两行,每行可显示16个字符,通过发送指令,可配置成不同模式。接口部分有1个8位的数据寄存器、1个8位的指令寄存器、一个7位的地址计数(AC)寄存器和1位的忙标志(BF);指令寄存器用于控制LCD内部电路,完成LCD读写、扫描、显示等功能;数据寄存器用于暂存LCD与外部数据的通信数据。基本操作时序如下:
1)读状态:
RW=H,RS=L,E在读状态期间应保持高电平;
2)读数据:
RW=H,RS=H,E在读数据期间应保持高电平;
3)写指令:
RW=L,RS=L,D0-D7指令码,E在指令码稳定后要产生一个下降沿触发LCD执行此指令;
4)写数据:
RW=L,RS=H,D0~D7为待写数据,E在指令码稳定后要产生一个下降沿触发LCD执行此指令;
AC6~AC0的值为CGRAM还是DDRAM地址取决于最近一次向AC写入的是DDRAM还是CGRAM地址。地址只有7位,在进行传的时候,要并上DB7,组成8位一并传,状态同样通过D0~D7读出,格式如表2所示。
(2)硬件实现
在接口电路的设计中,我们使用IPIF接口定制一个LCD_IP核,通过OPB总线对显示设备进行控制和数据传输。LCD_IP与液晶显示模块之间需要连接的主要有数据线和控制信号线,如图4所示,具体为:RS、R/W、EN、DB7-DB0共11位。
Data_I与数据端口连接,负责采集液晶的状态数据。Data_O与数据端口连接,负责将控制指令和显示数据送至液晶。用DataCmdSelect、Execute、Data_T分别控制EN、RS、R/W信号,通过对这些引脚的组合控制,按照一定的时序关系实现对LCD的控制。
LCD_IP核中需要实现以下四种操作:
(1)读状态:
检测忙标志以及AC的值;
(2)读数据:
读出最近一次由DDRAM地址设置指令处DDRAM单元的内容;
(3)写指令:
设置LCD的工作模式、AC值以及显示方式等;
(4)写数据:
向LCD的DDRAM写入要显示的数据,写之前需要设置DDRAM地址;
四种操作中除读状态外都需对忙标志位检测;若BF为高电平,则LCD正在工作中,此时LCD接口部分被锁定,任何指令都将不处理,故需等待知道BF为低时方可进行下一个操作。
在IP核模板的基础上,用周期计数延时获得读、写操作时序,将指令直接传送至LCD,读写操作在IP核中占用几个总线周期,为了防止应用软件在发送指令期间再次发送新指令,IP核提供一个标志位供应用软件读取,以指示是否正在进行读写操作,若是则应用软件需适当延时等待再通知IP核发送下一条指令。
3.3 系统硬件平台的创建
在键盘和LCD液晶的硬件接口设计完成后,我们利用Xilinx公司提供的EDK开发软件XPS中的工具Create and Import Peripheral将其以IP核的方式挂到OPB(On-Chip Peripheral Bus)总线上。创建IP核时,在IPIF提供的服务中选择用户逻辑中断支持以及软件用户逻辑地址寄存器支持,前者使得外围设备可以管理由用户逻辑产生的中断,后者使得外围设备的用户逻辑部分拥有可寻址的寄存器[1]。按照前面所介绍的连接关系进行硬件搭建后,键盘以及LCD液晶显示模块的硬件详细信息都保存在MHS文件中。该文件定义了系统结构、外围设备和嵌入式处理器,也定义了系统的连通性以及系统中每个外围设备的地址分配和对每个外围设备的可配置选项。平台生成工具将MHS文件用于输入,创建了硬件平台。在XPS中选择Generate bit stream,即可以产生硬件配置文件*.bit文件。硬件平台如图5所示。
4.系统的软件设计与实现
4.1 4×4键盘软件实现
在建立系统时,在OPB总线上添加EDK提供的中断IP核INTC_IP,该IP核INTC可控制多个中断信号。把键盘的用户逻辑产生的中断信号输入到INTC_IP核中,然后INTC_IP核将这个中断信号输入到MicroBlaze的中断端口上,由MicroBlaze进行中断管理。当有中断发生的时候,MicroBlaze会跳转到地址0x10。这是C运行库的一部分,它包括缺省时跳转到中断句柄(interrupt handler)函数,此功能是由Xilinx提供的BSP(Board Support Package)(它是一个最基本的核,为应用程序提供最基本的功能)完成的[7],由于在MSS文件中已经对中断操作路线进行了设置,因此它会跳转到中断处理函数中进行中断处理。同时在引入IP核后,系统会自动生成相关的驱动程序,可以方便使用软件对寄存器进行读写操作。中断处理程序主要是进行了扫描码和ASCII码的转换,并把ASCII码显示在LCD上。
引入中断IP核后,系统会自动生成相关的中断请求号,以及提供与此中断号相关联的默认中断处理句柄(interrupt handler),随后即可在系统初始化时调用XIntc_Register Handler函数注册自定义中断处理句柄替换默认处理句柄。MicroBlaze提供的通用中断处理机制通过XIntc,可以管理多个中断控制器,XIntc中CfgPtr为数组类型,数组元素类型为XIntc_Config用于为中断控制器提供中断管理。XIntc_Config中的HandlerTable用于管理中断请求号与中断处理句柄的关系,所以每个中断控制器可以接收多个中断请求。在发生中断时,MicroBlaze会根据产生中断的中断控制器设备,找到与此设备相关联的XIntc_Config结构,再取出中断发生时的中断请求号,在XIntc_Config结构中找到相应的中断处理句柄,并跳入此处理程序处理中断请求。
4.2 LCD液晶显示模块软件实现
系统上电后,首先根据液晶显示器模块的结构通过写寄存器的方式对各项控制指令代码和参数(如液晶的行数、光标的位置光标、光标是否闪烁等)进行设置,从而完成对液晶显示模块的初始化过程。在对系统进行正确的初始化以后,就可以通过MicroBlaze将数据送至LCD进行显示了。在初始化程序中设置系统控制指令及其参数的方法为:根据用户硬件电路的设计,将指令及参数送到LCD_IP核对应的寄存器地址。系统中每个外设都有自己对应的唯一地址,这个地址是XPS在添加了LCD_IP核后选择Generate Addresses自动产生的。
CheckBF()函数用于通知LCD_IP核发送读取忙标志指令,此函数运行后,LCD_IP核会发出读状态操作指令,在数据有效后,将数据(BF和AC)先缓存于IP核的本地寄存器,而后供应用软件读取;Send Cmd(cmd)函数用于向LCD写入控制命令,从而达到配置LCD和显示字符的目的。需传入有正确命令格式的参数,确定将要执行的操作,在发送之前,需要一直等待CheckBF()检测到BF为低电平;为方便写入数据设有WriteChar、WriteString等函数,此类函数直接调用Send Cmd发出写数据操作;若没有设置LCD工作方式为自动递增AC,则在每次写之前都需要先发出设置DDRAM地址指令。
需要注意的是LCD在写数据之前需发送一系列初始化命令,以配置其工作模式、显示方式等,都是间接通过Send Cmd(cmd)实现。
4.3 应用程序的实现
本系统中应用程序设计部分主要功能为读取按键值,通过查找表的方式完成扫描码到ASCII码的转换,并把键码转换后的值显示在LCD液晶显示模块上。由于前面已经创建好键盘的IP核,又通过LCD_IP核对LCD液晶进行了控制,在此仅需编写主函数即可。按键扫描码的获取可以使用查询或者中断的方式。在具体实现中我们采用中断驱动模式来接收键盘扫描码。采用这种方式,既提高了响应速度,又可实现程序的模块化设计,并便于以后系统的扩充。应用程序调试运行成功之后便会产生.elf可执行文件。
5.系统的开发调试经验
我们更多的采用硬件调试的方法,将系统通过JTAG接口连接到目标板上的XMD调试接口,并把软件代码可执行文件(*.elf)和FPGA硬件配置文件(*.bit)通过Data2Mem转换成新的FPGA位流文件(*.bit)下载到系统中后,通过设置断点,读写内存和寄存器的值等手段来进行调试。最后将调试通过的位流文件,下载到目标芯片上,系统即可正常工作。
另外,结合系统调试过程中的经验,我们发现在进行程序编写时,需要特别注意以下两点:
(1)MicroBlaze为big-endian模式,且其内部总线宽度为32位,因此在对寄存器进行读写时需要注意其数据格式及宽度。
(2)在软件设计中要注意,对于FPGA来说LCD是一个低速设备,因此对于指令的响应需要一定的延迟,需要写一个有延迟作用的函数。
6.结论
本文采用软硬件协同设计的思想,设计并实现了一种基于MicroBlaze处理器的I/O系统。在进行完软硬件功能划分并创建好硬件平台后,对于输入设备键盘的控制以及输出设备LCD液晶显示器的功能设置可以通过软件的方式进行更改。本设计已在Xilinx Spatan3开发板上进行了验证,取得了良好的效果。通过本设计的实现可以看出,MicroBlaze是一个功能强大、应用灵活的嵌入式软处理器,特别是其强大的用户自定义逻辑功能,极大地方便了系统设计。可以预见,基于嵌入式软处理器的SOPC开发方法,必将拥有广阔的应用前景。
摘要:随着微电子工业的不断发展和FPGA技术的不断提高,SOPC技术逐渐成为嵌入式系统技术发展的新方向。本文介绍了XILINX公司的SOPC集成开发环境EDK,以及在EDK中开发和利用用户IP的方法;利用ISE及EDK设计工具设计开发了I/O系统中常用的IP模块,并通过了仿真验证。
关键词:SOPC,MicroBlaze,IP核,软硬件协同设计
参考文献
[1]董代洁,郭怀理等.基于FPGA的可编程Soc设计[M].北京:北京航空航天大学出版社,2006.
[2]Xilinx,“MicroBlaze Processor Reference Guide”EDK(v8.1)[S].January,2006.
[3]Xilinx,“Embedded System Tools Guide”EDK(v8.1)[S].January,2006.
i/o模块是什么意思 第4篇
带有I/O模块和处理器的导轨被称为本地I/O导轨;带有I/O模块、电源、远程I/O通信卡并且安装在远离本地I/O导轨的导轨被称为远程I/O导轨。远程I/O导轨的`数目取决于不同处理器能够控制变量的数目。
远程I/O导轨与处理器之间的通信可以采用多种方式实现,具体包括同轴电缆、双轴电缆、屏蔽双绞线等,如果距离较远而需要考虑抑制噪声干扰问题可以采用光纤通信。
并行I/O模块:
并行I/O模块承担了与外部系统进行信息和数据交互的重要责任,可以用于扩展外围器件,者直接动键盘、LED等简单外部设备。
通常来说,51单片机有4个8位的并行I/O口,分别为P0、PI、P2、P3四组,其中PO和P2既可以用作普通I/O端口也可以当成数据地址端口,P3则在作为普通I/O端口的同时还具有其他(第二)功能,只有PI仅仪用作普通I/O口。
I/O接口控制系统 第5篇
近年来,因为处理器的迅速发展,其速度变得越来越快,然而,资料的存取系统却无法跟上处理器的速度,这使得处理器会因为存取系统过于缓慢而常常处于闲置状态,因此,平行档案系统被广泛的用来解决这个问题。除此之外,由于电脑被使用于平行处理平台的普及率逐步上升,这造成使用于电脑上的平行处理软体需求量持续增加,但是,却有可能缺乏平行I/O的系统,这让平行档案系统被要求为电脑来提供高效能的平行I/O系统,虽然它非常适合用来解决因为贫乏的效能所导致的瓶颈, 可是大多数现存的平行档案系统都是基于像Unix的作业系统,因为这个理由 ,利用微软的.NET架构实做了一个基于视窗作业系统的平行档案系统,这篇论文除了有描述这个系统的设计构思与实现方法还有做了些效能的测试,读取跟写入的效能都比只用单一磁碟还要好。结果显示,写入的效能最高可以达到110 MB/s,读取的效能最好也有75 MB/s。
2 理论基础
外部设备是计算机与外界联系的主要对象。计算机的应用环境千差万别, 与计算机相连的外设各式各样,有机械式的、电动式的、电子式的、光电式的,有模拟的、数字的,有并行的、串行的,有高速的、中速的、低速的,有简单的、复杂的,这使得大多数外设不能直接与计算机系统相连接,而必须通过接口与计算机系统总线连接起来。
I/O接口是位于计算机系统与外设之间的连接电路,是计算机系统与外设连接的桥梁,起着沟通、协调两者关系的作用。针对不同的外设,I/O接口通常具有几个基本功能。
(1) 提供信息传递通道。由于接口位于计算机系统与外设中间, 因此它必须为两者提供信息传递的通道,通道一般是利用接口中的端口(寄存器)来实现的。我们可以设计多个通道, 并有效控制各通道的工作时刻,使计算机系统与外设间的多种信息可以在各通道中分时传输。
(2) 进行数据格式转换。我们通常将外设提供或接收的信息广义地称为数据, 其形式有多种, 如模拟数据、数字数据、并行数据、串行数据等。而计算机系统传输、处理的数据只是数字化的并行数据。因此,在两者进行信息交换时若数据格式不一致,则必须进行数据格式转换。
在I/O接口中完成的数据格式转换有几种方式。
模 / 数转换。若外设是模拟设备,则其发送与接收的信息为模拟数据。当计算机系统从模拟外设获取信息时,必须将外设的模拟数据转换成并行数字数据,才能被计算机系统接收。同样,当计算机系统给模拟外设加载信息时,必须将计算机的并行数字数据转换成模拟数据,才能被外设接收。
串 / 并转换。若外设是数字化的串行设备,其发送与接收的信息为串行数据,则必须将外设的串行数据转换成并行数据,才能被计算机系统接收。同样,需将计算机的并行数据转换成串行数据,才能被外设接收。
数位转换。某些外设虽然是数字化的并行设备,但其传输的并行数据数位若与计算机系统的并行数据数位不符,也需要通过接口将两者的数位作适当的变换。
(3) 进行速度匹配。大多数情况下外设的速度低于计算机系统的速度,由于这种速度的不匹配会造成外设与计算机系统传输信息时出现错误, 因此必须通过I/O接口来协调两者的速度。
一种常用的速度变换方法是在接口中设计数据缓冲器,通过数据缓冲器的“缓冲”功能,使快速的计算机系统与慢速的外设之间达到有效的信息传递。
(4) 进行负载匹配。目前的微机系统均采用总线结构, 系统中所有部件都是通过总线相互连接在一起的,其中外设与微机系统的连接实际上是通过将外设经过接口连接在微机的系统总线上来实现的。由于每种外设对总线呈现的负载不同,而系统总线的负载能力是有限制的,因此,当大负载外设或多外设连接到微机系统时,接口中必须设计负载匹配电路。驱动器可以作为一种能够提供大电流的电流负载匹配电路来使用。
(5) 提供中断能力。当接口中包含中断请求电路时 ,可以支持外设以中断方式与计算机系统进行信息交换,这样可以提高I/O接口自身在多种输入 / 输出方式下的适应性。
由于我们需要在外设和计算机系统之间建立多个通道,因此一个外设接口可能由多个端口构成。假定外设已数字化,并利用数据、状态、控制(命令)三类信息与计算机系统进行信息交换。接口中的数据端口提供了外设与计算机系统间数据交换的通道,命令端口传递CPU发给外设的控制命令,状态端口将外设的工作状态反映给CPU。
3 分析与设计
简单来说,本文设计的系统包含元数据服务器、iod和library三个部分。其架构如图1所示。
初始化模块。该模块功能主要在Driver Entry函数里实现。
处理流程有几个步骤。
1) 初始化驱动名。
2) 注册以该驱动名命名的驱动设备对象 ,并将该对象添加到设备堆栈里。
3) 初始化全局变量,包括本地的元数据hash table。
4) 设置分发 例程入口 , 包括IRP_READ,IRP_CREATE等功能函数。
5) 设置FASTIO例程入口 设置回调 函数接口 , 如Fast IoR ead函数和Fast Io Create等。
6) 注册文件系统操作。
7) 初始化相关资源,同步对象和链表头。
8) 启动工作线程, 主要的线程包括MDS队列处理线程和IRP处理线程。
MDS交互模块。该模块主要功能在HIFS Mds.c里实现。每当有需要和MDS交互的时候,文件系统驱动填充MDS_CMD_QUEUE结构,并且加入MDS命令队列等待处理。
OSD交互模块。Client和OSD间的数据传输采用i SCSI通道。Client与OSD首先要建立会话session,每个会话都有启动端(Initiator)和目标端(Target),client作为i SCSI initiator, 发送OSD命令 ,OSD作为i SCSItarget,响应命令并返回送数据。i SCSI initiator的每个会话都有 自己的发 送线程hifs_tx_thread和接收线 程hifs_rx_thread实现发送 与接收i SCSI协议数据 单元(Protocol Data Unit,PDU)的功能。在对象存储系统中 ,数据或命 令按照T10标准封装 成iscsi命令 ,i SCSIinitiator的入队管理模块将iscsi命令加入到命令队列中,并且将命令交付给相应的发送线程处理。
发送线程hifs_tx_thread的处理流程。发送线程首先与target端建立连接, 启动接收线程。如果命令队列中没有命令发送,则处于阻塞状态;如果命令队列中有命令发送, 则获取命令cmd并将它加入待处理命令队列中,置cmd->tx_done为0,判定命令类型,根据i SCSI协议, 发送命令类型中有Login Request、Logout Request、Text Request、SCSI Command、NOP_OUT,每个发送命令产生一 个分支模 块 , 命令发送 出去以后 , 置cmd->tx_done为1, 并且设置发送线程事件为信号态 ,激活发送线程。
接收线程接收命令基本头部数据,获取待处理的命令cmd指针,判定cmd->done是否为1,如果cmd->done不为1,说明此命令还没有被发送到target端,处于阻塞状态,直到发送线程激活;如果cmd->done为1,则重置接收线程事件为非信号态,并且将cmd从待处理命令队列中摘除,判定cmd的类型根据iSCSI协议,
Create。Create的命令在Windows里实际上有两种,一种是Open即打开操作,另一种才是熟知的Create即创建操作。
有别于Linux系统有一 个root根目录的存 在 ,在Windows系统中还有卷。所以在执行Create操作之前 ,首先要判断的是是否对卷进行操作。如果文件名是空,则表示打开卷的操作。
虽然在HOSS系统里,无论文件夹还是文件,都是以对象的形式存放的。但在Windows下,必须区分清楚文件和文件夹,因为这两种的对象的操作是不同的。
I/O接口控制系统 第6篇
关键词:运动控制器,输入输出,VC,数控机床
0 引言
数控机床作为机械制造行业非常重要的生产设备在社会的发展中越来越显示其重要地位,数控机床的应用也显的尤为的重要,我国使用最多的是德国SIMENS系统和日本的FANUCA系统,这2种机床的输入输出控制主要采用的是SIMENS-S7-200系列的PLC或三菱系列PLC来实现。国产的数控机床应用比较多是华中数控系统,华中数控系统是基于DOS的进行开发,采用的C语言来完成输入输出的控制,固高科技有限公司生产的GT系列运动控制器利用VC进行输入输出程序的开发,相对于国外和国产系统在数控机床I/O控制方面显现出了简单易懂的优点。
1 输入输出地址的分配
固高科技公司的GT系列运动控制器具有16位的通用数字量输入和16位的输出口。主机可以通过命令的方式对该输入/输出口进行操作。其中,通用输入的0号断口(EXI0)可以作为探针输入信号,并通过相关命令设置捕获探针输入信号,当有探针输入信号时引起运动控制器捕获所有控制轴以及辅助编码器的实际位置。
1.1 输入通道地址
GT系列运动控制器可以通过命令GT_ExInpt(&Data)读取该输入端口的状态(共定义了16位输入口)。输入口数据Data与控制器CN1接口的通用数字量输入端口EXI0-EXI15位定义对应关系见表1:
1.2 输出通道地址
GT系列运动控制器可以通过命令GT_ExOpt(Data)设定该输出口的状态(共定义了16位输出口)。输出口数据Data与控制器CN2接口的通用数字量输出端口EXO0-EXO15的对应关系为:
其中输出1为高电平,0为低电平,输入1为高电平,0为低电平,通过对于的状态显示口可以观察到输入输出高低电平的显示。输入输出高低电平的定义见图1。
2 对输入输出口编程
2.1 对运动控制器进行打开和复位设置
2.2 输入输出口的编程
根据数控机床编程的要求,定义对于的输入输出后,完成各自地址的分配工作,进行程序的设计和开发,部分参考程序如下:
根据数控机床的功能以此类推,可以根据实际情况将输入和输出一一对应起来,完成数控机床输入输出的各个功能。数控机床除了输入和输出的一一对应指示外,还有可能是一个输入,对应几个输出,比如在伺服报警、变频器报警等方面,这是可以模仿一个输入,几个输出指示,如下:
第5个开关按下,既ex_inp&0x20,输入信号转化二进制为100000,表现在硬件上是第五个开关按下,这时输出ExOpt(0XA),既转化为二进制1010,表现在硬件上是第1,第3个指示灯亮。
完成程序如下:
2.3 程序的调试
通过窗口完成程序的测试功能,程序测试窗口见图3:
3 结束语
利用固高科技公司的GT系列运动控制器,采用高级语言VC对数控机床的输入输出口进行控制,完成了数控机床原有的功能,并且程序简单,对于数控机床输入输出的含义、故障的排查等方面起到一定的便捷作用,同时利用VC语言可以对数控机床在输入输出通道的开发方面有一定的借鉴作用。
参考文献
[1]固高公司.GT2-4002-SV四轴运动控制器用户手册,2008.
[2]陈婵娟.数控机床设计[M].化学工业出版社,2008.
[3]深圳固高科技.GT系列运动控制器编程手册[Z].2003.
[4]赵春红,秦现生,唐虹.基于PC的开放式数控系统研究[J].机械科学与技术,2005.
【I/O接口控制系统】相关文章:
方家山全范围模拟机I/O接口系统研究11-01
实时控制系统接口设计06-24
信息系统接口06-08
医保接口系统08-24
医院信息系统接口09-06
医院信息系统接口08-12
基于机电一体化系统接口技术的研究09-11
发电厂SlS系统接口机运用论文12-07
管理接口05-17