模块接口(精选九篇)
模块接口 篇1
关键词:1394总线,飞机管理系统,AS5643协议,接口模块
0 引言
随着航空电子系统综合化程度越来越高,1394总线系统中的设备复杂程度提高,为实现1394总线系统接口的标准化要求,设计一种飞管1394总线接口模块成为必然。模块采用统一设计,便于远程节点与总线网络的连接;为提高信号质量,采用辫接方式;并实现信息收/发和相关总线信息的监控功能。
飞管1394总线接口模块安装在飞机管理系统总线上远程节点的成品单元内,提供了远程节点与飞机管理系统总线通信的能力。该接口模块可提供满足飞机管理系统总线要求相关的物理层和链路层硬件需求,采用辫接方式实现1394总线接口与飞机管理系统的连接,完成飞机管理系统总线与LRU主机控制器之间的数据通信。
1 接口模块设计
飞管1394总线接口模块设计遵循1394总线通信系统的五层协议,如图1所示。其中,物理层与数据链路层由接口模块的硬件实现;1394协议通过FPGA逻辑和驱动软件实现;应用软件和驱动软件驻留在上位机中,应用软件通过调用驱动软件实现主机对模块基本资源的访问、数据通信、模块状态控制、状态信息读取等功能[1]。
1.1 硬件架构
飞管1394总线接口模块实现1394总线接口、协议解析/处理及数据收发等功能,同时对外提供PCI或异步总线接口,实现与主机之间的数据交互,其硬件功能框图如图2所示。
飞管1394总线接口模块由FPGA芯片、链路层电路、物理层电路、1394接口电路、主机接口电路、复位电路、时钟电路、电源电路以及其他辅助电路等部分组成,各功能模块描述分别如下:
(1)FPGA电路:采用Actel公司大规模器件A3PE3000,主要实现接口控制、SAE AS5643协议处理和数据传输等功能[2];
(2)链路层:支持1394a协议,实现链路层配置、总线组包和解包功能;
(3)物理层:支持1394b协议,实现总线仲裁以及收发数据编解码功能;
(4)耦合变压器:变压器作为物理层芯片和总线传输介质之间的耦合器件,起到了对接收和发送终端的隔离保护作用,防止总线上的干扰或脉冲对核心器件的损害,增强了接口模块的可靠性和防护能力[3];
(5)测温电路:实现对模块的温度采集和监控,对模块进行健康管理;
(6)复位电路:实现模块的上电复位功能,确保上电后该模块的电路单元工作在稳定状态下,上电复位采用RC上电防抖动电路来实现,提供给FPGA和PHY芯片作为复位输入;
(7)时钟电路:为FPGA、链路层和物理层芯片提供工作时钟;
(8)电源电路:支持DC-DC转换,为接口模块提供工作电源。
飞管1394总线接口模块实现单节点RN功能,在接口模块硬件设计基础上,兼容PCI和异步总线两种主机接口。其中PCI接口采用标准的PCI信号,主机通过接口模块上的TOLC连接器访问硬件资源并进行数据交互,完成FPGA与主机的通信;异步总线接口支持两种处理器:TMS320C6000系列和TMS320F281x系列,对应的外总线接口分别为EMIF接口和XINTF接口。
1.2 逻辑设计
飞管1394总线接口模块的功能主要由FPGA实现,FPGA系统架构如图3所示。主要功能模块包括:主机接口单元、接收和发送数据存储区、接收和发送消息配置DPRAM、配置表加载单元、寄存器主控模块、DM控制模块、DM接口和MC接口模块、I2C接口模块。
其中寄存器主控模块主要实现寄存器的访问;配置表加载模块将内部Flash中存储的特定格式配置表数据加载到寄存器和消息配置区中,并支持配置表头、配置表数据CRC校验及配置表加载重试功能。DM控制模块主要完成数据发送和接收功能;DM接口模块完成写发送数据、读接收数据、VPC校验(接收消息)、处理CRC错误数据包等功能。MC接口模块主要完成对链路层芯片寄存器的读写访问、获取端口状态信息以及对链路层芯片进行初始化配置等功能;I2C接口模块完成对I2C芯片寄存器的访问功能。
1.3 软件设计
飞管1394总线接口模块驱动软件作为应用软件和系统硬件资源的中间层,由主机应用软件调用,实现接口模块初始化、通信及获取节点状态等功能。
驱动软件包括4个功能模块:系统控制接口、系统配置接口、消息控制接口、通用控制接口,具体驱动功能框图如图4所示。
系统控制接口主要实现初始化、获取逻辑版本、获取配置表版本及软件版本功能,提供获取模块状态信息的软件接口。
系统配置接口主要实现获取总线接口模块芯片ID、总线周期状态及BIT结果等功能,并提供对应功能软件接口。
消息控制接口主要实现收发异步流包、收发时间应答消息、接收STOF包及获取消息计数的功能,提供应用软件数据通信接口。
通用控制接口主要包含DPRAM访问接口、AS5643访问接口、1394链路层访问接口和配置区访问接口,实现驱动软件访问硬件资源的功能。
2 技术优势
与同类总线接口模块相比,飞管1394总线接口模块主要技术优势如下:
(1)创新性地将1394总线信号通过辫接电缆方式引出,降低了信号衰减,提高了信号传输质量;
(2)兼容PCI和异步总线两种接口,满足不同成品多种主机接口的需求,解决产品统型问题;
(3)实现自适应多余度总线配置功能,提出了一种支持四余度总线配置表结构及加载方案,满足某机载产品多位置自适应的应用要求;
(4)1394总线信号采用变压器耦合方式引出,提供3个Beta模式的端口,端口传输速率均可配置;
(5)创新性地提出S100B、S200B速率下的信号质量性能指标,完成1394接口物理层信号完整性分析、设计及验证,有效地提高了总线信号传输质量,保障了数据传输可靠性[4];
(6)与国外同类产品相比功耗较低(不大于2 W)、体积更小、重量更轻(包含连接器和最大长度线缆在内约170 g)、可靠性高,应用范围更广,满足机载及地面环境应用需求。
3 测试及验证
针对1394总线协议对接口模块的功能、性能及电气特性要求,根据AS5643协议体系中的相关测试协议,分别对该模块的产品功能、电气特性、环境适应性等进行了全面测试[5]。如图5构建验证平台对其功能、性能进行验证。测试机箱与处理器机箱相连作为RN节点,便携式仿真器作为CC节点。通过串口线将便携式仿真器与PC连接、测试机箱与便携式仿真器间用1394线缆连接,实现CC节点与RN节点之间的信息交互。
按照飞管系统要求,分别对接口模块的功能、电气特性及环境适应性进行详细测试,测试项及测试结果如表1所示,所有测试项均测试通过,满足飞管系统对接口模块的测试要求[6]。
4 结论
通过对飞管1394总线的接口模块功能、性能,试验,系统联试,试飞验证等进行测试,结果表明,飞管1394总线接口模块实时性强,确定性强,性能稳定、可靠,并通过国军标软件工程化测试,满足机载安全关键子系统高速、可靠、接口统一的要求,为航天、船舶等领域1394总线产品开发提供设计参考和实践经验。
参考文献
[1]赵彬,田泽,杨峰,等.基于AS5643协议的接口模块设计与实现[J].计算机技术与发展,2013,23(8):100-102.
[2]SAE AS5643/2 IEEE-1394b interface requirements for and aerospace vehicle applications[S].2006.
[3]SAEAS5643/1 S400 copper mediainterface characteristics over extended distances[S].2004.
[4]Sai Haowei.Analysis of a SAE AS5643 Mil-1394b based high-speed avionics network architecture for space and defense applications[C].Proc.of IEEE Aerospace Conference[s.l.]:[s.n.],2007.
[5]SAE AS5706 test plan/procedure for AS5643/1 S400 copper media interface characteristics over extended distances[S].2007.
模块接口 篇2
就我国目前的发展水平以及近几年来,我们国家的城市交通体系来看,我们国家已经在城市交通工程方面取得了一定程度的突破和成效;然而即便是这样,由于在各阶段建设过程当中所出现的多种多样的问题,使得我们国家的交通基本体系仍然相较于国外而言有一些不足之处,道路交通的工程发展速度还比较落后,汽车和非机动车在一条道路上混合出现的情况经常频繁的出现;面对这样的严重事态和道路工程的现今建设局势,我们国家急需相关人员提出高级快速、有效的解决措施;在保证整体的交通道路建设安全的同时还需要整体的建设发展更加快速、质量更加优秀;为了能够帮助祖国实现交通建设的伟大发展规划和目标,就需要我们的建设人员对接口管理工作进行十分深入的专研和开发。
一、目前我国各大城市的交通道路主要体现出来的特征
城市的道路交通建设是属于国家发展必须配备的一种至关重要的系统,这种系统化的工程一般有着很明显的特征。
(一)交通道路建设规模的正规性:
就交通道路而言,其建设与规划,往往会直接关系到人民群众的日常生活和城市整体的发展建设当中去,因此交通道路的整体规模也就必须和老百姓日常对于交通和道路的实际需求相匹配,规模既不能太大,同时也不能太小,过小的`交通道路会使城市的交通堵塞,不利于发展,而过大的交通道路又会造成国家经济和资源的大量铺张浪费。
(二)道路交通工程具备系统体制性特征:
从道路交通建设工程的整体设计来看,整个国家的城市交通道路都具备着十分庞大的系统性,它能连接城市与城市、城市与农村之间的交通往来,同时能够促进整体社会体制的运行和调动,具有十分明显的系统特征,而这种特征也正是我们在道路交通工程当中设立接口的根本因素。
(三)道路交通建工程存在一定的配套性:
道路交通的建设大都具备一定的配套性,这种特性所针对的往往并非道路交通系统自己,同时还囊括了一些沿线的交通设计规范。这种特征正是接口管理的关键影响因素;和一般的交通道路建设相比较,城市当中的交通建设往往都会有一些明显的特立独行的特征,这些特征也就是我们经常提及的社会性。这些特征具体包括五点:(1)道路交通建设工程自身能创造极大的社会利益和经济效益。
(2)由强制性机构进行有计划的监管和控制。
(3)与道路交通工程有关的创建着、获得益处者以及工程实际投资方分开,互不干预。
(4)道路交通建设的稳定性会受多方因素干扰,往往干扰方会具有巨大的影响力。
(5)建设的交通道路工程有复杂且庞大的数量,管理起来十分困难。
二、城市交通道路工程接口管理方法
(一)城市交通道路接口的具体概念:
所谓的接口一词,本来是电子计算机领域的专业用语,往往指的是以数据互相流通或是软硬件之间相互连接的端口,这种接口的概念随着城市建设被逐渐的应用到了城市的交通道路建设当中,通常所指的是交通道路当中的各个环节和系统之间的连接口和通路,这样的连接是实际的、物理意义上的,它同时也可以被定义为是一种信息方面上的连接端口。
(二)接口的管理方式:
交通道路建设过程当中,每一个相互连接的接口都是极其复杂多变的,所以对于不同接口的管理方式也都是不一样的,我们目前经常被广泛应用的接口管理方式有系统化管理、利弊管理体系、协作管理体系等等,这些手段在实际的接口处理和管理应用当中应该互相结合使用。
(三)城市当中的交通道路建设的接口具体特征:
正像是文章之前所表达的那样,城市当中的交通道路建设,具有十分困难和复杂的问题,这当中涉及到了很多单位、机构、组织的管理和工作,同时也有可能在一定程度上阻碍了某些机构的利益,所以我们在创建道路交通接口的工程之前,应该多进行考察与细致的勘探,务必保证整个建设工程实施能够顺利有效。
三、接口管理模块的优化举措
基于音频接口的数据传输模块设计 篇3
1 数据传输模块的结构设计
接口是智能终端系统与外界的连接电路,具有如下功能:(1)寻址能力。对送来的片选信号进行识别。(2)输入/输出功能。根据读/写信号决定当前进行的是输入操作还是输出操作。(3)数据转换功能。并行数据与串行数据的转换或两种不同数据格式之间的转换。(4)信号识别。识别就绪信号、忙信号等。(5)中断管理。发出中断请求信号、接收中断响应信号、发送中断类型码的功能。(6)复位。接收复位信号,从而使接口本身以及所连的外设进行重新启动。(7)可编程。用软件来决定其工作方式,用软件来设置有关的控制信号。(8)检测信息。一些接口还可根据具体情况设置其检测信息。
基于音频输入输出接口的数据传输方法可以弥补数据接口不一致的缺点,并扩充音频接口的应用。在实现传输音频模拟信号的系统上交换数字信号,设计难点是如何通过模拟信号进行数据通信,需要专门设计一种严格的通信机制或通信协议,保证基于手机音频输入输出接口的数据传输可靠。
如果把终端作为主导装置,由其产生位时钟信号、命令选择信号和数据,但在综合系统中,识别发送端比较困难[2]。设计采用差分曼彻斯特编码的数据传输协议,开发了可下载手机软件,并为外设存储设备设计了实现编解码及传输协议的嵌入式系统。模块结构示意如图1所示。
外部装置通过音频输入输出接口与智能终端进行数据通信,数据信号在主控模块中进行编解码处理,再通过控制装置读取、写入外部介质,并存储数据。数据传输的具体方式中,外设装置通过插入手机外置话筒音频输入接口或音频线路输入接口的连接线发送数据信号给手机,外设装置通过插入手机的外置耳机音频接口或音频线路输出接口的连接插线,接收手机发送出的数据信号。
2 数据传输模块的硬件设计
外部数据传输装置由滤波电路、主控模块、编解码电路、 读写装置组成。滤波电路分离固定频率交流信 号与数据信号;读写装置包含一个标准曼彻斯特编解码电路,读写解码电路采用BS730Q读写专用解码芯片,采用单轨道读写;实现的主控模块电路选用低功耗的ARM微控制器,内部有可编程工作寄存器,可以方便地与主机通信,但要有自己的数据协议[3],主控模块对双向信号进行编解码处理的过程是:(1)主控电路模块将读写装置传入的曼彻斯特编码数据信息解码成国标数据,再编码为差分曼彻斯特编码数据信号,送到连接手机话筒接口或线路音频输入接口的传输线上。(2)主控电路模块从连接手机耳机接口或线路音频输出接口的传输线上接收差分曼彻斯特编码数据信号,解码成国标数据,再编码为标准曼彻斯特编码数据信息,送入读写装置。电路设计如图2所示。
3 数据传输模块的软件设计
3.1 设计线程
通信双方的手机终端采用软件方法实现,结构如图3所示。通过程序对从音频输入接口采集到的音频信号进行差分曼彻斯特解码,并送到音频输出接口,程序由3个线程构成,当数据传输服务程序在手机上启动后形成3个线程:(1)创建一个音频交流发送线程,负责设置输出最大音量,生成固定频率音频交流信号并发送到音频输出线路上。(2)创建一个监听音频输入接口数据的线程,负责对从音频输入接口采集到的音频信号,进行差分曼彻斯特解码,解码输出数据存放在接收数据缓存,通过调用外部业务程序注册的回调函数,通知外部业务程序注册取得传入的数据。(3)主线程循环等待发送数据缓存中的数据存入事件,当外部业务程序在数据要发送时,将要发送的数据放入共享的发送数据缓存时[4],数据存入事件发生,所述的主线程取到要发送的数据,进行差分曼彻斯特编码,再用操作系统的音频控制接口函数发送到音频输出接口。
3.2 数据格式
音频输入输出线路上传输的数据信号采用差分曼彻斯特编码,不进行载波调制与解调,直接在音频线路上传输数据编码信号。具体协议机制如下:
(1)基于音频输入输出接口的数据传输方法是一种串行通讯方法,参考标准同步串行通讯协议,采用差分曼彻斯特编码,其特点为每发送一位至少有一个跳变,以适应在只能传输交流的音频输入输出线路上传输数据。通信信号中使用中间时刻的跳变来表示发送的0或1,第一个跳变的如果是正跳变表示1,如果是负跳变表示0,之后的跳变与前一个跳变进行差分,由相比较的结果决定是1或0,如果当前位跳变方向与前一位的跳变方向相同,则表示为0,否则表示为1。采用差分曼彻斯特编码,通信双方的同步允许差半位时间,同步差半位时间内接收的数据也不受影响。
(2)数据传输是双工方式,从手机输出数据的传输使用音频输出线路,进入手机的数据传输使用音频输入线路,发送数据前让总线空闲准备,提示接收方做好接收准备。总线空闲准备是用连续发送8位以上的0来表示。
(3)串行通讯采用帧起始标志进行同步,帧起始可以从任意一位开始,串行通讯的帧起始标志采用与标准串口通信同步中一样的标识,即连续发送6个1,即发送字符0x7e表示发送了帧起始标志。
(4)串行通讯采用帧结束标志表示本次数据发送结束,进入总线空闲状态。连续发送7个1,即发送字符0x7f表示发送了帧结束。串行通讯中,线路上传输的数据的单位为位,发送Byte时首先发送最高位,最后发送最低位,发送数据时字节间没有间隔。发送数据时,数据中很可能有连续的6个1,这与帧起始标志和帧结束标志相同,会造成通讯歧义。为消除歧义,规定当发送数据时,连续发送5个1后,必须发送一位无效的0,再接着发送其他数据。而接收到连续的5个1后,需要删除接着收到的0。这连续的5个1并非一定在1个Byte中,例如,两个Byte 0x0f和0xc0,每个Byte都没有连续的5个1,但先发送0x0f后发送0xc0时,就有连续的5个1了,需要动态插入、删除一位0。
(5)所述基于音频输入输出接口的串行通讯中,编码信息流一般以块形式表示,一个信息流块包含:块头和块负载信息[5],线路上传输的数据帧格式如图4所示。
4 结束语
根据嵌入式开发的一般原理,设计了数据传输模块的结构,进而完成数据传输模块的硬件设计,软件设计中完成了主控系统、各相关电路的控制程序,采用差分曼彻斯特码传输数据,能满足串行通信的同步要求,保障了数据传输的稳定性。
摘要:由于移动终端数据接口各不相同,使数据交换不便利。为了尝试拓展音频接口的应用,文中设计了一种通信协议以保证模拟信号的可靠传输。开发了可下载手机软件,通过程序对从音频输入接口采集到的音频信号进行差分曼彻斯特解码,并送到音频输出接口。程序由3个线程构成,当数据传输服务程序在手机上启动后形成,应用嵌入式系统和控制软件实现数字数据的编解码,数据信号在主控模块中进行编解码处理,再通过控制装置读取、写入外部介质,并存储数据,设计中对线程设计、传输算法和协议格式进行了研究。实验证明,设计能满足串行通信的同步要求,保障了数据传输的稳定性。
关键词:音频接口,数据传输,模块设计,数据格式
参考文献
[1]廖永红,孟治国.双网多媒体可视电话系统安全架构设计[J].电信技术,2009,42(10):66-68.
[2]周虹.基于I2S音频接口模块的FPGA设计与应用[J].现代电子技术,2007,31(22):127-129.
[3]官宗琪,肖质红.基于FX919B的高速数据传输模块的实现[J].电子器件,2007(6):1113-1117.
[4]孟治国.基于NGN远程监控系统的指令设计[J].电视技术,2012,36(5):115-117.
模块接口 篇4
摘要:详述PIC16F877单片机的MG-12232图形点阵式液晶显示器的硬件接口电路特点和接口软件编程方法。
关键词:PIC16F877 LCD 接口
引言
由于液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄等其他显示器无法比拟的优点,它广泛用于各种智能型仪器和低功耗电子产品中。点阵式(或图形式)LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能,用途十分广泛。本文在简介液晶显示器MG-12232的驱动器SED1520F0A的结构、功能的`基础上,介绍了PIC16F877单片机的LCD硬件接口电路和软件编程特点。
一、PIC16F877与MG-12232的硬件接口电路
1.SED1520F0A的接口信号
SED1520F0A属行列驱动及控制合一的小规模液晶显示驱动芯片,电路简单,经济实用,内含振荡器,只须外接振荡电阻即可工作。模块工作的稳定性好。SED1520F0A与微处理器的接口信号如下。
DB0~DB7:数据总线。
A0:数据/指令选择信号。A0=1表示出现在数据总线上的是数据;A0=0,表示出现在数据总线上的是指令或读出的状态。
RES:接口时序类型选择。RES=1为M6800时序,其操作信号是E和R/W;RES=0为Intel8080时序,操作信号是RD和WR。
RD(E):在Intel 8080时序时为读,低电平有效;在M6800时序时为使能信号,是个正脉冲,在下降沿处为写操作,在高电平时为读操作。
WR(R/W):在Intel 8080时序时为写,低电平有效;在M6800时序时为读、写选择信号,R/W=1为读,R/W=0为写。
SED1520F0A与两种总线的接口信号和时序的详细资料见液晶显示模块使用手册。
2.MG-12232模块的引脚说明
MG-12232模块共有18个引脚,各引脚定义如表1所列。
表1 MG-12232模块的引脚定义
序 号符 号状 态功 能 说 明1Vcc-逻辑电源正2GND-
模块接口 篇5
System Verilog (官方IEEE Std 1800-2005标准) 是在对Verilog 2005标准加以扩展后形成的一种语言, 为规模日益扩大、功能日益复杂的设计提供了一种新的语言结构, 运用这种新的语言结构可以很方便地进行建模和行为验证, 而将复杂的设计简单化, 其中很重要也是很常用的一种方法就是模块化编程, 即将一个复杂系统分成若干简单的模块分别编程, 再集成在一起实现整个系统, 从而降低了开发难度, 并提高了分工合作效率。为了跟上迅速变化的形势, 电子产品的设计周期必须尽量缩短[1], 因此模块化编程是非常重要且有实际意义的。
1 System Verilog接口简介
System Verilog为编程者提供了一种“接口”结构, 通过使用这种结构可以大大简化大型复杂设计的建模和验证, 也可以为系统中每一个终端程序提供统一的接入方式, 从而不需要对每一个终端程序进行接口的时序设计, 节省了重复声明端口的劳动时间, 避免了当设计规范变动时对所有模块的修改, 从而有效预防了低级错误的产生[2]。
1.1 优点
接口允许许多信号合成一组由一个端口表示, 只需要在一个文件中对组成接口的信号进行声明。在使用时, 每个模块只需要声明一个接口类型的端口, 而不是多个独立的信号端口。此外, 在接口中甚至可以直接定义通信协议。
1.2 缺点
接口在使用时必须实例化, 而实例化的方式只能通过语言描述来进行。这就意味着, 当接口被应用在顶层设计文件中时, 顶层设计文件必须为System Verilog类型的文件, 不能使用更加直观的图形化文件。
2 System Verilog接口的使用方法
2.1 定义一个接口
定义接口需要使用到关键字interface和endinterface, 如下所例:
包含在这一对关键字中间的就是接口的内容。上面这个例子给出了一个8位AVR单片机的外部RAM总线接口定义。这个接口包括5个独立的端口:mcu_rd_n和mcu_wr_n是读写控制线, 后缀_n代表低电平有效;mcu_addr是16位的地址线;data_from_mcu和data_to_mcu是8位的数据线, 但方向不同。
2.2 接口的modport
用接口连接模块更实用也更直接。但是, 对于每个连接到接口上的模块, 其对接口的使用方式可能有所不同, 比如接口内信号的方向, 这就需要用到接口的modport功能。
在使用System Verilog定义接口时, 可以使用关键字modport定义接口的不同接入方式。一个接口中可以有任意数量的modport定义。参考第2.1节的例子, mcu_bus对于CPU和其他外设来说, 有些信号的方向是不一样的, 这就需要在接口定义时分情况做特殊定义。
在第2.1节的例子中, 使用modport定义了2种特殊的接口使用方式Cpu Interface和Normal。当CPU使用接口mcu_bus时, 其地址线的方向为输出, 而当外设使用接口mcu_bus时, 其地址线的方向为输入, 而且数据线的方向与CPU的数据线接口方向正好相反。读写控制线是整个接口的输入信号, 所以方向始终保持不变。
2.3 使用定义好的接口
当定义过modport后, 再使用定义好的接口时, 应该尽量指定使用哪一种modport, 否则所有线网信号将被默认为双向信号, 可能导致错误的产生。参考第2.1节的例子, modport的使用方法如下:
3 一种外部设备接口设计的方法
3.1 基本思路
考虑一片集成了SPI串口功能的单片机, 在使用SPI功能前一般是通过配置控制寄存器来进行功能的初始化, 在使用中也是通过访问状态寄存器和数据寄存器来进行数据收发的操作。对于单片机的核心部分来说, SPI接口就相当于一个外部设备 (以下简称“外设”) , 它为单片机提供了一个只对它自己有效的寄存器组, 通过操作寄存器组就可以使用这个功能。基本思路也是这样, 将与某个外设有关的时序操作全部放在FPGA中完成, 并且提供一组寄存器供单片机访问, 从而达到控制外设的功能。这就将单片机从时序模拟中解放出来, 节省了大量的CPU占用时间, 使得CPU可以将更多的时间用在计算、调度和数据处理上。
3.2 参数化的配置信息
一个外设的接口做好之后, 如果想很方便地应用在各种场合, 将一些需要根据要求进行配置, 但使用的时候把不会变化的数据设置成参数是一个很好的方法。使用参数可以提高程序的可读性, 也利于修改[3]。在许多硬件描述语言中都提供了设置参数的功能。
在不同的系统中, 一般很难保证每次都能分配相同的地址给同一个外设。但是如果将地址参数化, 那么每次实例化的时候只需要修改参数即可, 无需在程序内部进行修改。同样, 串口的波特率等也可以参数化[4]。
3.3 控制/状态寄存器
一般外设都会提供一个数据交换方式, 有的是同步串口, 有的是并行接口, 即便不是已有的标准接口, 也一定会提供一个通信协议或时序图。FPGA的工作就是模拟这个通信协议或时序, 而控制/状态寄存器就是用来连通CPU和通信协议的工具。控制/状态寄存器的位宽一般与单片机的数据线位宽相同, 通过修改控制寄存器的一些数据位就可以控制接口模块调用通信协议与外设通信, 达到控制的功能;通过读取状态寄存器的一些数据位可以获得外设的状态信息, 从而决定下一步的操作。可以用以下方式建立一个控制/状态寄存器, 其中用到了前面介绍过的接口:
这样就通过接口将程序中的寄存器和地址参数与MCU建立了联系。MCU通过访问外部地址的方式就可以访问寄存器, 从而对外设进行监控。
3.4 可选的中断功能
中断功能不是必需的, 如果外设反应迅速, 在MCU下达命令后很快就能通过访问状态寄存器来决定何时进行下一次访问, 这时就不需要中断功能。但有的时候外设需要一些时间处理命令, 如果MCU以轮询的方式访问状态寄存器, 将会浪费大量的时间, 这时候就需要用到中断。状态寄存器中应该包含一个中断标志位, 在产生中断时, 这个标志位也应该有所变化, 并且应该允许MCU清除这个标志位。外设的中断可以占用MCU的一个外部中断资源。
中断功能的一个典型应用是实现按键检测功能。当按键被按下时, 触发一个外部中断, MCU读取按键接口的状态寄存器, 根据内容判断是哪一个按键被按下, 然后进行相应的操作。
4 SHT7x系列芯片的控制接口设计
SHT7x系列芯片是瑞士盛世瑞恩公司出品的一款温湿度测量芯片, 具有高精度、宽范围、体积小以及通信协议简单等优点。下面提供一种SHT7x芯片在FPGA中的接口模块设计方法。
4.1 原理框图
FPGA程序设计需要划分成一些独立的模块[5,6], 如图1所示。SHT75芯片是SHT7x系列中的一种, MCU接口的双向箭头是第2.1节中的程序实例, SHT7x接口的方框代表在FPGA中运行的与SHT75芯片相连接的程序模块, 包含了时序操作和数据传输等功能。SHT7x系列芯片提供的数据接口为同步串口, 其时钟信号由FPGA中的接口模块通过参数配置的方式产生。
4.2 工作原理
工程上使用的CPU为ATmega128单片机, 通过外部存储器接口与FPGA相连。单片机的外部存储器接口具有16位地址线和8位数据线, 外部地址空间可扩展到64 Kbit[7]。
FPGA内部与MCU对接的接口使用第2.3节介绍的带有modport的Normal方式接口定义。SHT7x接口中, 控制寄存器和状态寄存器的位宽都是8位, 与MCU的数据线位宽相同;数据寄存器的位宽为16位, 因为SHT7x芯片测量得到的原始数据最短为12 bit, 最长为14 bit[8]。
3个寄存器是按照第3.3节介绍的方法建立的, 用来建立SHT7x模块与MCU之间的联系。其中控制寄存器ctrl_reg用来控制SHT7x模块的发送、接收和设置等功能;状态寄存器stat_reg用来存放具体的SHT7x系列芯片的工作状态, 以备MCU进行查询;数据寄存器data_reg用来存放MCU与SHT接口模块进行交换的数据。下面对3个寄存器的具体操作方法进行说明。
对控制寄存器ctrl_reg[0]写1使能数据发送功能, 它将以系统时钟的1/32速率将data_reg[7:0]中的数据发送给SHT7x, 高位在前。发送完毕后这一位将自动清零。
对控制寄存器ctrl_reg[1]写1使能数据接收功能, 它将以系统时钟的1/32速率收取从SHT7x传回的数据并存放在data_reg中, 高位在前, 注意并不是从第15位开始。收取完毕后这一位将自动清零。
对控制寄存器ctrl_reg[2]写1可以修改测量分辨率, 当前值为1时, data_reg中的数据就是测量分辨率。可以取0x0C和0x0E 2个值。设置完毕后这一位将自动清零。
检验stat_reg[0]可以判断一次测量是否完成。当stat_reg[0]=1时, 表示测量完成, 可以开始读数。参数地址EXT_ADDR_SHT_DATA_L和EXT_ADDR_SHT_DATA_H分别对应data_reg的低8位和高8位。
原程序太长, 此处不再列出, 只给出实例化的方式, 如下所示:
上述4个参数分别对应控制寄存器地址、状态寄存器地址、数据寄存器低地址和数据寄存器高地址。信号列表中的mbus是mcu_bus接口类型的实例化。
4.3 MCU程序介绍
FPGA中的实例需要配合MCU程序才能工作。MCU中的C语言程序流程图如图2所示。
一个健壮的程序应该对可能出现的异常情况进行防御性编程[9]。因此程序中设置了一个等待时间, 当等待返回数据的时间超过2 s时, 自动结束本次测量, 并复位SHT7x接口模块。设置等待时间可以预防由于硬件损坏而可能引发的死循环。等待时间可以进行修改, 但需要注意的是, 这个时间必须比CPU的看门狗复位定时要短。
在C程序中, 3个外部寄存器的地址用预定义的方式进行声明。使用预定义可以改进程序设计环境, 提高编程效率[10]。
4.4 应用
该实例在ATmega128+EP1C12+SHT75+Quartus II8.0的平台下通过调试, 温湿度测量准确迅速。在同一个工程中的其他接口模块, 例如本控与面板指示模块以及继电器组控制模块等也都是按照本文介绍的方法进行编写, 应用效果良好。
5 结束语
介绍了一种基于System Verilog的外设接口设计方法, 并给出了一个设计实例。该实例已在实际工程中得到应用, 并取得很好的效果。其可移植性和可配置性都大大优于以往基于MCU模拟时序的接口方式, 适合在编写外设接口模块时使用, 为程序和实例的模块化编程提供了一种新思路。
参考文献
[1]ZWOLINSKI M.System Verilog数字系统设计[M].夏宇闻, 译.北京:电子工业出版社, 2011:1-2.
[2]SUTHERLAND S, DAVIDMANN S, FLAKE P.SystemVerilog硬件设计及建模[M].于敦山, 何进, 韩临, 等译.北京:科学出版社, 2007:209-240.
[3]王伟编.Verilog HDL程序设计与应用[M].北京:人民邮电出版社, 2005:87-89.
[4]夏宇闻.从算法设计到硬件逻辑的实现:复杂数字逻辑系统的Verilog HDL设计技术和方法[M].北京:高等教育出版社, 2001:108-109.
[5]SMITH DR, FRANZON P D.面向数字系统综合的Verilog编码风格[M].汤华莲, 田泽, 译.西安:西安电子科技大学出版社, 2007:119.
[6]COFFMAN K.基于Verilog语言的使用FPGA设计[M].沈树群, 张艳, 吴京松, 译.北京:科学出版社, 2004:242.
[7]ATMEL.8-bit AVR Microcontroller with 128K Bytes In-System Programmable Flash[R].ATMEL, 2004:24-25.
[8]Sensirion AG.SHT1x/SHT7x Relative Humidity&Temperature Sensor System[R].Sensirion AG, 2003:1-9.
[9]KOENIG A.C陷阱与缺陷[M].高巍, 译.北京:人民邮电出版社, 2008:124-126.
模块接口 篇6
关键词:1394B,匿名签署协议,通信
1 概述
1394B总线网络与传统1553B总线系统相比具有高带宽、低延迟、高可靠性等方面优势,已经广泛应用于新一代战机的航电系统、飞行器管理系统和机电公共设备管理系统。
2 1394B总线概述
IEEE 1394-1995 最初由Apple公司提出,由IEEE正式制定,支持100/200/400Mbps通信速率,其目的是为了简化计算机的外部连线,并且为实时数据传输提供一个高速接口[1]。2000年对IEEE 1394-1995标准进行补充,增强了互操作性,解决了一些二义性问题,形成了IEEE 1394a-2000。2002 年起,对IEEE 1394-1995 规范进行了不断地完善, 确定了IEEE-1349b-2002,其目标是用于传输多媒体数据,其带宽,传输速度,距离等都有了大幅度提高[2]。
1394B总线具有如下特点:
采用异步流包:异步流包是异步时间间隔内发送的等时包。异步流被用于网络上大多数的通信。
使用STOF同步:STOF包由每条总线上的CC按照固定的帧速率发送STOF包通知总线上所有的节点新的一帧开始。通过传输一个固定速率的STOF包实现网络的同步。
纵向奇偶校验(VPC):纵向奇偶校验(VPC)是作为1394物理层产生的CRC校验的一个附加校验。VPC提供物理层和软件层在进行消息传输过程中的附加数据完整性的保障。
通道号静态分配:因为异步流包在格式上与等时包一致,所以也由通道号来确定目标节点,总线上每个节点的通道号是由应用预先分配的,根据体系结构而定。
带宽预分配:每一帧开始后(STOF包),总线上每个节点的发送和接收的时间由应用根据体系结构预先分配。
使用匿名签署协议(ASM):匿名签署协议是为了满足嵌入式实时系统需求的上测试协议,ASM协议建立于下层协议,不需要1394消息头传输ASM特殊消息[3]。
3 模块设计
智能1394B接口采用MPC8270 实现,对外提供三个1394B端口。模块主要由时钟电路,电源电路,复位电路,1394接口电路以及处理器电路组成。系统结构如图1所示。
3.1 处理器电路
处理器电路主要由处理器,SDRAM,CPLD和FLASH组成。
采用MPC8270 处理器,主频266MHz,外频66MHz,提供PCI总线仲裁以及标准PCI总线接口,运行Vx Works5.5系统,完成应用数据处理以及通信传输控制和管理工作,并提供串口、以太网等调试接口。
SDRAM:采用四片容量为512MB的SDRAM组成2GB容量的内存,工作频率66MHz,64bit宽度,作为程序和数据的存储空间。
CPLD:CPLD固化逻辑用于实现CPU初始化配置,复位管理,片选分配等功能。
FLASH:容量64MB,访问速度120ns,宽度32bit,用于固化Boot、OS以及应用程序。
3.2 1394B接口
1394B接口属于该模块对外的应用通信数据接口,选用1394 链路层和物理层实现芯片以及1394 变压器,实现模块1394B接口的对外耦合。1394B电路连接示意见图2。1394链路层芯片带有独立的PCI控制器,内部带有多个DMA发送通道和接收通道。可直接挂接在主处理器的PCI接口上,通过PCI总线进行对链路层的控制。1394 物理层芯片是1394B物理层芯片中的一款高性能物理层接口芯片,保持与其他物理层芯片设计的兼容性。该芯片满足OHCI、IEEE 1394-1995、IEEE1394a-2000、IEEE 1394b-2002 等协议规范;全面支持IEEE1394b-2002 协议下S100,S100β,S200,S200β,S400 和S400β的传输速率;提供3个物理层端口。
4 模块工作流程
模块的工作流程如下:
a.CPLD逻辑输出配置字对处理器进行初始化配置,配置的主要内容有:将CPU配置32 位模式启动,内部寄存器基值为0x F0000000,启动地址为0x FFF00100,内核工作频率为200MHz,处理器工作在PCI Host模式,PCI接口工作频率为33MHz;
b.CPU从0x FFF00100(FLASH地址)获取第一条指令开始执行,通过获取的指令对CPU的中断,时钟,系统总线,SDRAM和FLASH进行初始化,并将后续的固化在FLASH中的代码从FLASH搬运到SDRAM中,搬运到SDRAM的起始地址为0x0000C000;
c. 完成代码搬运后,处理器开始对串口进行初始化,并在执行后续代码时通过串口输出相应的打印信息;
d.处理器执行上电BIT,以及后续的BOOT代码;
e.处理器运行操作系统;
f.处理器调用驱动程序对1394设备进行初始化,设备初始化工作包括调用设备句柄空间的初始化、设备资源的分配、信号量的初始化、中断的使能和设备工作模式的设置等过程;
g.初始化完成后,处理器可进行1394B通信。发送过程:主机应用调用异步流数据包发送函数后,由驱动检查相关参数的合法性,由主机通知链路层芯片该消息数据准备好,根据数据包发送条件判断出该数据包具备发送条件后,配置异步流发送上下文,启动DMA,链路层芯片从指定的数据包地址中将数据搬移到链路层芯片的FIFO缓冲中发送,完成异步流的发送。接收过程:设备在接收到消息之前,首先在设备的初始化时配置异步流的接收上下文,启动接收,当设备检测到数据包到达时,物理层芯片根据接收的上下文配置,将和配置的通道号匹配的异步流数据包上传链路层,链路层启动DMA将接收到的数据直接放在指定的主机缓冲区内,然后更新接收的上下文配置,同时更新主机的缓冲区地址。
工作流程图如图3所示。
5 测试验证
将智能1394B接口模块安装在测试工装中,经过高速1394线缆与1394B仿真分析仪连接,运行测试程序,1394B接口模块的三个端口都能和标准设备正确通信。
6 结论
本文介绍了1394B总线协议的特点,基于MPC8270实现了三端口1394B接口模块,并进行了测试验证,具有一定的应用价值。
参考文献
[1]李世平,戴凡,汪旭东.IEEE-1394系统原理与应用技术[M].2004:1-2.
[2]刘莎,阴亚芳.Vx Works下1394b总线系统驱动软件设计[J].测控技术,2013(5):96-99.
模块接口 篇7
PROFIBUS由3部分组成[2]:PROFIBUS-DP,PA和FMS,其中PFOFIBUS-DP是一种高速低成本通信连接,用于设备级控制系统和分散式I/O通信,它的实时性好,数据传输速率9.6kbit/s~12Mbit/s,响应时间为几百μs到几百ms,数据传输技术采用RS485,传输介质是可屏蔽双绞线或光纤。
通过PROFIBUS-DP现场总线可将控制延伸到生产现场,可进一步提高控制系统的实时性和可靠性,还可使系统的安装、调试和维护都很方便。这种被誉为工业控制器的局域网的新型控制模式正逐步广泛地应用在各个工业领域[1]。目前国内外的新型智能变频调速装置除了具有标准的RS-485接口,还至少配有一种高速的现场总线接口,可以与上级控制计算机或PLC进行通信,实现在线位置、速度等信号检测、采集与控制等,可以获得更多的诊断、维护和管理信息,而传输信息的线缆却大大减少了。
目前国内开发的一些PROFIBUS-DP从站接口大多不具有通用性[3],而且通信速率比较低,不适宜在运动控制器和变频调速装置中的应用和推广,为此本文描述专为变频智能调速装置研制的具有高速PROFIBUS-DP通信功能的通用接口模块,从而使智能变频调速装置快速接入西门子自动化工业网络中,实现与DP主站的高速数据通信。适应了工业控制系统向分散化网络化和智能化发展的方向,推广了 PROFIBUS-DP应用,具有较大的实际工程意义。
1 总体结构设计
笔者在原开发的全数字交流伺服系统上进行模块化扩展[4,5],可使其作为DP从站接入PROFIBUS-DP通信网络,实现高速数据通信。调速控制系统由永磁同步电动机和惯性轮同轴连接而成,电机为1.6kW的 M205B型永磁同步电动机,惯性轮是等效转动惯量为3.08×10-2kg·m2的钢质圆盘。控制电路总体硬件结构如图1所示,由DSP控制板,功率板,PROFIBUS接口模块3部分组成。功率板主回路为三菱公司的IPM智能功率模块PM15RSH120。DSP控制板以TMS320LF2407A微处理器为核心,还包括DSP外围电路,外部控制信号输入调理电路,测量信号调理电路,显示按键驱动电路。DSP与PROFIBUS智能接口板的CPU之间采用传输速度较高的并行总线进行通信,下面主要介绍采用SPC3的PROFIBUS-DP通信模块的软硬件设计和实现。
2 接口模块硬件设计
我们为电机驱动控制器所设计的PROFIBUS-DP 从站通信接口板(以下简称接口板) 由高速CPU 芯片、PROFIBUS 协议芯片SPC3及双口RAM接口等电路组成。 电路如图2所示。
2.1 核心微处理器
接口板微处理器选用Philips公司的P89C51RD2高性能单片机,在6 时钟周期时频率
可高达20MHz(相当于40MHz),内含并行可编程的非易失性64k flash EPROM,这样就无须外扩EPROM,简化了外围电路,提高了系统的抗干扰能力。通过同步串行接口线外接一片串行E2PROM ,用来保存用户所设置的参数、站地址、识别号、CFG报文、PRM报文、SSA报文、输入数据输出数据的长度等控制器的各种参数值,以避免掉电时数据丢失。电源监视芯片有硬件看门狗功能,主要完成上电复位,电源波动复位和程序出错复位。
微处理器的64k数据存储空间通过地址锁存器、PLD器件实现的译码器划分为4段:0000H-7FFFH(32k)用于可读写静态存储器SRAM,8000H-9FFFH(8k)用于 SPC3控制器(实际只用8000H-85FFH的1.5k),A000H-BFFFH(8k)用于双口可读写存储器DPRAM(实际只用A000H-A800H的2k),剩余16k预留给从站设置拨码开关和工作状态指示灯,以增强人机交互功能。这样各芯片的寄存器就映射到数据空间中,在微处理的控制下协同工作。
2.2PROFIBUS总线接口
主要包括PROFIBUS-DP协议处理芯片SPC3,用于PROFIBUS-DP从设备的智能通信,起到PROFIBUS-DP协议处理器的作用,可独立完成全部PROFIBUS-DP协议的通信功能,从而加速通信协议的执行,承担了部分微处理器负载,实现DP从站通信处理[3]。其内部集成有1.5k的RAM,整个空间被分为192个段,每段长8个字节,包括:方式寄存器、状态寄存器、中断寄存器及各种缓冲器指针和缓冲区等。
SPC3可以通过配置2个输入引脚XINT/MOT和MODE与各种类型的处理器匹配。XINT/MOT表示Intel和Motorola芯片类别。接口板CPU 芯片选用了与Intel 8051兼容的高性能单片机,因此设置SPC3工作在Intel异步工作模式下。
微处理器通过系统数据、地址总线与SPC3相连,由于异步模式下SPC3有地址锁存功能,因此,复用的低8位地址线与数据线跨过外部地址锁存器,直接与SPC3的DB7~DB0相连,在ALE信号的下降沿进行锁存。将SPC3的1.5k寄存器配置在指定地址空间,微处理器对指定寄存器的读写就可执行相应操作。SPC3的方式寄存器0设置PROFIBUS-DP的操作方式。方式寄存器1设置可动态改变的状态。在SPC3芯片内部,将微处理器的并行数据变换成串行数据流发到总线上,同时将从总线上收到的串行数据流变换成并行数据流,以中断形式通知MCU。SPC3可以产生的中断源包括New_SSA_Data, New_Prm_Data,Dx_out,New_cfg_Data ,New_Gc_Command等,有一个公共的中断输出,引到相应微处理器的中断输入,产生中断时微处理器可以通过读取中断寄存器来判断SPC3中断的具体原因。SPC3具有3个输入缓冲器,3个输出缓冲器,2个诊断缓冲器,2个辅助缓冲器,1个配置缓冲器,1个参数缓冲器和一个地址设置缓冲器。在SPC3工作前,过程特定的参数(如站首地址,标识号,各种控制位等)要输入到特定的寄存器单元之后SPC3才能正常工作。
总线驱动器以及电器隔离部分的作用,主要是为了减少外部PROFIBUS总线信号对系统内部电路的干扰,在总线驱动器和SPC3控制器之间加有高速光电隔离,它的最高速度可达12M,利用它可以在隔离的状态下保证系统高速可靠通信。与内部电路隔离的PROFIBUS驱动器的供电由高效率的DC/DC变换器完成。
2.3 双口RAM芯片
在接口板模块和变频调速控制器之间,采用一个2k字节的双口RAM,来实现两微处理器之间的高速重复不需握手的数据交换。双端口RAM具有两套独立的地址、数据及读写控制线,可同时分别与两个不同的CPU相连,在本模块中一套总线与接口板MCU相连(起始地址配置于0xA000),另一套总线通过标准并行接口与变频器DSP相连,作为一个2k RAM允许两微处理器独立地对不同存储区寻址,只有在两个端口对同一个存储单元同时进行访问时才需要进行必要的协调控制,大多数双口RAM都提供了中断、信号量、READY 信号等手段来避免双方同时访问同一存储单元,这样可使系统传输速度和效率提高50%。
采用这种芯片,使得电路设计简化,集成度高,数据交换更快速、可靠。需要指出的是这种采用标准并行接口的设计增加了PROFIBUS接口板的通用性,可以通过简单扩展,使其作为RAM嵌入到大多智能仪表设备中,从而具有PROFIBUS-DP通信的功能。这种模块化软硬件设计和扩展方式具有通用性,可以推广应用到其它总线,如Device net,Ethernet等,使已开发的智能控制设备无需硬件改动和软件编程,只更换接口模块就可接入其它总线。
3 通信接口软件设计
接口板软件的主要模块及其之间的调用关系如图3所示,左侧虚线框内为DPRAM软件模块,右侧虚线框为SPC3软件模块,中间是MCU的主循环模块,程序运行的驱动源是两个中断服务例程(ISR)。
由于SPC3芯片集成了PROFIBUS-DP协议,能处理PROFIBUS-DP状态机,P89C51RD2处理器只需要对SPC3进行合理的配置、初始化及对各种报文的处理,其中对SPC3的初始化非常重要,分配从站参数和从站地址设定中断事件的中断程序;根据组态数据计算输入输出长度,辅助缓冲区分配,缓冲区初始化,设置I/O数据长度等。在从站中,除了诊断报文外,其它报文都在P89C51RD2中断事件中进行处理。
接口模板的初始化报文(发送、接收) 固定长度49 字节;接口板与控制器之间数据交换报文(发送、接收),长度在初始化报文中设定,最大为256字节;PROFIBUS 输入/ 输出数据量可自由设定,最大224 字节输入和224字节输出。
DPRAM 驱动程序主要完成 MCU和 DSP之间的数据交换工作。为了使数据交换高效、顺利地进行并且能避免双方对DPRAM的读写冲突,对2k双端口RAM内存单元进行了合理的定义,并规定了它们的访问权限,如表1所示。
Send_Buf和Rev_Buf配合 Send_H, Send_T, Rev_H, Rev_T组成了两个FIFO循环缓冲队列,其目的是缓解CPU速度的不匹配,提高数据传输效率。
用户DSP程序的编写是在原PMSM控制程序的基础上添加PROFIBUS-DP接口驱动扩展而成,这主要是对DPRAM的初始化和访问,可以通过中断或轮询的方式实现。因为本系统对实时性要求严格,本文采用中断方式进行输出数据和诊断数据处理。
4 高速 PROFIBUS-DP总线通信的实现
接口板制作完成后,笔者搭建了PROFIBUS-DP单主网络环境并进行了测试。通过该模块,将变频控制器作为从站接入PROFIBUS-DP总线,主站是安装有PROFIBUS 通信网卡CP5611的PC机,它通过屏蔽双绞线可以和多台装有此类接口的变频控制器相连。针对系统从站的配置,采用COM PROFIBUS软件对系统进行组态,编辑相应的GSD文件,编译后下载到主站单元中。用上位机监控软件进行测试,结果表明PC机主站与从站的通信速率最高可达12M,响应时间由ms级缩短到μs级。利用PC机采集到的永磁同步机的速度信号,绘制了曲线图如图4所示。
实验证明,本文针对同步电机驱动控制器所设计的PROFIBUS-DP从站通信接口,具有很强的实用性和通用性。不仅提高了信号的传输精度、速度、可靠性和抗干扰性,而且降低了系统成本,方便安装、调试、维护及功能扩展。可广泛应用于工业控制各个领域。此外,设计PROFIBUS-DP从站通信接口有利于我国自主研发具有PROFIBUS通信功能的智能从站设备,对推动国内现场总线在传动行业的发展应用,加快与国际接轨,增强企业竞争力具有积极的作用。
参考文献
[1]阳宪惠,金以慧.企业网络系统中的现场总线技术[J].自动化与仪表,1998,13(1):1-7
[2]张志峰,王坚,赵静.现场总线Profibus DP主从站数据交换探讨[J].低压电器,2004(4):35-37
[3]孙鹤旭,包致远,董砚,等.采用步进控制方法的永磁同步电动机数字实现[J].电气传动,2006,36(3):23-25
[4]董砚,孙鹤旭,包致远,等.基于矩角控制的永磁同步电动机位置控制系统[J].电工技术学报,2006,21(1):87-92
模块接口 篇8
可编程片上系统(System on Programmable Chip,SoPC)是Altera公司提出的一种灵活、高效的SoC解决方案,是一种特殊的嵌入式微处理器系统,他是将软件和硬件集成到单个可编程逻辑器件平台中,同时获得软件的灵活性以及硬件的高性能优势,并且他是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
SPI总线接口(Serial Peripheral Interface)是Motorola公司提出的一种全双工的同步串行外设通信接口,用于连接微处理器和各种外围设备,是一种3线总线结构,接口信号线少,实现简单,应用非常广泛。
本文给出的是通过Verilog HDL硬件描述语言实现SPI总线的SoPC模块设计,并编写该模块在NIOS Ⅱ系统中的驱动程序。
2SPI 总线接口与Avalon交换式总线简介
2.1 SPI总线接口
SPI总线接口最早由Motorola公司提出,他是一种全双工的同步串行外设通信接口,用于连接微处理器和各种外围设备。SPI接口一般由4根信号线组成,1根串行时钟线(SCLK)、2根数据线主机输入/从机输出线(MISO)和主机输出/从机输入线(MOSI),还有一根是低电平有效的从机选择线(SS)。
SPI接口总线上的数据传送是通过串行时钟SCLK进行同步。SCLK信号由SPI主机端产生,通过串行时钟线(SCLK)传到SPI从机,从而实现串行数据的同步传送。MISO和MOSI的功能取决于其是作为主机还是从机。当作为主机时,MISO是输入,MOSI是输出,作为从机时刚好相反。其应用通常是一个SPI主机连接一个或多个SPI从机。
SPI接口的数据传输有4种不同的传输模式,由SPI控制寄存器中CPOL和CPHA位来选择当前传输模式,如表1所示。
模式0 时钟SCLK的静止状态为低电平,在SCLK的上升沿采样数据,下降沿改变数据;
模式1 时钟SCLK的静止状态为低电平,在SCLK的下降沿采样数据,上升沿改变数据;
模式2 时钟SCLK的静止状态为高电平,在SCLK的下降沿采样数据,上升沿改变数据;
模式3 时钟SCLK的静止状态为高电平,在SCLK的上升沿采样数据,下降沿改变数据;
SPI接口的4种传输模式如图1所示,其中传输的数据宽度为8 b。
2.2 Avalon交换式总线
Avalon交换式总线是由Altera开发的一种专用的内部连线技术,是SoPC Builder的专用互联技术。Avalon交换式总线由SoPC Builder自动生成,是一种最理想的用于系统处理器和外设之间的内联总线。每当一个新的组件被添加到系统中或某个外设的优先级被改变,就会生成一个新的、最佳的交换式总线结构。整个过程都由SoPC Builder自动完成,所以用户可以很容易地修改系统以提高性能或增加系统功能。
Avalon交换式总线使用最少的逻辑资源来支持数据总线的复用、地址译码、等待周期的产生、外设的地址对齐、中断优先级的指定以及高级的交换式总线传输。
Avalon交换式总线接口灵活,用户只需使用系统所需的信号来进行数据传输。Avalon交换式总线定义的内联线策略使得任何一个Avalon总线上的主设备都可以与任何一个从设备建立连接。Avalon交换式总线还支持大范围的系统结构,包括单个的,多个的主设备系统,还具有在外设之间通过不同路径进行无缝的数据传输能力。
为了适应SoPC系统外设的开发,Altera制定了Avalon总线接口规范,Avalon总线接口规范用于规范外设的设计使其符合SoPC系统的设计要求,提高设计的可复用性,大大提高系统设计效率。
3SPI总线接口设计与Verilog实现
3.1 SPI总线接口设计
本文设计的SPI接口模块为SPI主机部分,主要用于FPGA基带处理开发板和射频板之间的通信连接,以实现在FPGA中控制射频板的工作模式和参数设置。其应用框图如图2所示。
在FPGA中实现的是SPI主机模块。射频板上有2个SPI从机,其数据宽度、传输模式等都不同,这就需要SPI主机部分能够根据不同的从机选择设置不同的传输参数,主要的参数有数据宽度、传输模式、传输速率、数据传输方向(MSB先传还是LSB先传)。因为所设计的SPI接口模块需要在SoPC系统中使用,其接口信号必须满足Avalon交换式总线接口规范,表2所示为所设计的SPI接口模块的接口信号。其中CLK为系统时钟信号;reset_n为低电平有效的复位信号,使系统复位到一个确定的初始状态;CS为片选信号;address为输入地址线,用来选择SPI接口模块内部的寄存器;read和write为读写使能信号输入;read_data和write_data为32位读写数据;byte_enable为字节使能信号输入;interrupt为中断请求信号输出;sclk为串行时钟信号输出;mosi和miso分别为主机输出从机输入、从机输出主机输入的串行数据线;ss为从机选择信号输出,可与8个从机相连。
本文中设计的SPI接口模块使用Avalon总线和其他模块之间实现互连。其功能结构如图3所示。
SPI任务逻辑:实现SPI数据的传输控制;
SPI寄存器文件:SPI寄存器文件提供了任务逻辑和外界交换数据的途径,根据寄存器文件,用户就可以通过Avalon接口使用基地址+地址偏移量的方式来访问SPI接口模块的内部寄存器;
控制寄存器:用来对SPI接口模块电路进行配置的,可以设置数据宽度、串行时钟的极性和相位、以及传输速率;
状态寄存器:包含发送完成或者系统出错的标志位;
从选择寄存器:选择需要同主机进行通信的从机;
波特率寄存器:决定串行时钟SCLK的速率;
接收数据寄存器:接收数据寄存器;
发送数据寄存器:发送数据寄存器;
Avalon接口:Avalon接口为寄存器文件提供一个标准的Avalon前端,使用Avalon标准的接口信号来访问寄存器文件。
3.2 SPI接口模块的Verilog实现
Verilog HDL是一种硬件描述语言,他可以用来进行各种级别的逻辑设计,可以用来进行数字逻辑系统的仿真验证、时序分析和逻辑综合等,应用十分广泛。本文使用Verilog设计SPI接口模块。分析SPI接口模块的功能之后,本文使用有限状态机实现SPI接口模块的传输控制,有如下5个状态:idle,start,sample_data,change_data,stop。状态转换图如图4所示。
idle:SPI接口模块处于空闲状态,不进行任何操作;
start:数据传输开始,用于在数据传输之前对SPI接口模块进行配置,设置状态寄存器等;
sample_data:对MISO信号线上接收的数据进行采样锁存;
change_data:改变MOSI信号线上的数据;
stop:数据传输完成状态,用于在数据传输完成之后设置状态寄存器等。
有限状态机的状态编码主要有5种编码方式,顺序编码、格雷码编码、独热编码(one-hot)、随机编码和自动编码。本文使用独热编码,其每1个状态需要1个触发器,状态数等于触发器的数目,非常适合在寄存器资源丰富的FPGA器件中使用,并且采用独热编码的状态机速度非常快,设计简单。
3.3 SPI接口模块的驱动设计
本文设计的SPI接口的SoPC模块,需要能够在NIOS Ⅱ软核处理器上运行,因此需要编写SPI接口模块在NIOS Ⅱ上的驱动程序。
NIOS Ⅱ上的应用程序是通过HAL系统库来访问底层系统硬件的。HAL系统库是一个轻量级的运行环境,HAL API包含了ANSI C 标准库,应用开发人员可以用熟悉的C标准库函数访问设备和文件;他使NIOS Ⅱ中的设备像Unix系统设备一样具有相对一致的开发接口,同时也提供了Unix风格的库函数,其使用方式和习惯类似于UNIX(Linux)系统,设备访问接口一致。这种体系使应用开发人员和设备驱动开发人员可以分工合作,提高开发效率,同时降低应用开发难度。
SoPC Builder和NIOS Ⅱ IDE之间紧密集成,在SoPC Builder生成硬件系统以后,NIOS Ⅱ IDE能够自动生成对应的HAL系统库,更新硬件系统设置以后,NIOS Ⅱ IDE能自动更新HAL的驱动设置。在创建软件项目的时候,NIOS Ⅱ IDE自动生成并管理HAL系统库。
SPI接口模块驱动程序是基于HAL系统库,其主要功能是SPI接口模块的初始化、传输速率选择、控制寄存器设置、从机选择,以及数据发送和接收,分别由Avalon_SPI_Init,Avalon_SPI_Set_Buadrate,Avalon_SPI_Set_Control,Avalon_SPI_Select_Slave,Avalon_SPI_Transmit这5个函数来实现。为方便移植,驱动程序用C语言编写,使用Altera提供的IOWR和IORD接口函数来访问SPI接口模块内部寄存器,不同寄存器通过基地址+地址偏移量的方式寻址。
4仿真分析与验证
将SPI接口模块用Verilog HDL设计好之后,需要进行仿真来验证设计。首先进行功能仿真,在Modelsim中对Verilog设计文件进行编译、调试,修改设计文件直到功能仿真结果正确。一次SPI传输的功能仿真结果如图5所示。其中传输速率为f/8;f为系统时钟频率;数据宽度为8 b,LSB先传,CPOL=1,CPHA=1,SPI主机发送的数据为0X8A,SPI从机发送的数据为0X3A。从功能仿真结果可以看到模块逻辑功能正确。
功能仿真通过之后,需要进行时序仿真,验证设计的时序要求是否满足。将Verilog HDL设计文件用Quartus Ⅱ编译,布局布线后生成比较精确的时延信息文件,并将此文件添加到Modelsim中进行时序仿真,改进设计使仿真结果正确并满足时序要求。一次SPI传输的时序仿真结果如图6所示。其中传输速率为f/8,f为系统时钟频率,数据宽度为8 b,LSB先传,CPOL=1,CPHA=1,SPI主机发送的数据为0X8A,SPI从机发送的数据为0X3A。从图6中可以看出时序仿真结果正确。
当功能仿真和时序仿真通过后,根据硬件设计文件和软件驱动程序,在SoPC Builder中定制一个基于Avalon交换式总线的用户自定义外设Myspi,Myspi的接口信号如表2所示,接口信号符合Avalon交换式总线接口规范。为了验证Myspi外设,在基于Cyclone Ⅱ芯片的FPGA开发板上建立了一个SPI接口模块测试系统,通过SoPC Builder配置SoPC系统,加入NIOS Ⅱ CPU,jtag_uart,onchip_memory,sdram,FALSH,Myspi,spi_slave_core等模块。其中spi_slave_core为SPI从机模块,将Myspi和spi_slave_core模块相应的信号线相连。图7是SPI接口模块测试系统原理图。
NIOS Ⅱ中使用Micro C/OS-Ⅱ嵌入式操作系统,应用程序中使用2个任务分别控制SPI主机和SPI从机,修改驱动程序直到SPI主机和SPI从机之间能够进行正常通信。调试结果显示SPI主机和SPI从机之间通信正确,表明Myspi外设满足设计要求,SPI接口模块设计正确。
5结语
本文通过SPI接口模块,从SPI接口模块功能设计、接口信号设计、硬件实现以及NIOS Ⅱ驱动程序设计,阐述了SoPC模块的编写方法和步骤。所设计的SPI接口模块通过了功能仿真和时序仿真,并在实际的NIOS Ⅱ系统上运行,验证了接口功能的正确性。
摘要:SPI总线接口是Motorola公司提出的一种全双工的同步串行外设通信接口,用于连接微处理器和各种外围设备。可编程片上系统是Altera公司提出的一种灵活、高效的SoC解决方案,SoPC模块间的互联使用了Avalon交换式总线。基于Avalon交换式总线接口规范,利用Verilog HDL硬件描述语言实现SPI总线接口的硬件设计,编写SPI接口模块在NIOSⅡ系统中的驱动程序。在Modelsim中对SPI接口的硬件设计进行功能和时序仿真;在FPGA开发板上构建了实际的NIOSⅡ系统,验证SPI接口的SoPC模块;仿真和验证结果正确,满足设计要求。
关键词:可编程片上系统,串行外设接口,Verilog硬件描述语言,FPGA,NIOSⅡ
参考文献
[1]孙丰军,余春暄.SPI串行总线接口的Verilog实现[J].现代电子技术,2005,28(16):105-106,109.
[2]杨承富,徐志军.SPI总线接口的FPGA设计与实现[J].军事通信技术,2004,25(2):72-76.
[3]高谷刚,罗春.可复用SPI模块IP核的设计与验证[J].单片机与嵌入式系统应用,2004(11):5-8.
模块接口 篇9
USB通用串行总线(Universal Serial Bus)是被PC机广泛采用的总线,已被集成到计算机主板上。USB总线能连接127个装置,需要一对信号线及电源线。USB 2.0标准的数据传输率能达到480 MB·s-1。该总线具有轻巧简便、价格便宜、连接方便快捷的特点,现在已被广泛用于宽带数字摄像机、扫描仪、打印机及存储设备。USB设备具有即插即用功能,与并行总线相比,更适合于连接多外设的需要。且计算机都普遍对外提供USB接口,只需要一根USB电缆就可实现连接。本设计中即采用USB2.0作为虚拟仪器系统的接口。
成功地设计USB2.0通用接口模块应用于虚拟仪器系统,可真正体现虚拟仪器的灵活性与便携性。
1 硬件设计
芯片选择USB2.0接口模块用于配合应用软件接受上位机命令及返回采集数据。考虑到数据的传输速度,选择了支持USB2.0的接口芯片:Cypress公司的EZ-USB FX2 家族的CY7C68013,属功能设备芯片,同时集成了USB 2.0接收器,USB引擎,一款增强型的8051微控制器及8.5 kB片上RAM,4 kB FIFO存储器以及一个通用外部可编程接口(GPIF) 。它可同时支持USB低速,高速和全速传输模式,传输速率最高可达到480 MB·s-1。芯片的结构图,如图1所示[1]。
设备芯片中的USB2.0收发器和智能引擎完成数据的编解码及数据接收和传送,引擎能够直接对端点和寄存器进行读取,方便主机对设备的控制;增强型51处理器参与端点FIFO与外围电路间的数据传输。以这种方式工作时,增强型8051可不参与数据传输,仅通过FIFO或RAM的方式访问所传输的数据,并且这些数据是以数据包的形式传送的,从而较好地解决了USB高速模式下的带宽问题;4 kB高速配置端点FIFO,端点FIFO一共有3种接口模式:直接I/O方式、从属FIFO模式、可编程接口(GPIF)模式[1],本文采用了从属FIFO的模式。并且提供了方便的控制传输的寄存器,以适应控制不同类型的传输。同步从属FIFO读写数据连接方式如图2和图3所示。
接口芯片在系统中的主要作用包括完成与主机间的数据交换传输,处理USB请求,如设备复位、读取描述符等请求,完成设备的列举与重列举,控制外部电路,并提供外部电路接口,如中断处理,端点FIFO的控制等。
需要指出的是,CY7C68013虽然内核一样,但有56脚、100脚和128脚3种不同的封装,主要区别在于51资源和可编程接口是否引出。在本设计中,由于没有使用51处理器的数据和地址总线,同时也不需要使用GPIF,因此使用的是56脚封装的形式。
USB接口模块对FPGA可见的接口为数据线FD[15..0]和一些状态及控制信号线。通过下载固件代码配置8051,可以让设备芯片对主控FPGA动作模拟为片外从FIFO,减小FPGA设计的难度。
2 软件设计
2.1 固件(firmware)设计
固件程序实际上就是单片机方面的软件设计,是所有基于微控制器及其外围电路的功能设备正常工作必不可少的部分,其作用就是辅助硬件。
Cypress公司提供的固件框架简化了程序设计,降低了难度。开发者可在这个框架的基础上添加代码,最终完成固件的编写。选用C51语言编写固件,Cypress公司为用户提供了一个方便的开发工具Keil uVision,是为EZ-USB芯片开发而定制的。
CY7C68013芯片的固件程序包含9个程序文件:testregs.h,testregs.inc,testheader.h,testdly.h,dscrptr.a51,delayms.a51,jmptable.a51,main.c和function.c。其中,头文件testregs.h,testregs.inc对EZ-USB FX2中的各种功能寄存器进行了定义;testheader.h定义了通用的FX2常量,数据类型和宏;testdly.h定义了FX2中某些寄存器所需的同步程序和芯片挂起处理子程序;jmptable.a51文件定义了FX2中INT2和INT4的中断跳转表;main.c是固件运行的主程序文件,负责处理各种USB设备请求,程序的主循环就在该源程序中;function.c是添加代码的核心部分,用户想通过硬件实现的功能一般都只需要在该部分添加相应的代码[2,3]。固体代码开发流程图如图4所示。
只需在function.c文件中的TD_Init()和TD_Poll()函数中编写功能代码即可。在TD_Init()函数中定义了END2BUF,END4BUF,END6BUF,END8BUF,并对其进行初始化,TD_Poll()函数编写功能代码如下
在设计中,USB接口芯片用到4个输出端口END2BUF,END4BUF,END6BUF,END8BUF。这4个端口的用途不同,END2BUF和END4BUF主要用于从主机向下位机发送消息,可以是控制命令,也可以是波形数据;END6BUF和END8BUF用于从下位机向主机读取数据。这样定义主要是用来检验硬件时序的正确性。在主程序中,51微处理器轮询各端口状态和控制寄存器:如果相应BSY位为1,则说明端点数据缓冲区为空,等待从上位机下传新的数据,然后程序继续轮询下一个端口的状态和控制寄存器;如果相应BSY位为0,则说明端点数据缓冲区有数据,8051立即转入相应子程序,完成数据的接收。需要注意的是,在进行数据传输时,任何两个端点都不能同时工作,即就是在END2BUF或END4BUF向下位机发送消息时,END6BUF或END8BUF不能同时从下位机向主机传送消息。
2.2 驱动程序设计
设备驱动程序的设计是硬件开发过程中的一个重要环节,好的驱动程序是硬件功能能够正常实现的重要保证,不仅与所要设计的硬件设备有关,而且还涉及操作系统内核。驱动程序的作用是提供系统与硬件设备的接口,并且支持用户及其应用程序要求的信息流。
驱动程序是一些例程的集合,它们被动地存在,在等待主机系统软件(PnP管理器,I/O管理器,电源管理器等)来调用或激活它们。USB设备所采用的驱动程序是一种典型的WDM驱动程序。
具体的驱动程序不同,其所包含的例程也不同。一个WDM驱动程序的基本组成包含以下5个例程[4]:
(1) 驱动程序入口例程:处理驱动程序的初始化;
(2) 即插即用例程:处理PnP设备的添加、删除和停止;
(3) 分发例程:处理用户应用程序发出的各种I/O请求;
(4) 电源管理例程:处理电源管理请求;
(5) 卸载例程:处理驱动程序的卸载。
在本设计中,CY7C68013的固件代码放在主机上,当上电或者连接时,其将自动下载至芯片的RAM中,由增强型8051执行。这时需要两个驱动程序:一个专门用来下载芯片的固件代码的下载驱动loader.sys;另一个用于实现虚拟仪器系统具体功能的设备驱动usbdriver.sys。
2.2.1 设备驱动程序的开发
(1) 设备驱动开发环境介绍。
在开发设备驱动的过程中,使用了VC++和DDK。
VC++是包含标准编译工具(编译程序和连接程序)的集成开发环境,通过正确设置,其可用来建立内核模式的设备驱动程序。
DDK是微软公司提供的驱动开发工具包,它是开发设备驱动程序所必须的软件组件。
(2) 开发环境的设置。
在开发用户应用程序时,现在已经很少使用Makefile项目了,其他Visual C++向导,使用起来也非常方便。但对于一些复杂的工作,如设置创建驱动程序的编译程序和连接程序,还需要使用Makefile项目。
在使用Makefile项目之前,应首先设置VC++的一些选项,以使其适合开发设备驱动程序的需要。
(3) 设备驱动的构架。
设备驱动的构架包括源码文件和构造文件两部分,如表1所示。
2.2.2 下载驱动程序的开发
下载驱动程序loader.sys也属于WDM驱动模型下的驱动程序,但不同于USB设备驱动程序,该驱动程序是为对应的USB接口芯片设计的,用来下载接口芯片需要执行的固件代码。因为芯片的程序存储器使用的是RAM,因此每次在加电后都需要加载程序。在程序的结构上,下载驱动程序和设备驱动程序基本一致,只不过下载驱动程序没有分发例程,且电源管理例程和即插即用例程由同一个函数TestPnp.c处理,其主要实现文件有两个:TestInit.c和TestPnp.c。还有两个C语言文件需参加编译:Loader.c和Tagtest.c,这两个C语言文件都是CY7C68013的芯片固件程序,且均由INTEL_HEX_RECORD结构组成。其中,Loader.c实现了将数据下载至CY7C68013外部RAM的供应商自定义请求,由Cypress公司提供;Tagtest.c为本系统所用的芯片固件,由hex2c工具生成。
Hex2c工具是由Cypress公司提供的文件转化工具,它可以将由Keil C51语言编译链接所得的Intel16进制记录转换为C语言代码,它是一个Win32控制台应用程序,用法为:hex2c<intel_hexfile_name><c_filename>[var_name]。其中,参数intel_hexfile_name指明输入文件,即由Keil工具建立的.hex文件,参数c_filename指明输出的C语言文件名,可选参数var_name指明C语言文件中INTEL_HEX_RECORD结构的变量名。
2.2.3 应用程序的开发
作者在Lab Windows/CVI 8.0环境下开发了主机端的应用程序界面,实现设备的打开、关闭、当前数据显示、文件保存等功能。在FPGA上编写时序控制产生数据到USB芯片,应用程序传输数据到主机,所得数据验证了固件代码的数据传输功能,如图5所示。设计实现了USB模块与PC机之间的通信。
3 结束语
USB技术作为新一代通用串行总线标准,已被广泛的应用于工业控制领域。文中给出的一种高速而又廉价的USB 2.0接口模块设计,可作为虚拟仪器系统的通用传输接口,对于虚拟仪器系统的设计具有一定的参考和推广应用价值。
参考文献
[1]王成儒,李英伟.USB2.0原理与工程开发[M].北京:国防工业出版社,2004.
[3]尹勇,王洪成.单片机开发环境uVision2使用指南及USB固件编程与调试[M].北京:北京航空航天大学出版社,2004.
[3]Cypress.EZ-USB Technical Reference Manual[Z].USA:Cypress Conpration,2001.