基于CPLD的电子存包系统的设计与实现
时间:08-31
来源:互联网
点击:
近年来,随着信息科技的发展,电子存包系统由于其安全性高、可靠性高、方便快捷等特点,在车站码头、超市、图书馆、宾馆、游泳馆、俱乐部等公共场所及机关、企事业单位文件档案管理等部门得到了广泛的应用,有着广阔的市场前景。
1 系统组成
本文所介绍的电子存包系统是一种电脑联网集中控制的磁卡式自动存包系统。如图1所示,系统由集控计算机和分机两级监控系统对存包柜进行监视与控制。
集控计算机(简称主机)为用户分配箱位和密码,通过与其连接的磁卡读写器将密码写入磁卡中交给用户。主机使用特定的通信协议查询和控制各个分机,然后由分机对其下属箱位进行控制。主机与分机之间采用RS-485接口连接。RS-485在传输距离为1200米时速度可达100kbps、传输距离远、可靠性很高,而且用于多点互连时很方便,可以省掉很多信号线,非常适合用于分布式系统中。
分机具有接收并缓存读卡器数据、与主机通信、控制存包柜动作等功能,主要由CPLD芯片、光耦合模块、该磁卡模块、红外探测模块、电磁锁驱动模块等外围电路组成。CPLD芯片选用Altera公司的EPM3256A TC144-10,其技术参数如表1所示。
表1 EPM3256ATC144-10技术参数
在本设计中,所有的控制与通信功能全部集成到CPLD内部,充分发挥了CPLD使用灵活、测试方便、可靠性好等优点。
2.1 基本硬件组成
电子存包系统的基本硬件结构,即分机的硬件组成如图2所示。
电源模块使用变压器将220V交流电变为9V交流电,然后经过整流、稳压输出3.3V、5V、12V三路直流电对分机系统供电。其中,3.3V直流是怪CPLD供电,5V直流电对外围电路供电,12V直流电用来驱动电磁锁。
磁卡数据接收模块主要由一片MAX202和一个9帧D型接口以及五个0.1/μF电容组成,当用户刷卡动作完成时,磁卡中密码数据立即被传送至CPLD中暂存。当主机轮循至该分机时,分机将密码发送给主机。
晶振模块利用4060分频器和4020分频器对2.4576MHz晶振频率进行分频,分别得到9600Hz、153600(9600×16)Hz、2.35Hz的频率信号作为CPLD的输入时钟信号。
红外线发射与接收模块的作用是利用红外线检测各个存包柜内是否有物品,通过红外接收模块将检测结果反馈到CPLD,然后由CPLD发送给主机。
RS-485通信模块中使用了光耦器件4N25进行光电隔离以抑制噪声对通信线路的干扰,并由一片RS-485收发器芯片SN75LBC184实现TTL电平与RS-485电平之间的转换。 电磁锁驱动模块负责对CPLD输出的3.3V开门信号进行放大,以驱动电磁锁进行开关动作。为保证输出功率,采用了二极计流放大,电磁锁由末级功放管BD241驱动。每个分机控制八个箱位,因此如图3所示的驱动电路共有八路。
另外,本系统还选用了三晶公司生产的SJE-102磁卡读写器和SJE-451读卡器作为磁卡读写设备,分别与主机、分机相连接。
2.2 CPLD内部逻辑设计
CPLD内部逻辑的顶层原理图如图4所示。由图可见,CPLD内部逻辑电路由主控模块(main)、串行数据收发模块(s8)、磁卡数据接收模块(mag_s8)、磁卡数据缓冲模块(mag)以及开门信号延时模块(door)和报警模块(beep)几部分组成。
2.2.1 主控部分的设计
主控模块主要由一个状态机实现,采用VHDL语言描述。该状态机共有四个状态,分别是等待侦听状态、等待寻址帧状态、发送密码及箱位号码并接收主机开箱信号状态和接收主机强制开箱信号状态。
在这里采用全0帧“00000000”作为复位帧,当接收到复位帧时,系统立即返回等待侦听状态;采用全1帧“11111111”作为起始标识帧,在等待侦听状态下接收到全1帧时则转入等待寻址帧状态。寻址帧分为一般寻址帧和强制开箱寻址帧两种。一般寻址帧由四位分机编号+“1000”组成,而强制开箱寻址帧由四位分机编号+“0001”组成。当分机在等待寻址帧状态下收到这两种寻址帧时便分别转入发送密码及箱位号码状态和接收主机强制开箱信号状态。
2.2.2 串行数据收发部分的设计
本设计有两个串行数据发送与接收模块,分别用于与主机通信和接收磁卡数据,采用的通信速度都是9600bps。这两部分的设计思想是统一的,其中磁卡数据接收模块只用到串行数据的接收技术。
在发送电路的设计中,利用clk端口的9600Hz时钟信号,根据所采用的帧格式,将主控模块得到的并行数据DATAIN[7..0]前后分别加入起始位、奇偶校验位和停止位后串行输出到端口TXD。 在接收电路的设计中,接收电路始终用16倍波特率的时钟CLK16采样串行数据接收端RXD端口的状态。在检测到由“1”到“0”的变化时,若连续采样8次,RXD一直都保持为“0”,则认定是数据的起始位;否则认为是干扰信号,计数器将被复位,重新开始采样。在确认起始位后,每隔16个CLK16信号周期读取一次数据位,这样保证了恰好在每个数据的中点读取,直至停止位。一帧接收完毕后,接收计数器复位,开始帧听下一帧的起始位。采用这种接收方法不但可以减少误判起始信号,而且还允许发送时钟和接收时钟的频率有一定的误差。
在实际应用中,如果在检测到RXD下降沿后连续采样8次为“0”才确认地起始位,那么起始位被忽略的情况时有发生。经过实验与分析,发现这是由于CPLD外围的光耦器件4N25的开关速度较慢的缘故,于是改进了设计。在检测到RXD下降沿后,从第三个CLK16信号周期开始计数,连续采样6次,如果6次全为“0”,即认定是起始位。采用这种方法后误判率为0,大大提高了系统的可靠性。
1 系统组成
本文所介绍的电子存包系统是一种电脑联网集中控制的磁卡式自动存包系统。如图1所示,系统由集控计算机和分机两级监控系统对存包柜进行监视与控制。
集控计算机(简称主机)为用户分配箱位和密码,通过与其连接的磁卡读写器将密码写入磁卡中交给用户。主机使用特定的通信协议查询和控制各个分机,然后由分机对其下属箱位进行控制。主机与分机之间采用RS-485接口连接。RS-485在传输距离为1200米时速度可达100kbps、传输距离远、可靠性很高,而且用于多点互连时很方便,可以省掉很多信号线,非常适合用于分布式系统中。
分机具有接收并缓存读卡器数据、与主机通信、控制存包柜动作等功能,主要由CPLD芯片、光耦合模块、该磁卡模块、红外探测模块、电磁锁驱动模块等外围电路组成。CPLD芯片选用Altera公司的EPM3256A TC144-10,其技术参数如表1所示。
表1 EPM3256ATC144-10技术参数
在本设计中,所有的控制与通信功能全部集成到CPLD内部,充分发挥了CPLD使用灵活、测试方便、可靠性好等优点。
2.1 基本硬件组成
电子存包系统的基本硬件结构,即分机的硬件组成如图2所示。
电源模块使用变压器将220V交流电变为9V交流电,然后经过整流、稳压输出3.3V、5V、12V三路直流电对分机系统供电。其中,3.3V直流是怪CPLD供电,5V直流电对外围电路供电,12V直流电用来驱动电磁锁。
磁卡数据接收模块主要由一片MAX202和一个9帧D型接口以及五个0.1/μF电容组成,当用户刷卡动作完成时,磁卡中密码数据立即被传送至CPLD中暂存。当主机轮循至该分机时,分机将密码发送给主机。
晶振模块利用4060分频器和4020分频器对2.4576MHz晶振频率进行分频,分别得到9600Hz、153600(9600×16)Hz、2.35Hz的频率信号作为CPLD的输入时钟信号。
红外线发射与接收模块的作用是利用红外线检测各个存包柜内是否有物品,通过红外接收模块将检测结果反馈到CPLD,然后由CPLD发送给主机。
RS-485通信模块中使用了光耦器件4N25进行光电隔离以抑制噪声对通信线路的干扰,并由一片RS-485收发器芯片SN75LBC184实现TTL电平与RS-485电平之间的转换。 电磁锁驱动模块负责对CPLD输出的3.3V开门信号进行放大,以驱动电磁锁进行开关动作。为保证输出功率,采用了二极计流放大,电磁锁由末级功放管BD241驱动。每个分机控制八个箱位,因此如图3所示的驱动电路共有八路。
另外,本系统还选用了三晶公司生产的SJE-102磁卡读写器和SJE-451读卡器作为磁卡读写设备,分别与主机、分机相连接。
2.2 CPLD内部逻辑设计
CPLD内部逻辑的顶层原理图如图4所示。由图可见,CPLD内部逻辑电路由主控模块(main)、串行数据收发模块(s8)、磁卡数据接收模块(mag_s8)、磁卡数据缓冲模块(mag)以及开门信号延时模块(door)和报警模块(beep)几部分组成。
2.2.1 主控部分的设计
主控模块主要由一个状态机实现,采用VHDL语言描述。该状态机共有四个状态,分别是等待侦听状态、等待寻址帧状态、发送密码及箱位号码并接收主机开箱信号状态和接收主机强制开箱信号状态。
在这里采用全0帧“00000000”作为复位帧,当接收到复位帧时,系统立即返回等待侦听状态;采用全1帧“11111111”作为起始标识帧,在等待侦听状态下接收到全1帧时则转入等待寻址帧状态。寻址帧分为一般寻址帧和强制开箱寻址帧两种。一般寻址帧由四位分机编号+“1000”组成,而强制开箱寻址帧由四位分机编号+“0001”组成。当分机在等待寻址帧状态下收到这两种寻址帧时便分别转入发送密码及箱位号码状态和接收主机强制开箱信号状态。
2.2.2 串行数据收发部分的设计
本设计有两个串行数据发送与接收模块,分别用于与主机通信和接收磁卡数据,采用的通信速度都是9600bps。这两部分的设计思想是统一的,其中磁卡数据接收模块只用到串行数据的接收技术。
在发送电路的设计中,利用clk端口的9600Hz时钟信号,根据所采用的帧格式,将主控模块得到的并行数据DATAIN[7..0]前后分别加入起始位、奇偶校验位和停止位后串行输出到端口TXD。 在接收电路的设计中,接收电路始终用16倍波特率的时钟CLK16采样串行数据接收端RXD端口的状态。在检测到由“1”到“0”的变化时,若连续采样8次,RXD一直都保持为“0”,则认定是数据的起始位;否则认为是干扰信号,计数器将被复位,重新开始采样。在确认起始位后,每隔16个CLK16信号周期读取一次数据位,这样保证了恰好在每个数据的中点读取,直至停止位。一帧接收完毕后,接收计数器复位,开始帧听下一帧的起始位。采用这种接收方法不但可以减少误判起始信号,而且还允许发送时钟和接收时钟的频率有一定的误差。
在实际应用中,如果在检测到RXD下降沿后连续采样8次为“0”才确认地起始位,那么起始位被忽略的情况时有发生。经过实验与分析,发现这是由于CPLD外围的光耦器件4N25的开关速度较慢的缘故,于是改进了设计。在检测到RXD下降沿后,从第三个CLK16信号周期开始计数,连续采样6次,如果6次全为“0”,即认定是起始位。采用这种方法后误判率为0,大大提高了系统的可靠性。
电子 CPLD 红外 电路 Altera 电源模块 变压器 电容 收发器 VHDL 相关文章:
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 周立功:如何兼顾学习ARM与FPGA(05-23)
- 初学者如何学习FPGA(08-06)
- 为何、如何学习FPGA(05-23)
- 学习FPGA绝佳网站推荐!!!(05-23)
- 我的FPGA学习历程(05-23)