选用Philips公司的SJA1000作为CAN控制器,采用PCA82C250作为CAN收发器,并在CAN控制器与收发器之间使用6N137进行光电隔离,以增强抗干扰能力。将MODE引脚接高电平即SJA1000工作在INTEL模式,引脚与复位芯片MAX706T的RESET引脚相连,进行全局复位。在FPGA与SJA1000连接时需要使用741V164245电平转换器完成CAN总线5 V TTL电平向3.3 V FPGA I/O电平的转换。另外,SJA1000的RX1引脚与PCA-82C 250的VREF引脚相连,使用输入比较器旁路功能,可减少内部延时,增加正常通信的总线长度。具体的接口电路如图3所示。
CY7C68013A提供一种量子FIFO的处理架构,使USB接口和应用环境直接共享内部含有的4 K FIF0空间。本文CY7C68013A的控制是以异步SLAVE FIFO方式实现的,FPGA对CY7C68013A的逻辑控制实际上是对CY7C68013A内部FIFO的异步读写控制。设置CY7C68013A端点2为批量输入端点(FIF0地址为00),端点6为批量输出端点(FIF0地址为1O)。FPGA判断CY7C68013A的PA[1:0]端口电平,当PA[1:0]为01时,FPGA将接收到的CAN总线数据写入端点2对应的FIF0空间并上传给上位机,PA[1:0]为10时,FPGA读取端点6对应的FIFO内数据。FPGA对CY7C68013A的时序控制严格按照芯片手册完成。