新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PC/104总线的多功能扩展通讯模块的设计

基于PC/104总线的多功能扩展通讯模块的设计

作者: 时间:2016-12-20 来源:网络 收藏

  图2用VHDL语言可以很方便地实现。其具体描述如下:

  SEL(0)<=AEN;

  SEL(1)<=NIOW AND NIOR;

  SEL(2)<=ADDR(0);

  SEL(3)<=ADDR(1);

  SEL(4)<=ADDR(2);

  SEL(5)<=ADDR(3);

  SEL(6)<=ADDR(4);

  SEL(7)<=ADDR(5);

  SEL(8)<=ADDR(6);

  WITH SEL SELECT

  Y<="1111110" WHEN "010001000",//IO/110 地址操纵

  "1111101" WHEN "010001100",//IO/118 数据操纵

  "1111011" WHEN "010010000",//IO/120 串口1

  "1110111" WHEN "010010100",//IO/128 串口2

  "1101111" WHEN "010011000",//IO/130 串口3

  "1011111" WHEN "010011100",//IO/138 串口4

  "0111111" WHEN "010100000",//IO/140 读中断号

  "1111111" WHEN OTHERS;

  END BLOCK CODE;

  3.2 104总线与CAN控制器的接口

  如前所述,104总线与ISA总线兼容而与CAN控制器要求的时序不同,设计中将104总线中的BALE、地址和读写信号经CPLD逻辑整合后提供给CAN控制器,同时从数据线分时送出操纵地址和操纵数,满足CAN控制器的时序要求。时序整合的VHDL语言如下:

  ALE<=(NOT Y(0)) AND BALE;

  CSCAN<=Y(1);

  IORCAN<=Y(1) OR NIOR;

  IOWCAN<=Y(1) OR NIOW;

  双向数据缓冲的VHDL实现可以在很多参考书中找到,此处从略。

  3.3 异步通讯接口电路及中断共享电路

  16554的接口可与PC104实现无缝连接,CPLD实现选通和读写逻辑控制,异步通讯与CAN控制器共用CPLD内的双向数据缓冲电路。

  异步通讯控制单元16554有很强的中断能力,四个串行控制用具有各自的中断引脚,使用灵活。但系统的中断资源有限,假如每一个控制器都占用一个中断号,通讯模块需要占用五个中断号。为了节约中断资源,设计中将4个串口控制器共享一个中断,而CAN总线控制器单独占用一个中断。

  为了实现共享,设置了一个中断向量寄存器,当发生中断时首先读取中断向量寄存器以定位发出中断的串行口。其原理见图3。

中断共享电路

图3 中断共享电路

  VHDL语言实现如下:

  GMID<=NIOR OR Y(6);

  INTSER<=INTABCD(0) OR INTABCD(1) OR INTABCD(2) OR INTABCD(3);

  INTID<=INTABCD WHEN (GMID=‘0‘)

  ELSE

  "ZZZZ"

4 结论

  本设计利用CPLD实现了104总线和CAN控制器之间的时序转换、整个电路的逻辑控制以及中断共享,使电路设计结构紧凑,性能稳定。扩展了RS-232、RS-485和CAN接口的104PC可以满足尽大部分控制系统的通讯要求。该设计已被一个分布式防空系统所采用,在历次联调试验中性能指标均达到了要求。


上一页 1 2 下一页

评论


技术专区

关闭