| 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 所有产品 | 芯片价格参考 | 留言 | 论坛 | 网络协议 | 驱动设计 | 购买指南 | 
您现在的位置: 嵌入式控制研究室 >> FPGA >> 其它 >> 文章正文 用户登录 新用户注册
[组图]基于EPM7064的多串口管理系统设计           ★★★ 【字体:
基于EPM7064的多串口管理系统设计
作者:汤少维    文章来源:现代电子技术    点击数:    更新时间:2006-6-4
基于EPM7064的多串口管理系统设计
汤少维

(电子科技大学通信与信息工程学院 四川成都 610054)

1 概述

串行接口在数据通信中一直扮演着重要角色。他不仅没有因为时代的进步被淘汰,反而在性能上越来向其极限挑战。USB接口是当前PC机上的主流接口,但仍然有许多外设使用串口与PC机通信,尤其是在工业控制领域。普通PC机所提供的串口资源往往是不够的。

传统扩展多个串行口的方法是利用多个中断源,每个中断通常被分配给单一的设备。这是因为当多于1个的设备被设置成使用同一个特定中断时,系统不能辨认哪个设备使用中断线,所以就会产生混乱。但在嵌入式系统中,花费大量的中断源来扩展串口无疑是资源的浪费。针对这种情况,为了节省紧张的系统资源,本方案通过对CPLD的设计,采用1个中断源高效管理多个串口的有效方法实现了将PC主机上的一个USB接口扩展为8个通用串口接口,同时保证了多个串口中断的无漏监测与服务。

2 系统硬件设计

本设计方案(参见图1)采用ATMEL公司的89C52单片机来控制串口到USB接口之间的数据收发工作,选用Philips公司的USB接口芯片PDIUSBD12实现单片机与USB器件之间的连接,多串口扩展以TL16C554芯片实现,并由一片CPLD(ALTERA的EPM7064)实现高效多串口中断源管理,利用单一的中断源来管理多个扩展串口。在PC主机端,设计开发了WDM设备驱动程序对USB口进行虚拟管理,从而使得Windows应用程序能以访问普通串口的方式访问串口服务器上的多个串口。

3 CPLD设计

本设计中用CPLD设计了译码电路、锁存电路、逻辑或电路、三态门电路、状态机电路。由于对宏单元和管脚的要求不是很多,因此选用ALTERA EPM7064,44脚,PLCC封装。

3.1 译码电路

用CPLD进行PDIUSBD12的选址,2片TL16C554共8个口的选址,以及对CPLD中一位寄存器的选址,共用到A3~A7以及DO进行译码,译码设计图如图2所示。

(1) PDIUSBD12的选址

由于PO口为数据地址线,所以要经过地址锁存器,以及A7,A6一起连到一个138译码器上。因为PDIUSBD12奇地址表示命令,偶地址表示数据,所以把2个地址接异或非门后再接到PDIUSBD12的片选端。如图2上的CS2,其地址为0x7000,0x7001。

(2) TL16C554的选址

为了选中扩展的8个串口,将A3~A5连入另一个138译码器,将其译码为8个选通端连到每个芯片的片选上,然后用A6,A7,DO的译码CS0(见图2)作为第二个138译码器的低使能端。其8个口的地址依次为0x0C000,0x0C800,0x0D000,0x0D800,0x0E000,0x0E800,0x0F000,0x0F800。

(3) 一位寄存器的选址

CPLD内的一位寄存器的地址设定为0x0C001。

3.2 多串口中断源解决方案

其基本原理如图3所示。

RS232串口通过驱动芯片MAX202或MAX232转化成TTL电平,通过串口异步通信器件16C554输出中断请求,通过或门获得多个串口的中断请求,再通过CPLD与中断控制器相连接。中断控制线INTREQ通过CPLD主要是在CPLD中做一个一位寄存器INTEN(如图4所示),用作中断允许位,并根据16C554的中断请求INTREQ和INTEN的状态来最终生成中断DLY_IRQ,CPU将实时响应该中断请求。

在中断服务过程中,CPU按顺序逐个检查多个扩展口的串口中断源,有中断请求的就给予服务。当刚刚检测过的中断又出现时,一方面靠CPLD中的移位寄存器INTREQ锁存,另一方面,当上一中断服务完成时,CPLD中的8位状态机(如图7)保证了一定的延时。此延时中,中断控制程序把堆栈中的内容返回给CPU的寄存器,恢复能获得的响应。这样,即使在多个串口中断密集发生的环境下,扩展的多个串口仍可获得实时性和可靠性较高的中断。具体做法如下:

(1) INTREQ为n个中断的或结果。

(2) CPU对INTEN只写,操作过程分3步:

①中断安装后设置INTEN=1;

②进入中断服务程序后CPU设置INTEN=0;

③退出中断服务程序的最后指令再将INTEN=1。

(3)中断响应的时序图,如图5所示。

在ISR置位期间,有中断请求INTREQ产生时,此时如果触发了中断,则会使上次中断服务无法完成,因而造成中断丢失。因此,在ISR配置期间,将中断允许INTEN设置为O,防止其他中断请求触发中断,并用INTREQ锁存未被响应的中断请求。退出中断服务后,得中断允许INTEN设置为1,保证其他中断请求被响应,并延迟50μs,以确保此次中断服务完全退出。

(4)中断控制寄存器的状态图(描述8位状态机的转换)如图6所示。

3.3 EPM7064的接口电路图

本设计支持EPM7064在线下载功能,其接口图如图8所示。


4 虚拟串口驱动程序设计

为实现主机可以如操作本机串口一样通过主机USB口对串口设备进行数据读取,主机端设备驱动程序需将串口服务器的8个串口对应到主机的8个虚拟串口上。在WDM设备驱动程序设计中,这样的功能可以通过在USB功能驱动程序上层加上一个过滤驱动层来实现。应用程序发送数据到虚拟串口,而过滤驱动程序则将虚拟串口中的数据转发给USB功能驱动程序,反之亦然。基于WDM的USB设备驱动程序分层结构如图9所示。


文章录入:fengfeiyi    责任编辑:fengfeiyi 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 以 Flash 为基础的FPGA实现高…
  • 基于FPGA的高速误码仪接收端…
  • 视频压缩技术的系统考虑
  • 基于FPGA的高速硬件防火墙报…
  • FPGA在平板显示器中的应用
  • 走向图形化的FPGA设计软件
  • 用FPGA实现数字电视条件接收…
  • 基于FPGA的DDR SDRAM控制器的…
  • 用低成本FPGA替代ASIC实现大…
  • FPGA图像处理算法的编译与优…
  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)