微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PC/104总线的多功能扩展通讯模块的设计

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

时间:12-20 来源:互联网 点击:

·CAN控制器SJA1000的对外操纵接口是一种地址/数据分时复用的接口,而PC104没有地址/数据分时输出的特性。因此,必须经过期序转换才能实现它们之间的连接。目前,一般采用8031单片机转发数据的方式来实现:通过8031连接CAN控制器,104PC利用IO端口读写的方式将数据直接传送给8031,或者将数据写于双口RAM中,8031在另一个口读取数据,再由它对CAN总线控制器进行操纵,将数据转发出往。这种方法无疑又要增加器件和电路的复杂性。

  为此,设计了通过CPLD整合时序实现104PC与CAN控制器连接的方法,由104PC分时送出操纵地址和操纵数据,并由CPLD整合相关的逻辑控制信号,满足CAN控制器的时序要求。

  ·采用CPLD可以根据需要定义输进输出脚,方便PCB板布局和走线。

  ·采用CPLD时不必担心设计中所采用器件的种类、数目,可以任意定义所需各种器件,从而优化电路性能。

  ·采用CPLD可以通过软件对电路进行仿真,方便电路调试。

  ·采用CPLD可以在线修改其内部逻辑,升级或修改BUG时可不改动外部电路。

  CPLD芯片选用ALTERA公司的EPM7064SLC84-10,该芯片具有基于EEPROM的第二代MAX结构,支持通过JTAG引脚实现在系统编程。拥有64个宏单元,4个逻辑阵列块,1250个可用门单元,支持5V/3.3V多电压IO接口,可提供68个用户IO引脚。
  
  根据以上的方案,通讯扩展模块的结构如图1。

图1 扩展通讯模块结构

3 硬件实现

  3.1地址译码电路

  本扩展模块共需占用七个IO地址,其中两个IO地址供CAN控制器,四个IO地址供四串口异步通讯单元,一个IO地址供中断共享电路。必须公道选择IO地址,否则会引起系统不可预知的冲突。

  各种PC104计算机IO地址分配情况大体相同,以盛博SysCenterMoudle/SuperDx为例,选择了110H~140H为扩展通讯模块的IO地址,地址分配见表1,逻辑译码结构见图2。

  表1 IO地址分配表

图2 IO地址逻辑译码结构

  图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可以满足尽大部分控制系统的通讯要求。该设计已被一个分布式防空系统所采用,在历次联调试验中性能指标均达到了要求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top