在CPLD管理下实现高效多串口中断源
发布时间:2008/5/26 0:00:00 访问次数:679
    
    
    来源:单片机与嵌入式系统应用 作者:四川大学 黄 郑 夏建刚
    
    摘要:针对嵌入式系统的精简特性,提出一种通过1个中断源高效管理多个串行口的有效方法,不但节省系统资源,而且实现了多个串行口中断的无漏检测与服务。
    
    关键词:嵌入式系统 rs232 多串口 cpld 中断
    
    近几年来,随着后pc时代的来临,具有简洁、高效等特点的嵌入式系统得到了飞速的发展。嵌入式技术发展到今天已将各种计算机技术多层次、多方面的交叉融合在了一起。嵌入式系统加快了工业设计进程,降低了开发成本及其风险,使用简便,扩展灵活,高效精简,可方便地应用于各工业领域。
    
    中断请求采用边沿触发来进行中断检测,通过将信号送到特定的引线来检测中断。每条引线对应一个可能的硬件中断,因为系统不能辨认哪个设备使用中断线,所以当多个1个的设备被设置成使用同一个特定中断时就产生了混乱。中断产生时,由专用的中断程序接管系统,首先把所有的cpu寄存器内容保存到堆栈里,并引导系统指向中断向量表。在中断程序执行后的一段时间中,中断控制软件把堆栈内容返回给寄存器,系统恢复中断发生之前 的状态。如此段时间中又有中断请求,将造成中断的设备判断混乱,从而会造成中断冲突、丢失,甚至使得设置无法正常工作。因此,每个中断通常被分配给单一的设备,使中断无法共享。
    
    传统方法中,扩展多个串行口是利用多个中断源;但在嵌入式系统中,花费大量的中断源来扩展串口无疑是大量的资源浪费。针对这种情况,为了节省紧张的系统资源,本文提出一种实现高效多串口中断方案,可以利用单一的中断源来管理多个扩展串口,并保证多个串口中断的无漏检测与服务。
    
    1 总体设计方案
    
    基本原理结构如图1所示。rs232串口通过驱动芯片max202转换成ttl电平,通过串口异步通信器件16c554输出中断请求,通过或门获得多个串口的中断请求intreq,再通过cpld与中断控制器相连接。中断线intreq通过cpld主要是在cpld中做了一个1位的控制寄存器inten,用作中断允许控制位,并且根据16c554的中断请求intreq和inten的状态来最终生成dly_irq,向cpu发出请求。cpu实时响应中断请求dly_irq。在中断服务过程中,cpu按顺序逐个检查多个扩展的串口中断源,有中断请求的就给予服务。当刚刚检查过的中断又出现时,一方面靠cpld中的一位寄存器intreq锁存;另一方面,当上一中断服务完毕时,cpld中的8位状态机保证了一定时间的延迟。此延时中,中断控制把堆栈内容返回给cpu寄存器,恢复能获得响应。这样,即使在多个串口中断密集发生的环境下,扩展的多个串行口仍可获得实时性和可靠性较高的中断响应。
    
    
    
    2 硬件实现
    
    (1)max202
    
    maxim公司的max202芯片是标准的rs232电平转换器,是符合rs232通信标准的接口芯片;功耗低,集成度高,只用单一5v电源,每片有2个驱动器和2个接收器,具有2组接收和发送通道;全部接口电路简单,可靠性高,可实现ttl电平和rs232电平的直接转换。
    
    (2)16c554
    
    16c554是集成异步通信元件。在fifo模式,传输和接收前数据缓冲为16字节数据包,减了cpu的中断数量。包含4个改良16c550异步传输器件,使得串行i/o更加可靠。每个信道实现串行和并行2种连接方式的转换;每个信道的状态可以通过cpu的操作读取,可以获取操作情况或任何的错误状态。三态输出为双向数据总线和控制总线提供ttl驱动能力、优先级中断系统控制、可编程的串行接口特性。
    
    (3)8259a
    
    8259a是可编程的中断控制芯片。每块芯片可管理8级向量中断,具有8条中断请求输入线irq0~irq7,1条外中断请求输出线;具有4种主要工作方式,即全嵌套、循环优先级、特定屏蔽和程序查询方式;同时,还有4种从属工作方式,即结束中断、读状态、中断请求
    
    
    来源:单片机与嵌入式系统应用 作者:四川大学 黄 郑 夏建刚
    
    摘要:针对嵌入式系统的精简特性,提出一种通过1个中断源高效管理多个串行口的有效方法,不但节省系统资源,而且实现了多个串行口中断的无漏检测与服务。
    
    关键词:嵌入式系统 rs232 多串口 cpld 中断
    
    近几年来,随着后pc时代的来临,具有简洁、高效等特点的嵌入式系统得到了飞速的发展。嵌入式技术发展到今天已将各种计算机技术多层次、多方面的交叉融合在了一起。嵌入式系统加快了工业设计进程,降低了开发成本及其风险,使用简便,扩展灵活,高效精简,可方便地应用于各工业领域。
    
    中断请求采用边沿触发来进行中断检测,通过将信号送到特定的引线来检测中断。每条引线对应一个可能的硬件中断,因为系统不能辨认哪个设备使用中断线,所以当多个1个的设备被设置成使用同一个特定中断时就产生了混乱。中断产生时,由专用的中断程序接管系统,首先把所有的cpu寄存器内容保存到堆栈里,并引导系统指向中断向量表。在中断程序执行后的一段时间中,中断控制软件把堆栈内容返回给寄存器,系统恢复中断发生之前 的状态。如此段时间中又有中断请求,将造成中断的设备判断混乱,从而会造成中断冲突、丢失,甚至使得设置无法正常工作。因此,每个中断通常被分配给单一的设备,使中断无法共享。
    
    传统方法中,扩展多个串行口是利用多个中断源;但在嵌入式系统中,花费大量的中断源来扩展串口无疑是大量的资源浪费。针对这种情况,为了节省紧张的系统资源,本文提出一种实现高效多串口中断方案,可以利用单一的中断源来管理多个扩展串口,并保证多个串口中断的无漏检测与服务。
    
    1 总体设计方案
    
    基本原理结构如图1所示。rs232串口通过驱动芯片max202转换成ttl电平,通过串口异步通信器件16c554输出中断请求,通过或门获得多个串口的中断请求intreq,再通过cpld与中断控制器相连接。中断线intreq通过cpld主要是在cpld中做了一个1位的控制寄存器inten,用作中断允许控制位,并且根据16c554的中断请求intreq和inten的状态来最终生成dly_irq,向cpu发出请求。cpu实时响应中断请求dly_irq。在中断服务过程中,cpu按顺序逐个检查多个扩展的串口中断源,有中断请求的就给予服务。当刚刚检查过的中断又出现时,一方面靠cpld中的一位寄存器intreq锁存;另一方面,当上一中断服务完毕时,cpld中的8位状态机保证了一定时间的延迟。此延时中,中断控制把堆栈内容返回给cpu寄存器,恢复能获得响应。这样,即使在多个串口中断密集发生的环境下,扩展的多个串行口仍可获得实时性和可靠性较高的中断响应。
    
    
    
    2 硬件实现
    
    (1)max202
    
    maxim公司的max202芯片是标准的rs232电平转换器,是符合rs232通信标准的接口芯片;功耗低,集成度高,只用单一5v电源,每片有2个驱动器和2个接收器,具有2组接收和发送通道;全部接口电路简单,可靠性高,可实现ttl电平和rs232电平的直接转换。
    
    (2)16c554
    
    16c554是集成异步通信元件。在fifo模式,传输和接收前数据缓冲为16字节数据包,减了cpu的中断数量。包含4个改良16c550异步传输器件,使得串行i/o更加可靠。每个信道实现串行和并行2种连接方式的转换;每个信道的状态可以通过cpu的操作读取,可以获取操作情况或任何的错误状态。三态输出为双向数据总线和控制总线提供ttl驱动能力、优先级中断系统控制、可编程的串行接口特性。
    
    (3)8259a
    
    8259a是可编程的中断控制芯片。每块芯片可管理8级向量中断,具有8条中断请求输入线irq0~irq7,1条外中断请求输出线;具有4种主要工作方式,即全嵌套、循环优先级、特定屏蔽和程序查询方式;同时,还有4种从属工作方式,即结束中断、读状态、中断请求