基于CH368的PCIE总线接口CAN节点的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于CH368的PCIE总线接口CAN节点的实现
唐建;蒲永材;李泽银
【摘要】为了提升武器系统自主化水平、提高国产化率、降低成本,采用CH368芯片实现PCIE总线的接口转换,并在此基础上完成PCIE总线的CAN节点设
计.PCIE具有串行总线的优势,逐渐替代PCI成为信息处理与控制系统最常用的总线之一,并在军工领域得到广泛运用;文中详细介绍了CH368芯片的功能特点,并对本地总线接口与CAN控制器SJA1000的访问控制逻辑实现进行了详述.应用结果表明:采用该方案设计的CAN节点通讯稳定可靠,还具有电路简洁、成本较低的特点.【期刊名称】《机电产品开发与创新》
【年(卷),期】2017(030)006
【总页数】4页(P91-94)
【关键词】CH368;CAN;PCIe总线;SJA1000;国产化
【作者】唐建;蒲永材;李泽银
【作者单位】中国兵器工业第58研究所,四川绵阳621000;中国兵器工业第58研究所,四川绵阳621000;中国兵器工业第58研究所,四川绵阳621000
【正文语种】中文
【中图分类】TP302
本文描述的CAN节点用于某自主化武器控制系统,综合对国产化率、成本以及可靠性的考虑,我们采用了ASIC方案实现。
但PCIE总线芯片采用沁恒CH368,该方案的成功实施,在提高器件国产化率的同时,还保持了低成本的优势。
这对提高
类似产品的国产化率,具有很好的参考意义[1~4]。
随着数字电子技术的发展,计算机系统中各种功能扩展模块也纷纷采用了PCIE接口进行扩展设计。
而CAN总线的高性能、高可靠性已被业界认可,已大量应用于工业控制、汽车电子,甚至信息化武器系统中。
面对基于PCIE总线的CAN接口
需求,具体设计时都需要完成PCIE总线到CAN控制器总线的转换。
目前的方案
根据芯片选型来看有ASIC方案和FPGA方案两大类。
①ASIC方案。
PCIE总线及CAN控制器均采用ASIC芯片实现,常见是PEX8311+SJA1000。
再搭配小规模CPLD完成总线时序的转换;②FPGA方案。
采用FPGA中自带的硬PCIE IP核实现PCIE接口及协议解析,FPGA外接SJA1000或者直接用软IP实现CAN Core。
相对来说,ASIC方案硬件电路复杂,采用成熟芯片可靠性高。
FPGA方案对FPGA有最低要求,开发难度较大,容易有Bug,验证周期长。
本文采用的CAN接口实现了3通道隔离的CAN接口。
处理器通过PCIE总线向CAN控制器发起读写操作命令,CH368芯片完成PCIE总线物理层电信号转换并
进行协议解析后,实现为Local Bus的读写操作。
然后由挂接在Local Bus上的CPLD完成总线时序的转换、片选译码、中断状态指示等工作。
SJA1000控制器
直接连接ZLG的CAN隔离驱动模块CTM1051。
整个模块的功能框图如图1所示。
从图1中看出,方案中非国产芯片只有SJA1000 和 LC4256,其它元器件,包括
电阻电容、晶振、24C02均为国产元器件。
国产化率达到了90%以上。
CH368芯片连接PCI-Express总线的通用接口芯片,支持I/O端口映射、存储器映射、扩展ROM以及中断。
CH368将高速PCIE总线转换为简便易用的类似于ISA总线的32位或者8位主动并行接口。
适用于高速实时的I/O控制卡、通讯接口卡、数据采集卡等。
芯片采用CMOS工艺,3.3V/1.8V供电,采用 LQFP100(14×14)mm 封装[5]。
其基本特点为:①PCIE x1接口;②提供I/O端口及内存映射;③支持中断共享,并支持边沿或电平触发;④可用EEPROM设定板卡ID;
⑤提供SPI及I2C接口;⑥内置硬件计时器单元;⑦并行总线时序可通过编程进
行调整;⑧有工业级产品,工作温度为-40~+85℃。
与PEX8311相比,CH368所支持的功能明显较弱,PEX8311的PCIE接口除可
设置为endpoint模式外,还可配置为root模式,Local Bus可配置为C和M模式,支持更灵活的总线时序调整,还有更强大有DMA传输和mailbox等功能。
但PEX8311的BGA337封装会占用(21×21)mm的板面积。
PCIE接口的
CAN节点设计只需要Local Bus具有内存映射及中断功能即可,CH368芯片完全可以胜任,成本上更具优势。
该部分电路可参考沁恒公司提供的技术文档。
设计时仍需要注意以下几点:
①PCIE总线的TX和RX差分对,要注意信号方向,以保证与PCIE root部分正确连接了,耦合电容应靠近芯片放置在信号发送端;②1.8V的电源要为PCIE总线提供驱动的,要保证电源纹波较小。
特别是VCC18A电源要单独进行滤波处理;
③EEPROM为设置ID用,如无特殊要求,可以不用,沿用厂家默认ID即可;④
数据总线及地址总线均可按实际使用引出,如文中采用8位内存总线方式,其余
的24位数据及IO读写信号均可以不连接;⑤16脚连接的12K电阻采用1%精度;
⑥该PCB设计因为有PCIE高速总线信号,需要精心设计,并进行阻抗匹配,可
参考PCIE规范。
CPLD采用了ispMACH4000V系列LC4256V-75T144I,该系列CPLD采用3.3V 单电源供电,低功耗,并支持IO接口5V耐受,工业级芯片结温范围可达到-
40~+105度。
该芯片拥有96个用户IO,256个宏单元,非常适合也完全满足本方案的要求。
CPLD电路设计只需注意以下几点:①在芯片每个电源引脚都要安装滤波电容;②JTAG电路引线控制长度,下载连接器就近摆放;③为CPLD进行信号定义时,最好进行一次逻辑功能预布,将功能引脚合理分配在多个逻辑块中,以防止出现在进行管脚约束后,不能生成JED文件困扰。
CAN控制器选用SJA1000T芯片,该芯片采用SO28封装,体积较大,是业界使用最广泛的独立CAN控制器。
支持CAN2.0B协议,并提供BasicCAN和PeliCAN两种编程模式。
集成的64 Bytes的接收FIFO,在大多数处理器平台上能获得较快的通讯速度。
SJA1000T的典型电路如图3所示。
①MODE信号接高电平,采用Intel模式;②INT#中断输出信号一定要加上拉,才保证SJA1000T 芯片中断功能正常;③RX1引脚电压被设计为2.0V,分压电阻选用1%精度;
④AD信号为双向信号,虽然输出电平是5V CMOS,仍可以直接连接到CPLD芯片;⑤多片SJA1000T芯片可以共用一个晶振。
AD[7:0]、ALE、RD#、WR# 信号多片也是共用的。
这部分电路我们采用了一个ZLG(致远电子)的CAN收发器模块CTM1051Q来实现,该模块内部包含隔离DCDC、信号隔离电路、CAN总线收发电路、基础的总线防护等。
同传统的“隔离电源+光电隔离+TJA1050”设计相比,具备更高的集成度、更高的可靠性和更具竞争力的价格。
CTM1051Q模块是一款使用简单、可靠的国产CAN收发器件。
在简单使用环境下,只需要接上电源、TTL端收发信号,再连接到CAN总线就可以使用,不需要其它外部元件。
恶劣应用条件下,可参考图4添加防雷、防浪涌等措施。
因为SJA1000T总线接口是Address、Data复用的,将SJA1000T与CH368直接连接的话,是无法对SJA1000T正常访问的,因此需要CPLD逻辑完成该项工作。
同时,为了降低软件驱动开发的复杂度,CH368芯片的设置全部采用了复位以后的默认值。
这些设置包括信号的极性、信号的输出有效电平的宽度等。
并以此为基础进行CPLD的逻辑开发工作。
CPLD设计采用VHDL描述语言,整个设计采用自顶而下的设计方法,使用ispLEVER+ModelSim软件进行设计与仿真[7~10]。
其外部连接及逻辑功能框图见图5。
CPLD的主要功能有:①完成地址译码,对CH368访问空间的进行分配;②实现
CH368读写操作时序到SJA1000T访问时序的转换;③实现多个CAN控制器的
中断状态及响应;④实现硬件复位功能。
CH368提供了32K字节内存与255字节IO映射空间。
我们只使用内存(Memory)空间进行外部空间的映射与访问。
地址A15因为只能由内部IO寄
存器来控制,作为额外的译码扩展使用。
所以暂且不用,只对A[14:0]进行译码。
地址译码逻辑很简单,只需要用VHDL中的assign语句就可以很好的实现了。
CH368芯片的读写操作时序以及SJA1000的访问接口时序见图6~图8。
图6 中的TEN为读写脉冲宽度,默认值为30ns×7+60ns-30ns=240ns。
SJA1000 一个最小写操作周期 TWR=tW(AL)+tLLWL+tW(W)
+tWHLH=8+10+20+15=53ns;最小读操作周期 TWW=tW(AL)+tLL-
RL+tW(R)+tRHDZ=8+10+40+30=88ns。
因此在一个 TEN 时间内完全可以满足SJA1000的操作时序要求。
通过同步状态机,可以方便地将CH368的时序转换为SJA1000操作时序,其工
作状态图如图9所示。
注意到SJA1000的写操作保持时间TWHDX为8ns,而CH368的LocalBus总
线时钟为100MHz,因此,在进行写操作时,专门设计了有1个时钟周期宽度的
保持状态KEEP,以保证写操作时数据的保持时间要求。
时序转换状态机通过ModelSim仿真得到的操作时序如图10所示。
CH368芯片只有一个中断响应引脚INT,本设计采用了简单的中断共享方式。
当
3个SJA1000芯片中任何一个控制器产生了中断请求,都将置CH368的INT引
脚为有效状态,向系统申请中断。
并在CPLD中实现了一个中断状态寄存器,用
来指示3个SJA1000芯片的INT引脚状态。
当控制器有中断产生时,CH368向系统申请中断,系统调用中断服务程序进行处理,首先读取CPLD中的中断状态寄存器,判断是哪一个控制器发出的中断请求,
然后转入相应控制器的中断处理流程。
虽然中断服务程序也可以通过逐一查询每个SJA1000的内部相关寄存器的方式来进行判断,但会消耗较多的处理器时间,从
而导致中断占用间延长,而降低系统的响应能力。
SJA1000芯片有2种复位方法,一种是通过引脚RST输入一个低电平脉冲,即硬件复位。
一种是通过对命令控制寄存器的bit0置1来实现的软复位。
硬件复位一
般只在上电时进行一次,但在实际对SJA1000芯片的应用中发现,软复位有时并不能达到复位的效果,而此时又不能对整机进行复位操作。
为了确保通过软件就能够可靠地复位芯片,在每一个CAN控制器映射区内实现了一块只写的复位地址区域,向该地址范围执行写操作时,就会产生一个复位信号送到SJA1000的RST引脚。
复位信号为低电平有效信号,信号宽度大于20ms。
如果该信号全部采用CPLD逻辑实现的话,在100MHz运行频率下,触发器资源占用较大,因此本设计采用了74LS123单稳态触发器来配合实现,由CPLD产生触发信号,并通过调整74LS123的RC参数来控制脉冲宽度。
系统运行Liunx系统,上电进入操作系统后,首先加载驱动程序并进行初始化,
完成如下工作:①初始化PCI接口,完成PCI空间内存映射等工作;②完成
SJA1000的初始化,如波特率、屏蔽码、工作模式等的设置;③清空接收及发送FIFO;④创建数据发送与接收线程;⑤完成中断服务程序的连接,设置中断允许位,然后打开CH368及SJA1000的中断。
驱动程序完成初始化工作后,应用程序会通过open,read,write等标准函数接
口与驱动程序通信,完成CAN数据的发送与接收。
本文的实现方法在某自主化装甲车火控系统中进行了应用与验证。
CAN节点被集
成在一个基于龙芯2H的计算机主板上,2H处理器运行频率800MHz,内存1GB。
整个计算机除了完成CAN总线数据的通信以外,还实现了弹道解算、人机界面、多机通信、伺服控制等功能。
在应用过程中,CAN总线节点运行稳定、未出现掉
帧,错帧的现象,误码率低,通信速度可达到6帧/秒(1Mbps)。
实践证明,使用CH368芯片进行CAN节点扩展,具有电路简洁、技术实现容易、成本较低、国产化率高的特点。
CH368特别适合在PCIe总线系统中进行小数据量传输的简单应用场合使用。
【相关文献】
[1]邹晨,高云.基于FPGA的PCIe总线DMA传输的设计与实现[J].电光与控制,2015,7.
[2]王海霞.基于PCI总线的四通道CAN通讯卡的设计[J].电子设计工程,2015,14.
[3]陈昕,杨秋实.基于CH368芯片的PCIE总线控制卡设计[J].电子测试,2016,17.
[4]邬宽明.CAN总线原理和应用系统设计[M].北京航空航天大学出版社,1996.
[5]王诚,薛小刚,钟信潮.FPGA/CPLD设计工具—Xilinx ISE 5.x使用详解[M].人民邮电出版社,2003.
[6]MiChael D.Ciletti,等;张雅绮,李锵,等(译).VerilogVHDL 高级数字设计[M].电子工业出版社,2005.
[7]师于杰.基于vxWorks实时系统的CompactPCI平台高可用系统研究[C].西安电子科技大学,2006.。