太懒了,一直想好好整理一下平时工作中遇到的问题与心得,可是工作一忙这个想法始终无法实现。我决定还是一周抽出点时间整理一下,也好不断提高。
最近调试的板卡是一块非智能板卡,使用APCI总线信号控制EXAR公司的XR16V598芯片。这块板卡实现的功能是把总线上的信号译码成为8路串口收发数据。特点是:
1. 可以软件通过配置CPLD上面的寄存器实时控制8路串口的传输协议,RS232/RS422/RS485实时软件切换,不需要传 统的跳线手动选择。
2. 采用光耦实现全部隔离。
3. 为适应更高要求,在串口外端选配共模扼流圈DLW5BSN302SQ2与空气放电管SL1021B,当然这些暂时不装配也不会影响功能。
设计方案初期主要考虑成本因素及设计的复杂程度。主控制芯片决定采用EXAR公司的XR16V598芯片,由于输出端口的顺序的限制,我查询了很多同时兼容输出RS232,RS422,RS485的芯片,但都不符合用户的要求,其次这种芯片一片的价格也比较贵。如果用分立的MAX242与2片SP485EEN构成一路串口成本也不贵。
其次需要考虑的问题是逻辑的处理。在总线一侧首先通过245芯片驱动总线上的信号之后连接到CPLD端。在cpld内进行简单的译码以及控制232,422,485切换的管脚,需要两个信号控制。考虑到成本问题,隔离外侧采用HCT00,02,14芯片搭建组合逻辑达到控制MAX242与SP485EEN芯片的目的。估计还有更好的办法,但要是在外侧做则会增加光耦的使用,内测用CPLD会增加成本与布线复杂度。这种也算是一种妥协的方法了。
写出逻辑分配表,串口板地址线为9根,数据线为8根,具体功能地址分配如下表:
地址A8~A0 | 数据D7~D0 | 说明 | 备注 |
0x080 | 0x0~0xF | 0:选择RS232; 1:禁止RS232 | D0对应第一路串口, D7对应第八路串口 |
0x 081 | 0x0~0xF | 1:选择RS422; 0:选择RS485 | D0对应第一路串口,D7对应第八路串口 |
0x 100~0x 18f | 0x0~0xF | 对应写16V598寄存器 | 参照数据手册 |
定义好外部出口对应关系
| RS232 | RS422 | RS485 |
Pin 1n | SIN1n | Tx1n+ | NC |
Pin 2n | CTS1n | Tx1n- | NC |
Pin 3n | SOUT1n | Rx1n+ | DATA1n+ |
Pin 4n | RTS1n | Rx1n- | DATA1n- |
接着就是画原理图了。
文章评论(0条评论)
登录后参与讨论