一种新型canfd控制器的制造方法

文档序号:10723980阅读:661来源:国知局
一种新型can fd控制器的制造方法
【专利摘要】本发明公开了一种新型CAN FD控制器,CAN FD总状态机调控CAN FD控制器整体功能及工作状态,发送管理器发送所有类型的帧及ACK信号,接收管理器监视总线,分析总线接收的数据,时钟同步器根据用户设定及总线信号,控制位时钟周期,提供总线值采样点及采样值,错误管理模块对节点错误进行统计计数,将计数值反应为节点错误状态ES和总线状态BS信息,寄存器组集中管理寄存器,接口管理器解析来自微控制器的指令,将地址信息译码为对应寄存器的选通信号;该新型CAN FD控制器基于CAN FD总线通信协议规范与微波功率分布式控制系统的实际需求,性能优越,具有重要的实际工程意义。
【专利说明】
一种新型CAN FD控制器
技术领域
[0001 ]本发明属于CAN控制器技术领域,尤其涉及一种新型CAN ro控制器。
【背景技术】
[0002] 微波作为一种具有独特作用机理的新型热源,在物料烘干、高温烧结、冶炼萃取等 方面具有天然优势,在食品、农业、轻工、化学等领域得到广泛应用。
[0003] 以微波作为热源的褐煤干燥生产线相较于传统的对流干燥,具有安全高效节能环 保等显著优势。根据南京三乐公司微波褐煤干燥生产线的实际需求,设计了目前的微波功 率分布式控制系统。该分布式控制系统通过CAN总线连接上位机与各分布于生产线上的嵌 入式控制器节点从而实现数据交换,作为业界公认的最有前途的现场总线,CAN总线能有效 支持这种分布式、实时控制系统,更重要的是,CAN总线协议特有的非破坏性仲裁技术、高效 的错误检测能力以及可靠的编码机制。在微波干燥生产线的高实时性要求和强电磁场环境 下能够有效地保证数据传输质量。
[0004] 随着研究的不断进展,控制系统对总线传输性能的要求不断提高。首先将CAN总线 传输介质由双绞线替换为光纤,有效地提高信号传输过程中抗强电磁场干扰能力,但由此 增加的光电转换模块将在信号回路中增加约300ns的总延时,此时要达到1Mbps的CAN 2.0 协议极限传输速度,CAN网络的尺寸必须限制在直径10米以内,而生产线长度远超过10米。 因此CAN总线传输速度将比原来降低。
[0005] 另一方面,上位机及各嵌入式控制器增加了新的功率智能协调控制算法,需要接 收更精确、更丰富、更及时的生产线上数据并及时发布功率控制命令;与此对应的,生产线 沿线上需加装更多高精度传感器,回传更加密集的数据;节点之间为实现协调配合也会进 一步增加传输数据量。
[0006] 以上两点都要求现场总线能提供更高效、准确的数据传输服务,而一个标准的CAN 2.0数据帧中最多能携带8字节数据,其冗余信息约占帧长的46%,且实际应用速度远低于 设计最高速度的IMbps,相较之下,BOSCH公司发布的CAN 2.0协议的升级协议:CAN-FD (CAN with Flexible Data rate)协议,其传输速率能够轻易超过1Mbps,且冗余信息可缩小至仅 占帧长的11 %,CAN FD改进后的编码方式错误漏检率在CAN 2.0的基础上又下降了5个数量 级,能够满足当下及未来的升级需求。
[0007] 因此,依据该分布式控制系统的实际需求而设计可集成于项目嵌入式控制板卡的 基于FPGA的CAN FD控制器,具有实际的工程意义。
[0008] 2012年5月,博世和Vector首次演示了使用遵循ISO 11898-2规范的收发器芯片, 速率达15Mbps的CAN-Π )网络模型。除了能够增加传输速度外,该协议还能够支持更高的负 载。在单个数据框架内传送率可达64字节,避免了经常发生的数据分裂状况,解决了数据一 致性的问题。
[0009] 2014年6月,力科发布业界首个CAN ro触发和解码解决方案。
[0010] 2014年7月,嵌入式厂商Spansion公司宣布开始供应Spansion Traveo汽车微控制 器S6J3100系列的样品。该系列主要特点就是使用CAN FD接口来增强车载网络。
[0011] 2014年12月,罗德与施瓦茨公司的发布RTE和RT0示波器新选件,它们是世界上首 款支持CAN-FD接口协议测试分析解决方案的设备。
[0012] 2016年嵌入式电子与工业电脑应用展览会上,意法半导体发布汽车嵌入式解决方 案,包括首个集成ISO CAN FD(灵活数据速率)技术的Power Architecture微控制器。
[0013] 2011年M.Barranco使用随机行为网络搭建模型对总线型及星形拓扑结构的CAN网 络可靠性进行了定量研究,着重比较了他们在永久性硬件故障情况下的可靠性和容错性, 最终结果表明星形拓扑结构的CAN网络具有更高的可靠性和容错性。
[0014] 2011年莱斯特大学Imran Sheikh以改善CAN通信系统性能为目标,提出了一个对 CAN底层协议进行升级的整体框架,主要包括三个方面的目标,一是将数据传输速率从 1Mbps提高到10Mbps,二是将单帧携带数据量从8字节提高到16字节;三是减少位填充编码 带来的不必要的传输抖动。Imran Sheikh以此为基础,提出了多种方案进行实验分析,并总 结了各自的优劣。
[0015] 2011年S. Mube en通过扩展现有的分析方案,提出能够支持分析混合消息的响应时 间的算法,该算法能够适用于任何基于CAN协议的高层协议,并且对周期性的、偶发性的和 混合性的消息的传输都有较好的效果。
[0016] 2011年约克大学实时系统研究组R.I.Davis指出,现在对于CAN的分析都是基于这 样一个假设:网络中每个节点准备发送的最高优先级的信息将会获得总线仲裁,但实际上, 一些CAN驱动设备使用先进先出队列而不是基于优先级的队列使这一假设失效了,因此 R. I.Davis对CAN帧在既有使用FIFO的节点又有使用优先队列的节点的网络中传播时的响 应时间进行了分析,并提出了最优分配策略,通过案例和实验评估,结果表明FIFO队列对于 CAN的实时性能有不利影响。
[0017] 2011年H. Huangshui等人通过搭建CAN故障模型,研究CAN通信故障机制,设计了一 个用于CAN节点的监视模块,该监视模块可以通过变换自身为被动或主动状态来诊断通信 链路的故障,有效地增强CAN通讯的可靠性及自愈性。
[0018] 2011年Atiya Azmi等人以CAN总线通信系统为基础,提出了一种采集患者生命体 征并传送至远端监测站的解决方案,提出了数据聚合方法及几个有关CAN协议的改良方案, 以便更好的利用可用带宽,实验表明,该解决方案能够容纳足够多的监测点,并提供更高的 数据传输速度。
[0019] 2012年,合肥工业大学张建军结合现有的时钟同步算法在各节点建立并更新同步 主节点优先表,提出基于〃时钟漂移率〃的同步算法。有效地解决了传统同步算法在主节点 失效时占用过多网络资源的问题;同时能自适应地根据CAN网络当前状态修改权重因子,保 证时钟同步精度在l〇us以内。
[0020] 2012年横滨国立大学1\]\&^8111]1〇1:〇等人提出了一套能够检测及预防未授权数据在 CAN总线上传输的新方法。该方法只需在当前控制器单元上做简单的调整就能被有效执行。 并且能够在多总线通过网关互连的情况下工作。
[0021] 2012年,解放军68036部队邹静提出了一种基于CAN通信网络的应用层组播方案, 在只增加了极小开销的情况下扩展了 CAN的基础架构,从而能容纳大规模的组用户,实验表 明,这种基于完全分布式CAN通信网络的应用层组播部署方案简单可行、具有明显的优势。
[0022] 2012年,约克大学实时系统研究组Robert I .Davis针对CAN消息在总线间经过网 关传输时产生延时抖动并逐级积累的情况,提出了一种位流调整的方法,该方法能够显著 增强CAN总线网络的实时性能,消除抖动的积累。这种方法不需要获得全局时钟或精确的时 间标记,通过扩展还可用于解决网络之间的时间漂移问题。
[0023] 2012年美国加州大学伯克利分校C.W.Lin提出了一个安全机制,通过改良CAN协 议,能够有效地阻止针对基于CAN通信网络架构的网络的攻击,并且成功的在保持高安全水 平的同时,将总线通信效率(如总线负载和消息等待时间等)维持在合理的水平。2013年, B.Groza完整设计了一种利用钥匙串和时间同步的广播认证协议,能有效地提高CAN通信网 络的安全性。通过在飞思卡尔S12X和英飞凌的TriCore上进行硬件测试,证明该协议在有限 的计算资源下能够正常运行。
[0024] 2013年,重庆邮电大学张居林等人为确保车载CAN网络及其ECU节点在复杂工况下 的系统行为能够满足高容错性的要求,提出了一种基于FPGA的CAN网络链路层位级干扰测 试方法,实现干扰嵌入的寄存器级描述并能够监测总线位流,硬件测试表明,该设计能够灵 活地向CAN通信总线嵌入干扰,能够有效地检测CAN通信网络的可靠性及容错性。
[0025] 2013年意大利的比萨圣安娜高等学校M.Di Natale.等人对几种非常规消息队列 最坏响应时间分析理论进行了实测评估,同时也对广泛存在于实际系统应用中且偏离理想 状况的情况进行了理论和实证研究,并得出了基于论询设计的CAN FD控制器的最坏情况下 响应时间的上限值。
[0026] 2013年,浙江大学赵九洲在提出广义零膨胀泊松模型基础上,对CAN通信网络中错 误帧事件进行离散化建模。通过分析参数并对优化控制图进行比对,实现了 CAN通信网络通 信质量的实时在线监测及早期预警功能,并结合故障原理和期望分布方法对节点脱离总线 时间进行了预测。
[0027] 2013年G.Cena等人提出了一种新的CAN总线编码方案替代原有的位填充编码,测 试评估表明该编码方案简单高效适合在嵌入式架构中实现。
[0028] 2013年,吉林大学郝勃等人分析了 CAN通信协议和0SEK/VDX规范,针对具有较多节 点数量及功能类型的CAN通信网络,提出并实现了一种CAN节点的分组和合并的网络管理策 略。实验结果表明,该管理策略能够快速构建CAN通信节点的逻辑结构,提高CAN通信网络的 管理效率。
[0029] 2014年K.W. Schmidt提出了一种计算优先顺序的算法,解决了现有队列中新加入 消息需要重新计算优先级的问题。测试表明该算法简洁有效,能够对消息进行高效调度。
[0030] 2014年P.S.Murvay指出当前的CAN安全性研究大多集偏向于对协议层加密,而这 种方式增加了通信和计算的开销,也不利于系统兼容。因此P.S.Murvay及其团队提出了一 种通过采集帧的独特的物理特性的方法来认证帧的合法性,主要是通过电压采集、信号滤 波、均方差及卷积检测对每一个潜在的发送节点进行识别,实验表明,该方法对于某些节点 的识别是非常成功的,配合CAN收发器及CAN帧中的ID,能够正确地找到发送节点。
[0031] 2014年康明斯女子工程学院S.Kelkar.等人针对CAN通信网络数据传输量越来越 大的情况,提出了一种Boundary of Fifteen数据压缩算法,该算法比Quotient Remainder Compression算法及Enhanced Data Reduction算法具有更高的压缩比,和更少的计算量。 [0032] 2014年,合肥工业大学杨锦针对分布式车载网络的同步机制,引入四种特殊的报 文帧,定量研究了同步帧传输网络延时,引入最小"相对即时偏差和"的主时钟协商选择方 法,提出了基于主时钟选择的精确时钟同步机制。通过搭建半实物半仿真平台对基于CANoe 的车载CAN通信系统验证该同步机制,实验结果表明,该同步机制具有较高的可靠性和同步 精度,能够有效降低网络同步开销。
[0033] 2014年合肥工业大学胡京津基于最早截止时间优先的CAN网络动态调度机制。提 出了基于幂函数分区的"混合优先级"标识符动态段编码方案,充分论证了 CAN网络消息集 调度优先级判定条件,并对量化误差进行了分析;最终在FPGA上设计实现,验证了方案的可 行性。
[0034] 2015年Yu-jing Wu等人提出了一种CAN帧压缩算法,能够将CAN帧压缩到原长度的 81.06%,并实际测试了在64-位EMS上压缩算法的速度为一个帧0.16ms。
[0035] 2015年,辽宁工程技术大学张国胜等人通过分析车载CAN网络数据变化特点,引入 数据压缩技术,在此基础上提出变化优先(CF)调度算法,将CF算法应用于车载CAN网络通信 系统设计进行实验验证,实验结果表明,使用该算法后车身CAN总线负载显著降低,网络传 输实时性明显提尚。
[0036] 2015年,湖南大学赵军岩等人通过分析现有的简化搜索及穷尽搜索算法,指出二 者在分析网关消息的非周期性干扰时没有考虑部分高优先级消息的影响,并证明网关消息 同时发送时产生的非周期性干扰最大,由此提出一种改进的基于网关互连的CAN网络最坏 响应时间分析方法。Mat lab仿真结果表明,改进后的算法拥有可以接收的时间复杂度,并能 够降低结果的悲观性。

【发明内容】

[0037] 本发明的目的在于提供一种基于CAN ro总线通信协议规范与微波功率分布式控 制系统的实际需求的新型CAN FD控制器。
[0038] 本发明是这样实现的,一种新型CAN ro控制器,该新型CAN ro控制器包括:
[0039] CAN ro总状态机,用于调控新型CAN ro控制器整体功能及工作状态;
[0040] 发送管理器,与所述CAN FD总状态机相连接,用于所有类型的帧及ACK信号的发 送;
[0041] 接收管理器,与所述CAN FD总状态机相连接,用于监视总线,并分析总线上接收到 的数据;
[0042] 时钟同步器,与所述CAN ro总状态机及接收管理器相连接,用于根据用户设定及 总线信号,控制位时钟周期,并提供总线值采样点及采样值;
[0043] 错误管理模块,与所述CAN ro总状态机及接收管理器相连接,用于对节点错误进 行统计计数,将计数值反应为节点错误状态ES和总线状态BS信息,并汇报给CAN状态机及状 态寄存器;
[0044] 寄存器组,与所述CAN ro总状态机、发送管理器及接收管理器相连接,用于对控制 寄存器、状态寄存器、中断寄存器及命令寄存器进行集中管理;
[0045] 接口管理器,与所述寄存器组、发送管理器及接收管理器相连接,用于外部微控制 器与CAN ro控制器交换信息的接口,解析来自微控制器的指令,将收到的地址信息译码为 对应寄存器的选通信号,同时向微控制器反馈中断信息及CAN FD控制器工作状态。
[0046]进一步,所述发送管理器中嵌入发送缓冲器,所述发送缓冲器用于存储待发数据, 并为所述寄存器组中的状态寄存器模块提供发送缓冲器状态;
[0047]所述发送管理器负责具体执行任何与发送有关的命令,并在所述CAN FD总状态机 的统一协调下发送数据,能从所述发送缓冲器中读取仲裁场、控制场和数据场的内容,然后 将组装成CAN FD帧,并向总线发送CAN Π )帧;在收到错误或是总线超载信号时,向总线发送 错误帧或超载帧;还用于向状态寄存器提供发送完成状态的信息;
[0048]所述接收管理器将依照CAN ro协议,执行总线仲裁格式和各项检测功能如填充错 误检测、CRC检测、错误帧检测和过载帧检测、滤波检测,所述接收管理器中嵌入接收缓冲 器,所述接收缓冲器用于存储接收数据,并为所述寄存器组中的状态寄存器反馈接收缓冲 器状态及数据溢出状态,向所述寄存器组中的中断寄存器提供接收中断及数据溢出中断; [00 49] 所述时钟同步器用于CAN FD通信协议所约定的重同步、硬同步及Flexible Data 功能的具体实现,所述时钟同步器内含三个总线定时寄存器^1?0、8了1?1、8了1^),用于存储用 户设定的位时间控制参数,从而产生相应的位时钟周期;
[0050] 所述寄存器组中的控制寄存器存储来自外部CPU的控制命令;命令寄存器用于外 部CPU给CAN FD控制器下达用户可干预的操作命令;状态寄存器用于实时展现控制器内部 状态;中断寄存器用于展现各种中断状态,方便用户随时提取;
[0051] 所述接口管理器作为外部微控制器与CAN FD控制器交换信息的接口,解析来自微 控制器的指令,将收到的地址信息译码为对应寄存器的选通信号,也向微控制器反馈中断 信息及CAN FD控制器工作状态。
[0052] 进一步,依据CAN FD控制器在不同状态下的功能职责,该新型CAN Π )控制器包括 10个状态,分别为:
[0053] Bus_〇ff:总线脱离状态,考虑到CAN FD控制器在某些情况下应拒绝响应总线上的 任何信号,将这些情况都归总为Bus_〇fT状态;
[0054] Star_up:待复位状态,由于CAN FD协议要求节点从脱离总线恢复必须接收启动信 号,故设置此状态,CAN FD控制器此时只能等待总线上的启动信号;
[0055] Busjdle:总线空闲状态,考虑到CAN FD控制器开始工作后,如果总线上没有信 号,CAN FD控制器将会等待发送或接收一个帧,Bus_idle用于归总这种情况;
[0056] Arbitjnode:仲裁状态,考虑到非破坏性仲裁时,CAN Π )控制器将同时进行发送与 接收,且仲裁的不同结果将导向CAN FD控制器的不同功能,因此单独设为一个状态;
[0057] Trans_mode:发送状态,由于数据帧的发送将是CAN FD控制器的主要职能,也需要 其他模块相应功能的配合,因此单独设为一个状态;
[0058] Rec_mode:接收状态,同样数据帧的接收也是CAN FD控制器的主要职能,也需要其 他模块相应功能的配合,因此单独设为一个状态;
[0059] err_mode :错误状态,考虑到CAN总线的较为复杂错误规则,为方便发送错误帧时 各模块的相互配合而设置此状态;
[0060] over loadjnode:超载模式,为方便发送超载帧时各模块的相互配合而设置;
[0061 ] Interjnode:间隙状态,由于CAN 1?协议中规定了间隙场的存在及其职能,且间隙 场中不同的显性位出现时间将导向CAN FD控制器的不同功能,因此单独设为一个状态; [0062] Suspend_mode:挂起状态,考虑到CAN FD协议中对节点挂起有详细的规定,且该情 况下CAN FD控制器的行为较为特殊,因此单独设为一个状态。
[0063]进一步,所述接收管理器进一步包括:
[0064]接收状态机模块,由CAN FD总状态机单方面决定其状态,状态与整个CAN Π )控制 器状态 对应;
[0065]过载帧检测模块,用于对过载帧进行检错;
[0066]错误帧检测模块,当所述接收管理器进入err_rec状态时,错误帧检测模块片选 cs_ef_check被置高,开始检测错误状态下的错误;
[0067]格式检测模块,当所述接收管理器进入arbit_rec状态时,cs_fs_check即被置高, 直到Rec_rec状态结束,从仲裁位的第一位起开始格式检查和填充位检查;
[0068] 滤波检测模块,用于进行简单的报文滤波,筛选出需要进行接收的帧进行接收和 存储;
[0069] CRC检测模块,用于CRC检验及填充位过滤;
[0070] 接收缓冲器,用于存储接收管理器收到的有效数据。
[0071] 进一步,所述发送管理器包括:
[0072] 发送状态机;
[0073] 发送缓冲器,用于存储即将发送到总线上的待发送数据。
[0074] 进一步,所述时钟同步器通过读取时钟寄存器的内容,调控系统位时钟周期,并通 过接收信号配合两种同步功能,向其他模块发布总线采样值。
[0075] 进一步,所述错误管理模块用于错误计数,不关心错误细节,监测error_add[l: 0]、send_ack、TCS_reg_status三个信号,并采集其值做相应处理。
[0076] 进一步,所述控制寄存器用于为外部微处理器提供控制位,以此调控CAN FD控制 器的功能,控制寄存器地址分配及各位功能表所示,各位均为置1有效;
[0077] 所述状态寄存器是展示CAN ro控制器工作状态的主要窗口,状态寄存器为只读寄 存器,只能由内部相关模块提供状态信息;
[0078] 所述中断寄存器为只读寄存器,各中断信息来自CAN ro控制器内部其他模块,外 部微控制器可以通过控制中断寄存器决定各中断位的使能,可随时依需要读取中断位,中 断寄存器一旦已被读取就会自动复位,当任一使能中断位被置高时会产生中断检测信号, 提醒微控制器读取中断信号;
[0079] 外部微控制器通过所述命令寄存器向CAN ro控制器下达命令,置1表示有效命令。
[0080] 进一步,所述接口管理器用于解析来自微控制器的指令,将收到的地址信息译码 为对应寄存器的选通信号,在相应信号置低(Wr_l 〇W、rd_l〇W)时,与外部微控制器交换信 息。
[0081 ]本发明提供的新型CAN ro控制器,由CAN ro总状态机、发送管理器、接收管理器、 时钟同步器、错误管理模块、寄存器组、接口管理器构成,CAN ro总状态机调控CAN ro控制 器整体功能及工作状态,发送管理器用于所有类型的帧及ACK信号的发送,接收管理器用于 监视总线,并分析总线上接收到的数据,时钟同步器根据用户设定及总线信号,控制位时钟 周期,并提供总线值采样点及采样值,错误管理模块对节点错误进行统计计数,将计数值反 应为节点错误状态ES和总线状态BS信息,并汇报给CAN状态机及状态寄存器,寄存器组对控 制寄存器、状态寄存器、中断寄存器及命令寄存器进行集中管理,接口管理器用于外部微控 制器与CAN ro控制器交换信息的接口,解析来自微控制器的指令,将收到的地址信息译码 为对应寄存器的选通信号,同时向微控制器反馈中断信息及CAN ro控制器工作状态;该新 型CAN ro控制器基于CAN ro总线通信协议规范与微波功率分布式控制系统的实际需求,性 能优越,具有重要的实际工程意义。
【附图说明】
[0082] 图1是本发明实施例提供的CAN ro控制器的信号流向图。
[0083] 图中:11、CAN ro总状态机;12、发送管理器;13、接收管理器;14、时钟同步器;15、 错误管理模块;16、寄存器组;17、接口管理器。
【具体实施方式】
[0084] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明 进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于 限定本发明。
[0085] 下面结合附图及具体实施例对本发明的应用原理作进一步描述。
[0086] CAN FD控制器的整体设计:CAN Π )控制器的设计思路,分析设计目标,并完成CAN FD控制器的模块划分及顶层引脚设置。
[0087] CAN FD控制器整体设计思路:CAN Π )控制器设计工作量较大,主要包括方案设计 及功能实现两个部分。
[0088] -是方案设计:从制定设计目标开始,到模块划分,到制定状态,再一直细化到控 制器内部每一个信号的每个动作。由于模块与模块之间,信号与信号之间涉及到诸多联动, 牵一发而动全身,因此设计流程是一个自顶向下逐步细化,并伴随着不断迭代和排错的过 程,从而使最终设计方案要能够涵盖所有设计目标,模块能够分工明确,状态制定有条理, 转换条件清晰,信号动作能够相互呼应,逻辑自洽。
[0089] 二是功能实现:方案设计完成并梳理无误之后开始功能实现,使用VHDL语言,从最 底层的子模块开始实现模块逻辑,并进行仿真测试,采用自底向上的方式测试、迭代,最终 完成整个控制器的硬件语言编程并能够实现设计目标。
[0090] CAN ro控制器模块及引脚设计
[0091 ]设计目标:结合项目实际需求及CAN FD通信协议内容,设计目标分为两个方面:一 是设计实现CAN总线通信协议的基础,即CAN Π )与CAN 2.0重合的部分,包括远程帧、错误 帧、过载帧、发送器/接收器的定义、报文校验、基本编码规则、错误处理、错误检测、错误标 定、故障界定、位定时等内容,这是最终CAN Π )控制器能够实现通信的基础;二是通过结合 褐煤微波干燥生产线的三个实际需求:(1)提高单帧携带的数据量;(2)提高数据传输速度; (3)增强抗干扰性,降低错误漏检率。设计实现CAN Π )较之CAN 2.0协议有升级改良的部分: 包括(1)新的DLC编码,其实现可以配合更长的数据场,单帧传递更多的数据;(2)通信过程 中Flexible Data-Rate功能,其实现使得整个数据场位的传输速度大幅提高;(3)新的CRC 算法及封装顺序,其实现将能够极大的降低错误漏检率,保证帧传输的正确率。
[0092] 根据对CAN FD协议的理解,将CAN Π )控制器分为:CAN Π )总状态机11、接收管理器 13、发送管理器12、时钟同步器14、错误管理模块15、寄存器组16、接口管理器17,共计七个 模块,七个模块之间的简易信号流向图如图1所示。
[0093] CAN ro总状态机11:用于调控CAN FD控制器整体功能及工作状态,作为管理CAN ro控制器运行的核心部件,CAN ro总状态机11需要采集来自各个模块的信号,比如系统时 钟、错误标志、软件复位、发送和取消发送命令、仲裁状态、总线状态等等,CAN ro总状态机 11综合处理了以上信号之后,负责调控CAN ro控制器的状态及状态转移,为其他模块下达 动作命令,协调整个系统的工作。
[0094]发送管理器12,用于所有类型的帧及ACK信号的发送,将负责具体执行任何与发送 有关的命令,并在CAN FD总状态机11的统一协调下发送数据,从发送缓冲器中读取仲裁场、 控制场和数据场的内容,然后将其组装成CAN FD帧,并向总线发送该帧;也会在收到错误或 是总线超载信号时,向总线发送错误帧或超载帧;还负责向状态寄存器提供发送完成状态 的信息。
[0095]发送管理器12中嵌入发送缓冲器,一方面存储待发数据,另一方面为状态寄存器 模块提供发送缓冲器状态。
[0096]接收管理器13,用于监视总线,并分析总线上接收到的数据,将依照CAN Π )协议执 行总线仲裁格式和各项检测功能如填充错误检测、CRC检测、错误帧检测和过载帧检测、滤 波检测等。接收管理器13中嵌入接收缓冲器,一方面用于存储接收数据,另一方面为状态寄 存器反馈接收缓冲器状态及数据溢出状态,向中断寄存器提供接收中断及数据溢出中断。
[0097]时钟同步器14,用于根据用户设定及总线信号,控制位时钟周期并提供总线值采 样点及采样值,将负责CAN FD通信协议所约定的重同步、硬同步及Flexible Data功能的具 体实现。内含三个总线定时寄存器BTR0、BTR1、BTRFD,用于存储用户设定的位时间控制参 数,从而产生相应的位时钟周期。
[0098]错误管理模块15,用于对节点错误进行统计计数,并将计数值反应为节点错误状 态ES和总线状态BS信息,并汇报给CAN状态机及状态寄存器。
[0099] 寄存器组16,用于集中管理四个关键寄存器:控制寄存器reg_c〇ntr〇l、状态寄存 器status_reg、中断寄存器Interrupt_reg及命令寄存器command_reg。
[0100] 其中,控制寄存器存储来自外部CPU的控制命令;命令寄存器用于外部CPU给CAN ro控制器下达用户可干预的操作命令;状态寄存器用于实时展现控制器内部状态;中断寄 存器用于展现各种中断状态方便用户随时提取。
[0101] 接口管理器17,作为外部微控制器与CAN ro控制器交换信息的接口,负责解析来 自微控制器的指令,将收到的地址信息译码为对应寄存器的选通信号,也负责向微控制器 反馈中断信息及CAN控制器工作状态。
[0102] 引脚设计:就外部微控制器对顶层引脚的操作而言,CAN ro控制器使用CAN 2.0或 是CAN FD协议没有明显区别,因此CAN Π )控制器的顶层信号引脚设计基本参考SJA1000的 设置,各引脚信号解释见表1。
[0103] 表1 CAN ro控制器顶层引脚表
[0105] CAN ro总状态机11负责协调整个CAN FD控制器内部的所有模块联动工作,现对其 内部状态、状态转移条件、信号引脚的设计进行详细说明。
[0106] 状态设计:通过分析CAN FD控制器的主要工作状态,将CAN ro控制器设计为总共 包括以下10个状态,状态的划分主要依据是当前状态下CAN FD控制器的功能职责。
[0107] Bus_〇ff:总线脱离状态,考虑到CAN FD控制器在某些情况下应拒绝响应总线上的 任何信号,将这些情况都归总为Bus_〇fT状态。
[0108] Star_up:待复位状态,由于CAN FD协议要求节点从脱离总线恢复必须接收启动信 号,故设置此状态,CAN FD控制器此时只能等待总线上的启动信号的唤醒或微控制器的软 件启动信号。
[0109] Busjdle:总线空闲状态,考虑到CAN FD制器开始工作后,如果总线上没有信号, 控制器将会等待发送或接收一个帧,Bus_idle用于归总这种情况。
[0110] Arbit_mode:仲裁状态,考虑到非破坏性仲裁时CAN ro控制器将同时进行发送与 接收,且仲裁的不同结果将导向CAN FD控制器的不同功能,因此单独设为一个状态。
[0111] Trans_mode:发送状态,由于数据帧的发送将是CAN FD控制器的主要职能,也需要 其他模块相应功能的配合,因此单独设为一个状态。
[0112] Recjnode:接收状态,同样数据帧的接收也是CAN FD控制器的主要职能,也需要其 他模块相应功能的配合,因此单独设为一个状态。
[0113] err_mode :错误状态,考虑到CAN总线的较为复杂错误规则,为方便发送错误帧时 各模块的相互配合而设置此状态。
[0114] 〇Verl〇ad_m〇de :超载模式,为方便发送超载帧时各模块的相互配合而设置此状 ??τ 〇
[0115] Interjnode:间隙状态,由于CAN Π )协议中规定了间隙场的存在及其职能,且间隙 场中不同的显性位出现时间将导向CAN FD控制器的不同功能,因此单独设为一个状态。
[0116] 相对于状态划分,状态转移条件的设计更为复杂,实际上是在各个模块设计过程 逐步添加完善的,现仅将设计结果呈现于表2中。其中涉及到的部分CAN Π )控制器内部信号 将在介绍到各信号的来源模块时进行介绍。


[0120] 信号设计:由于CAN ro总状态机11需要综合各模块信息以决定当前CAN ro控制器 所处状态,因此CAN FD总状态机11将汇聚来自其他各个模块的信号,其信号设计见表3。
[0121] 表3 CAN Π )总状态机模块信号表
[0123] 设计通过trans_status[2:0]及rec_status[3:0]信号控制发送管理器12及接收 管理器13的状态。考虑到CAN ro错误规则中,错误计数的计算需要考虑节点的前一状态,故 将错误状态对应的接收管理器13状态设置为两个,其中6号状态是前一状态为接收节点的 错误状态,7号状态是前一状态为发送节点的错误状态。
[0124] Start_buS信号来自接收管理器13,由于协议中规定了两种不同的总线启动情况, 故将Start_bus设计为可取3个值:为0无效,为1则表示收到一次总线启动信号,为2则表示 收到128次总线启动信号。
[0125] TR_ZER0,专门设计用于在取消发送命令AT被执行后寄提醒存器将相关位置0,若 AT和TR均为高,且此时不在bus_idle或inter_mode状态则此位置高以清零TR和AT。
[0126] 当处在arbit_mode和trans_mode时,CAN FD控制器都处于发送状态,因此TS_reg_ status将被置高,反之置低。
[0127] 当处在rec_mode时,由于CAN FD控制器处于接收状态,RS_reg_status将被置高, 反之置低。
[0128]仿真测试:整个CAN Π )总状态机11的输出仅由当前状态决定,因此,采用moore型 状态机进行设计,在设计时,将bus_off状态设置为系统初始状态,而当Reset_restart有效 时,present_state将强制回到bus_of f状态。
[0129] A:CAN Π )总状态机11在初始状态或硬件复位后都将处在bus_ofT状态。
[0130] B:等到ReSet_reStart被置低之后,接收管理器13状态将被设为1,意为等待30启 动信号。
[0131] C:检测到了一个总线启动信号从而进入bus_idle状态,接收管理器13和发送管理 器12状态也相应变化。
[0132] D:在busjdle状态收到了来自微控制器的TR命令,并且检测到了总线上出现显性 电平,从而进入arbitjnode,接收管理器13和发送管理器12状态也作相应调整。
[0133] E:在busjdle状态收到了来自微控制器的TR命令,并且检测到了总线上出现显性 电平从而进入arb i t_mode,与此同时可以看到重同步命令信号Sync被打开。
[0134] F:未通过仲裁,从而转入接收状态。
[0135] G:随后收到微控制器取消发送命令,可以看到AT和TR分别被置0。
[0136] 以上仿真结果表明,CAN Π )总状态机11设计合理,能够完成预设功能。
[0137] 接收管理器13设计:接收管理器13是整个CAN Π )控制器中功能最多,设计最复杂 的部分,该模块将依照CAN ro协议执行总线仲裁和各项检测功能包括帧格式检测、位填充 检测、CRC检测、错误帧检测和过载帧检测、滤波检测等。
[0138] 由于功能复杂,接收管理器13的内部还要进一步划分为七个模块,分别为接收状 态机模块、过载帧检测模块、错误帧检测模块、格式检测模块、CRC检测模块、滤波检测模块、 接收缓冲器模块。七个模块都在接收状态机模块的统一调配下协同工作。
[0139] 接收管理器13模块划分及内部信号关系图。
[0140] 接收状态机是由CAN Π )总状态机11单方面决定其状态的,因此其状态与整个CAN FD控制器状态--对应,转移条件同CAN FD总状态机11。
[0141 ]表4接收状态机状态与总状态机状态对应表
[0143]接下来按照状态对接收管理器13功能设计进行说明:
[0144] 0ff_rec:此状态对应CAN Π )总状态机11的bus_off状态,接收管理器13此时无需 设置任何动作。
[0145] Rr_rec:设置此状态与CAN FD总状态机11的start_up状态相对应,考虑到此时 Resetjestart刚被外部微控制器置低,因此在Rr_rec状态下,将接收管理器13功能设置为 只接收总线启动信号(连续11位隐性位),并对总线启动信号进行计数,计数值大于等于1且 小于128时,start_bus将输出1,计数值大于128时,start_bus将输出2。
[0146] Idle_rec:当总线空闲时,接收管理器13也为空闲状态,功能设定为等待接收一个 帧,其工作流程如所示。
[0147] A:进入Idle_rec状态后,首先将sy_control置1,通过该上升沿提醒时钟同步器14 准备进行硬同步。
[0148] B:当检测到总线上出现一个显性位时,说明已经收到了帧起始标志,此时由end_ bit信号产生一个脉冲,同时开始帧格式检测,即cs_fs_check被置1,而sy_control将产生 下降沿复原。
[0149] Arbit_rec:仲裁检查状态对应CAN Π )总状态机11的Arbit_mode,此时设置接收管 理器13密切监视总线上的仲裁状态,通过对比Serial_data_in和serial_data_out上的信 号,判断是否失去仲裁。流程如所示。
[0150] A:进入Arbit_rec状态后cs_fs_check也被置高,从仲裁位的第一位起开始格式检 查和位填充检查。
[0151 ] B: serial_data_out的显性电平被隐形覆盖,则是检测到位错误,故出错标志err_ flag被置1,cs_fs_check也被关闭。
[0152] C: serial_data_out的隐形电平被显性覆盖,失去仲裁。故end_bit产生一个脉冲, arbit保持为0提醒CAN Π )总状态机11停止一个帧的发送过程,转而接收一个帧;若获得仲 裁,贝lj end_b i t产生一个脉冲,arb i t产生一个脉冲。
[0153] TranS_reC:此时CAN Π )控制器处在发送状态,而接收管理器13则负责检查总线上 的位错误及应答错误。接收管理器13通过对比Serial_data_in和serial_data_out进行位 检测,若检出错误则err_f lag发送脉冲。
[0154] A: serial_data_out的隐形电平被显性覆盖,贝lj检出错误故err_f lag发送脉冲, err〇r_add[1:0]置3。
[0155] B:当get_ack置高时,serial_data_in为出现应答错误,若错则err_flag置1,若此 时错误状态位ES为高(当前节点为主动错误节点),则err〇r_add[ 1:0]置3,反之置0(根据 CAN协议错误规则3.例外1)。流程如所示:
[0156] ReC_reC:接收管理器13在这时开始检查数据、远程帧错误,主要工作由相应子模 块完成。此时cs_fs_ CheCk依然被置高,帧格式检查和填充位检查继续进行。若检出错误,帧 格式检查模块及CRC模块会做相应处理,接收完成则end_bit产生一个脉冲。
[0157] Err_rec:对应于CAN FD总状态机11的err_mode,接收管理器13此时应负责检查错 误帧格式是否正确,主要的检测工作都交给Err_Ch eak模块,因此接收管理器13仅需将cs_ ef_CheCk置1,开启错误帧检测模块,错误帧检测流程如所示。
[0158] over_rec:对应于CAN FD总状态机11的over_mode,接收管理器13此时应负责检查 过载帧格式是否正确,主要的检测工作都交给〇Ver_ Cheak模块,因此接收管理器13仅需将 CS_〇V_CheCk置1,开启过载帧检测模块,过载帧检测流程如所示。
[0159] Inter_rec:对应于CAN FD总状态机11的inter_mode,将接收管理器13的功能设置 为监视三位间隙场。流程如所示。
[0160] A:当在间隙场前两位检测到显性位,则说明检测到了超载现象,则〇ver_fram产生 一个脉冲。
[0161] B:当在间隙场第三位检测到显性位,说明总线上已经有节点开始发送一个帧,则 end_bit产生一个脉冲。
[0162] 接收状态机中,erro;r_add信号的设计较为关键,它为错误计数器提供错误计数, 其设计难点在于CAN FD的错误监测机制包括5类错误且互不排斥,协议中对应的错误计数 规则有12条,外加多条例外规则,因此不同的接收状态、不同的节点上一状态,以及不同的 错误类型相组合,导致err 〇r_add变化较多,最终将其值梳理为0-3共4种状态,足以反映所 有的计数器值变化情况:分别对应接收错误计数器加1和加8,发送错误计数器加8以及计数 器值不变。各种情况信号动作设计如下:
[0163] Err_rec状态下,若err_ef置1,则err_flag置高,end_bit置1若节点前一状态为接 收器则error_add置2 (接+8),若节点前一状态为发送器,贝丨】error_add置3 (发+8)。
[0164] Err_rec状态下,若err_ef置11,贝ljerr_flag置高,end_bit置1若节点前一状态为 接收器则error_add置1 (接+1),若节点前一状态为发送器,贝ljerror_add置3 (发+8)。
[0165] Err_rec状态下,若检测到第7位仍为显性,若节点前一状态为接收节点则error_ add置2,否则置0。(并非错误,不发送错误标志)over_rec状态下,若err_ov置1,则err_f lag 置高,end_bit置1,若节点前一状态为接收器则error_add置2(接+8),若节点前一状态为发 送器,贝1J error_add置3 (发+8)。
[0166] Arbit_rec状态下和Rec_rec状态下,若检测到err_f s置1,则error_add置3,若检 测到err_fs置11,则error_add置0。
[0167] Over_cheak模块:0ver_cheak模块主要负责对过载帧进行检错。
[0168] 表5 Over_cheak模块信号表
[0169]
[0170] -旦接收管理器13进入over_rec状态,该子模块片选cs_ov_check被启动,开始检 测过载状态下的错误。若检测无误则Send_err_del产生脉冲,通知发送管理器12发送过载 界定符。
[0171 ] err_ov信号动作设计如下:1.当在前6位检测到隐性位,说明出现位错误,err_ov 置尚。
[0172] 2.从被片选开始计数连续显性位彡14, err_ov置高。
[0173] 3.若在过载界定符中发现显性位,则err_ov置高。
[0174] A: cs_ov_check被选中,从data_serial_in的第一个显性位开始计数,在计数不到 6的情况下检测到隐性位。则通过err_ov脉冲报错。
[0175] B:同样的情况,计数超过14,通过err_〇v脉冲报错。
[0176] C:若在计数不超过14的情况下检测到data_serial_in上出现隐性位,则说明检测 无误,则send_err_del产生脉冲,随后开始检测过载界定符,随后模块被关闭;若计数超过 14,同样报错,模块将被关闭。
[0177] 以上仿真结果表明,Over_cheak模块设计合理,能够完成预设功能。
[0178] Err_cheak:模块一旦接收管理器13进入err_rec状态,该子模块片选cs_ef_check 被置高,开始检测错误状态下的错误。
[0179]设计中需要注意的一个细节是,由于CAN Π )协议中规定ES置高后的第一个错误依 然算作主动错误,故需当ES出现上升沿的时候,内部使用变量es_sign进行标识,之后检出 第一次错误后标志归零。
[0180]
[0181]将CAN Π )协议的错误规则进行梳理简化后,总结成树状图,以方便分析。
[0182] err_ef·为Err_cheak模块的关键信号,其信号动作设计如下:
[0183] 1 .ES为低时,当在前6位检测到隐性位,说明出现位错误,err_ef置1。
[0184] 2. ES为低时,从被片选开始计数连续显性位彡12,err_ef置1。
[0185] 3. ES为低时,从第7位开始等待一隐性位,检测到隐形位后,开始发送其余7个隐性 位如果期间检测到有显性位,err_ef置11。
[0186] 4.ES为高时,对连续的极性位计数,多6(被动错误标志发送完成)则开始等待一个 隐性位,检测到隐形位后开始发送其余7个隐性位如果期间检测到有显性位,err_ef置11。 [0187] 5. ES为高时,对连续的极性位计数,多6 (被动错误标志发送完成)从第7位开始对 连续的显性位进行计数,若彡8,err_ef置1。
[0188]以上制定的5点规则可以完全覆盖.14的第1分支及第2分支2.2的所有情况。
[0189 ]由此可知此设计方案逻辑自洽,覆盖完整,设计合理。
[0190] A:在片选开启后检测计数到大于6位的显性位,随后检测到隐性位,则Send_err_ del产生脉冲通知发送管理器12发送错误界定符,Err_cheak模块开始对隐性位计数,计数 超过8且检测到显性位,则说明错误帧传递完毕。
[0191] B:在片选开启后检测计数到小于6位的显性位,随后检测到隐性位,此时ES为低, 则err_ef置位'01',re_mode产生脉冲。
[0192] C:send_err_del产生脉冲后检测到连续隐性位不足8个,此时ES为低,则err_ef置 位' 11 ',re_mode产生脉冲。
[0193] D:若send_err_del产生脉冲后,此时ES为高,检测到连续隐性位超过8个,则err_ ef置位'01',re_mode产生脉冲。
[0194] E:若send_err_del产生脉冲后,此时ES为高,检测到连续隐性位低于8个,则err_ ef置位'10',re_mode产生脉冲。
[0195]以上仿真结果表明,err_cheak模块设计合理,能够完成预设功能。
[0196] Form_stuff_check模块:当接收管理器 13进入arbit_rec状态,cs_f s_check即被 置高,直到Rec_rec状态结束。从仲裁位的第一位起开始格式检查和填充位检查。
[0197] 表7 Form_stuff_check模块信号表
[0198]
[0199] 填充位的检查动作设计为对当前值及上一时刻的值进行比较计数。相等则计数加 1,不等则计数归零,但要注意协议中规定的错误规则例外2,不会增加错误计数,但会报错, 则将err_fs置11。若计数值达到6,则将err_fs置1。
[0200]格式检查设计为查看固定位是否为固定值,具体规则参照第二章的帧格式介绍, 若检查位与预设值异或结果为1,则err_fs置1,设计中对第2-33、38-553位中的非填充位, 每位都对应一个en_data_in脉冲以传入CRC_check模块进行CRC检测。当检测到ACK位时,将 send_ack置1〇
[0201 ]考虑到模块的联动配合需求,设计当cs_fs_check被置高,帧格式检测模块开始工 作时,cs_acr_check和cs_crc_check也会被自动置高,报文滤波模块以及CRC检测模块也开 始工作,直到当检测到SRR位时 cs_acr_check被置低,报文滤波结束。检测到CRC界定符时, cs_crc_check置低,CRC检测结束。
[0202]为保证数据存储的完整性,设计一旦出现错误或者err_flag置高,则clear置高, 清除已经写入接收缓冲器的数据,若err_aCr置高(滤波不通过)或arbit被置高(仲裁成功) 则都不再向接收缓冲器写入数据,且clear将同样被置高、en_data_in将不再发送写入脉 冲。
[0203]整个帧格式检测流程如所示。
[0204] 该模块设计方案覆盖了第2分支2.1的所有情况。
[0205] A、B:当cs_fs_check被置高时,cs_acr_check和cs_crc_check立即被置高,当检测 到data_serial_in上出现连续6位相同位时,都认为检测到了位填充错误,err_f lag及 cl ear将被置高。
[0206] C:当在数据帧固定位检测到的电平与预设值不同,比如这里第13位SRR应为隐性, 但却检测到显性,模块将判断出现了帧格式错误,err_f lag及clear将被置高。
[0207] D:当检测到最后一位ID而没有检测出错误,且arbit位为高,则说明拿到了仲裁, 处于发送状态,不再需要CRC检测及滤波,也不需要写入FIFO,cs_acr_check、cs_crc_check 及clear立即被置低。
[0208]以上仿真结果表明,Form_stuff_check模块设计合理,能够完成预设功能。
[0209] Acr_check模块:Acr_check模块设计用于进行简单的报文滤波,筛选出需要进行 接收的帧进行接收和存储。Acr_check模块信号设计如表8下:
[0210] 表8 Acr_check模块信号表
[0212] 以上信号中,如前文所述,将cs_acr_check设计为由Form_stuff_check模块控制。 滤波模块开始工作后,若滤波不能通过则err_a Cr置高。
[0213] Acr_check模块内嵌一个验收码寄存器ACR及一个验收屏蔽码寄存器AMR。设计接 收码寄存器中一位的含义是:当此位与接收报文标识符的高8位中对应位相同时,则通过滤 波,反之该帧就被滤掉。而验收屏蔽码寄存器的设计则相当于验收码寄存器某位的使能开 关,当验收屏蔽码寄存器的某位置高时,则对应的验收码寄存器的该位就不能用作滤波。滤 波过程的逻辑表达式如下:
[0214] [ID.10-ID.3 一 AC.7-AC.0] U (ΑΜ·7-ΑΜ·0) = 11111111Β。
[0215] 接收滤波时,设计若该逻辑表达式成立,则此帧能够通过滤波。
[0216] 验收码寄存器及验收屏蔽码寄存器设计如表9。
[0217]
[0218] 设计当cs_acr、cs_amr被置高,则对应寄存器为可写状态。
[0219] 仿真测试了滤波不通过的情况,提前将ACR寄存器置设置为'01001101',AMR设置 为'11011101'也就是只对第2位及第6位进行滤波检测,可以看到,测试中的ID'00011010' 第二位(A)能通过滤波,第6位(B)则不能,同时err_ac;r产生脉冲。
[0220] CRC_check模块:CRC检测模块设计主要负责两个功能:CRC检验及填充位过滤。 [0221]由于CAN Π )协议采用了双重位填充方式,即先对帧起始、仲裁场、控制场、数据场 进行位填充,计算以上场位经过填充后的CRC校验和,然后再对CRC校验和进行位填充,因此 检测CRC是否错误分为两个方面,一是计算CRC的校验和部分是否正确,二是在校验和上的 位填充是否正确。
[0223] CRC校验的设计思路是:从片选置高开始,内部设置一个22位寄存器crcjeg(初始 值为1,代表S0F)存储data_serial_in的采样数据,存储一个数据就左移一位,每当首位为 1,就与生成序列进行一次异或,然后左移(减计数)直到首位为1,然后等待下一次首位为1 然后异或,直到片选置低不再读取进位,寄存器中所剩值若不为0,则CRC校验不能通过, err_crc产生一个脉冲。然后恢复初始值。
[0224] CRC_check模块能检测出位填充(A、B、C、D),并在同时使CLK_data暂停一个周期。
[0225] 接收缓冲器设计:接收缓冲器负责存储接收管理器13收到的有效数据,接收缓冲 器信号设计如表11所示。
[0226] 基于接收数据完整性的考虑,如果在存储过程中检测到clear脉冲,则终止接收并 清除当前这一帧。接收缓冲器设计实时向状态寄存器报送D0S、RBS两个状态信号,若FIFO为 空,则将RBS置0,表示没有待读取的数据。命令寄存器中的两个位RRB及C0S都能影响接收缓 冲器,若检测到RRB置高,则清除最末尾的一帧;若检测到C0S置高,则将DOS置低。
[0227] 表11接收缓冲器信号表
[0229] A:-旦滤波未通过,final_data_in和clk_data信号都会停止传输,同时就会收到 cl ear信号。
[0230] B:当收到COS命令时,数据溢出状态位信号D0S_reg_statuS将被置低。
[0231] C:当收到RRB命令时,接收缓冲器中的数据将被逐帧删除,直到没有可读帧接收缓 冲器状态信号RBS_reg_status置0。
[0232]以上仿真结果表明,接收缓冲器模块设计合理,能够完成预设功能。
[0233]数据帧接收过程:数据帧接收过程在CAN Π )总状态机11的控制下,以接收管理器 13为核心,涉及到诸多模块的协调配合,接下来对设计的数据帧接收过程进行讨论。数据帧 接收流程如所示。
[0234]首先,设定CAN FD控制器只能在总线空闲状态时才能开始接收一个帧。此时CAN ro控制器若检测到总线上出现显性位,说明有帧开始发送。CAN Π)总状态机11将进入rec_ mode状态,首先对帧ID标识符的高8位进行滤波、帧格式以及CRC校验和检测,若都通过则将 去除填充位并拆帧后的数据存入接收缓冲器,通过发送管理器12向总线发送显性应答信号 ACK,并通过中断寄存器的接收中断位提醒外部微控制器前来提取数据。外部微控制器取走 数据后会写入RRB命令清除已经读取过的报文。如果不能通过滤波或接收期间检测到错误, 则会停止写入接收缓冲器并清除已经接收的数据。出错时还将由发送管理器12发送错误 帧。
[0235] 发送管理器12的模块设计:发送管理器12主要负责数据帧、远程帧、错误帧、过载 帧以及ACK信号的发送,由发送状态机及发送缓冲器两个子模块组成,模块划分及信号关系 图如9所示。
[0236] 发送状态机模块设计:
[0237] 状态设计:发送管理器12的状态是由CAN Π )总状态机11单方面决定的,如表12所 示其状态与CAN FD控制器总状态相对应。
[0238] 表12发送状态机状态与总状态机状态对应表
[0240]按照状态对发送状态机的功能设计进行介绍:
[0241 ] 0ff_trans:考虑到当CAN FD总状态机11处于bus_off及start_up状态时,发送管 理器12没有任何动作,故设计两个总状态都对应0ff_trans。
[0242] Idle_trans:设计此状态对应CAN Π )总状态机11的bus_idle状态,发送管理器12 将在Idle_trans状态下等待发送一个帧,此时当检测到TR置高时,发送管理器12将发送S0F (帧起始位)。
[0243] Trans_trans:考虑到CAN FD总状态机11进入Arbit_mode状态时,数据已经开始发 送,因此将Arbit_mode、trans_mode都合并为Trans_trans状态,刚进入该状态时,TCS置0, 从第一个仲裁位开始发送一个帧,当发送到应答标志位时,考虑到模块间联动的需要,发送 管理器12将向接收管理器13发送get_ack命令,提醒接收管理器13注意监测应答位。若发送 完成则将TCS置高。流程如所示。
[0244] Rec_trans:设计此状态对应CAN Π )总状态机11的rec_mode状态,发送管理器12在 Rec_trans状态下只需要负责应答标志位发送。当检测到Send_ack信号被置高,就发送一个 显性位ACK。
[0245] Err_trans:设计此状态对应CAN FD总状态机11的rec_mode状态,发送管理器12需 根据状态寄存器ES位(高被动低主动)发送相应错误帧,标志位发完之后不断发送隐性位直 到send_err_del为高则开始计数发送剩余7个隐性位。若检测到re_mode脉冲,则从头开始 发送相应的错误帧。
[0246] Over_trans:设计此状态对应CAN FD总状态机11的over_mod状态,发送管理器12 在此状态下功能设计为首先发送6位过载标志位,之后不断发送隐性位直到send_err_del 为高则开始计数发送剩余7个隐性位。
[0247] 信号设计:发送状态机信号如表13所示。
[0248] 表13发送状态机信号表
[0250] A:当模块处于Idle_trans状态时,若收到TR命令,可以看到data_output上将产生 一个位时间的显性位S0F,随后开始发送帧的其它位。
[0251 ] B:当模块进入Trans_trans状态时,可以看到TCS_reg_status马上被置低,帧的其 余位开始发送。
[0252] C:当模块处于Trans_trans状态时,可以看到一旦接收到send_ack状态,data_ output上马上发出一个显性位ACK应答。
[0253] D:在Err_trans状态,当节点错误状态ES_reg_status置高时,将发送隐性的错误 标志位,收到send_err_del信号后,开始发送8位隐性的错误界定符。
[0254] E:在Over_trans状态下,将首先发送6位显性的过载标识符,当收到send_err_del 信号后,开始发送8位隐性的过载界定符。
[0255] 以上仿真结果表明,发送状态机模块设计合理,能够完成预设功能。
[0256] 发送缓冲器设计:发送缓冲器负责存储即将发送到总线上的待发送数据。
[0257] 信号设计:发送缓冲器信号设计如表14所示。考虑到位填充机制的存在,设计了 FIF0_rd_clk与data_out对应的数据读取机制,每当FIF0_rd_clk产生一个高电平,data_ out上就对应一位数据,并逐位后移,当检测到TCS_reg_status置高时,表明发送完成,则清 空当前已发送的数据,并将TBS_reg_status置高。若reset_restart置高,则寄存器清零,并 将 TBS_reg_status 置高。
[0258]若TR_ZER0被置高,说明取消发送命令AT已被响应,发送缓冲器将自动清空当前待 发送的数据,并将TBS_reg_status置高。
[0259] 表14发送缓冲器信号表
[0260]
[0261] A:当FIF0_rd_clk不产生跳变(比如加入填充位时),data_out上的数据也会保持 上一时刻的数据。
[0262] B:当TCS_reg_Status信号为高时或检测到软件复位时,可以看到模块会将TBS_ reg_status 置高。
[0263] C:当取消发送命令被执行,TR_ZER0被置高后,TBS_reg_Status也会相应置高。
[0264] 以上仿真结果表明,发送缓冲器设计合理,能够完成预设功能。
[0265] 数据帧发送过程:数据帧的发送是在CAN Π)总状态机11的控制下,以发送管理器 12为核心,通过诸多模块协调配合而完成的。接下来对设计的数据帧发送过程进行讨论。数 据帧发送流程如所示。
[0266] 考虑到发送缓冲器的容量限制,设计当外部微控制器需要发送数据时,首先需要 检测发送缓冲器状态(状态寄存器SR-TBS),若SR-TBS为' Γ,说明发送缓冲器为空,微控制 器可将数据写入发送缓冲器中,同时写入发送命令TRXAN Π)控制器在收到TR命令后再次 查询SR-TBS位,确保其为' Γ。CAN Π)总状态机11收到TR命令,将在总线空闲时向发送管理 器12下达发送命令。发送管理器12从发送缓冲器读取原始数据,向CRC场之前的位添加填充 位、计算CRC校验和、完成CRC编码的位填充最终组成完整数据帧,并在通过总线仲裁后将剩 余位发送到总线。整个发送过程中接收管理器13对接收端数据进行监视,若接收到正确的 ACK信号,则发送完成,清除发送缓冲器中的内容。若检测出现错误,则CAN FD控制器停止发 送当前数据帧,等待下次总线空闲时再将出错或丢失仲裁的数据帧重发。若接收管理器13 没有接收到应答信号,CAN FD控制器也会自动重发该帧。
[0267] 时钟同步器14及错误管理模块15是CAN Π)控制器重要的支撑模块。
[0268] 时钟同步器14通过读取时钟寄存器的内容,调控系统位时钟周期。通过接收信号 配合两种同步功能,向其他模块发布总线采样值。
[0269] 表15时钟同步器信号表
[0270]
[0271 ]考虑到04~!70控制器在8七&1'1:_即、13118_丨(116、;[1^61'_1]1〇(16的第三位、8118。611(1_1]1〇(16 这些状态下都具有接收一个帧的功能,在这些状态下接收管理器13应将sy_control置1允 许硬同步,而时钟同步器14应负责进行硬同步的具体动作。故一旦检测到sy_control被置 高,时钟同步器14即开始等待data_input上的第一个下降沿,以进行硬同步。
[0272 ]由于最小时间份额的个数是决定位时间周期的关键,改变一个位中最小时间份额 的个数即可立刻调整当前的位周期,因此时钟同步器14的内部设计核心是一个最小时间份 额计数器,计数对象为最小时间份额个数,计数容量由总线定时寄存器BTR0、BTR1、BTRH)设 定。
[0273]基于最小时间份额计数器设计的硬同步信号动作为:当sy_control为高时,一旦 检测到下降沿,计数器立刻归零,并产生第一个位时钟周期的下降沿,这时候硬同步就成功 了,节点成功与总线上的信号进行了同步,接下来按照寄存器的设定值,产生相应的位时钟 周期。
[0274] 重同步的具体执行原理也是依赖时间份额计数器,按照协议,一个位时钟周期中 只执行一次重同步。其信号动作设计为:在Sync置高的时候,捕捉data_input的下降沿,并 根据计数器的计数值确定当前下降沿所在的位置。总共有三种可能的位置:SYNC_SEG、 PHASE_SEG1、PHASE_SEG2。
[0275] 当检测到下降沿处于SYNC_SEG时,A处,则表示节点与总线信号完美同步,不需要 重同步。
[0276] 若下降沿位于PHASE_SEG1B处,表明下降沿滞后,此时计算下降沿距离PHASE_SEG2 起点的时间份额数量t_num。it_num〈SJW时,将PHASE_SEG1延长t_num个时间份额,当t_num > =S JW时,将PHASE_SEG1延长S JW个时间份额。对于延长的时间份额,采用另一个计数器t_ delay来计数延时。
[0277] 若下降沿位于PHASE_SEG2C处,表明下降沿提前,此时计算下降沿距离计数器满值 的时间份额数量1:_11111]1。当t_num〈SJW时,就直接开始下一个计数周期,并计数值设置在 PHASE_SEG 1起点处,当t_num> = S JW时,将PHASE_SEG2缩短S JW个时间份额。对于缩短的时间 份额,直接在计数器加上值即可。
[0278] 总线定时寄存器:
[0279] 表16总线定时寄存器BTR0、BTR1、BTRH)位设计表
[0281 ]总线定时寄存器是根据CAN Π )协议的规定进行设计的,满足了协议中对位时间设 定的要求。
[0282] 首先是最小时间份额的设定,最小时间份额是组成位时钟周期的最小单位,SPT.5 ~SPT.0决定了CAN FD控制器的最小时间份额,最小时间份额计算公式如下:
[0283] SPT = global_clock*( 32*SPT · 5+16*SPT · 4+8*SPT · 3+4*SPT · 2+2*SPT · 1+SPT · 0+1)
[0284] 本发明通过最小时间份额的调节来实现CAN FD的Flexible Data rate。
[0285] 在数据帧已进入可变速率传输阶段,时钟同步器14需要以预设的更高位速率传输 数据。此时决定最小时间份额的寄存器位将发生变化,计算公式如下:
[0286] SPT=global_clock*(32*FPT·5+16*FPT·4+8*FPT·3+4*FPT·2+2*FPT·1+FPT·0+1)
[0287] -个位时钟周期包括了四个部分
[0288] 同步段(SYNC_SEG):占一个最小时间份额,一个位的起始变化沿的理想情况就是 位于该段之内,重同步对位时间的调整也是以该段为基准坐标点。
[0289] 同步段(SYNC_SEG)为1个时间份额。
[0290]相位缓冲段1(PHASE_SEG1): -方面包括了原协议中提到的用于补偿传播延迟的 传播时间段。另一方面,若重同步发生在相位缓冲段1中,那么可以通过延长相位缓冲段1来 调整采样点位置。相位缓冲段1(PHASE_SEG1)的长度可设置为1-16个时间份额,计算公式如 下:
[0291] tPSEGl=SPT*(8*PSEG1.3+4*PSEGl.2+2*PSEGl.1+PSEG1.0+1)
[0292] 相位缓冲段2(PHASE_SEG2):若重同步发生在相位缓冲段2中,那么可以通过缩短 相位缓冲段2来调整采样点位置。相位缓冲段2(PHASE_SEG2)的长度可设置为1-16个时间份 额,计算公式如下:
[0293] tPSEG2 = SPT*(8*PSEG2·3+4*PSEG2·2+2*PSEG2·1+PSEG2·1+1)
[0294] 同步跳转宽度(SJW):用于规定一次重同步中,系统位时钟周期的最大值。
[0295] 计算公式如下:tSJW=tSCL*(2*SJW.l+SJW.0+l)
[0296] 同步段、相位缓冲段1、相位缓冲段2以及同步跳转宽度共同确定了位时间Tbit的 范围:(l+PSEGl+PSEG2-tS jW,PSEGl+PSEG2+l+tS jW)。
[0297] 时钟同步器14仿真测试:预设PHASE_SEG1为12个时间份额,PHASE_SEG2为7个时间 份额。
[0298] 从A所指向的波形可以看到,当sy_control置高的时候,能够捕捉到data_input的 下降沿进行硬同步,从而立刻重新开始一个位时间。从B处可以看到硬同步后的下一位上升 沿对准了位时钟周期的同步段。
[0299] 在Sync置高的时候,一旦捕捉data_input的下降沿,则计算t_num,C所指向下降沿 出现在PHASE_SEG 1段,t_num为1,可以数出,模块自动将PHASE_SEG 1段延长了一个时间份 额,相应的该位时间也延长了一个时间份额。D处可以看到,下一位的上升沿对准了位时钟 周期的同步段。
[0300] 错误管理模块15主要负责错误计数,不关心错误细节。其主要工作是监测err〇r_ add[ 1:0]、send_ack、TCS_reg_status三个信号,并采集其值做相应处理。
[0301] 表17错误管理模块信号表
[0303] 设计错误管理模块15的主要作用是向其他模块提供总线及节点状态,其中ES_ reg_status设计用于表征主动状态或被动状态。BS_reg_status设计用于表征总线在线或 总线脱离。start_bus为2时或re_start_low被置低时,计数将被清零,且ES和BS被置0。当 TCS_reg_status置1,则发送错误计数减1,若发送错误计数值已为0,则保持0。当send_ack 置1.则接收错误计数减1,若接收错误计数值已为〇,则保持0。当任一计数器>128时,ES_ reg_status置高,置高后的第一个错误帧依然是主动错误。当两个计数器都〈128时,ES_ reg_status置0〇
[0304] 若发送或接收错误计数器>256,BS_reg_status置高。
[0305]错误管理模块15仿真测试。
[0306] A、B:对error_add的不同值接收错误计数器有正确的计数。
[0307] C:当send_ack产生脉冲,说明正确接收一个帧,接收错误计数器计数值减1。
[0308] D:error_add为'11'时,发送错误计数器计数值加8。
[0309] E:当TCS_reg_statUS产生上升沿,说明发送完成一个帧,发送错误计数器计数值 减1〇
[0310] F:当任一发送计数器计数值大于128( 16进制80)时,ES_reg_status将被置高,表 示节点进入错误被动状态。
[0311] G:当任一发送器计数值大于256(16进制100)时,BS_reg_status将被置高,此时总 线脱离,节点将不再工作。
[0312] 以上仿真结果表明,错误管理模块15设计合理,能够完成预设功能。
[0313] 寄存器组16及接口管理器17:
[0314] CAN FD协议虽然较CAN 2.0有很多改良之处,但多数功能都已固化在它模块中实 现,而需要通过寄存器进行设置的功能较少。基于使用习惯的考虑市面上多数CAN Π )控制 器设置都与SJA1000相似,因此寄存器组16的设计是在考SJA1000寄存器的基础上针对CAN FD协议的需要进行调整。
[0315] CAN Π )控制器寄存器组16中共有4个寄存器,分别为控制寄存器reg_c〇ntr〇l、状 态寄存器status_reg、中断寄存器Interrupt_reg、命令寄存器command_reg。
[0316]下面对各寄存器的设计作简要介绍。
[0317] 控制寄存器reg_control负责为外部微处理器提供一些控制位,以此调控CAN FD 控制器的功能,控制寄存器地址分配及各位功能表所示,各位均为置'Γ有效。
[0318] 表18控制寄存器位功能表 [0319]
[0320] GW(g〇_W〇rk)设计用于在缺少总线启动信号时,通过软件启动总线,也即将控制器 状态调整为bus_idle状态。
[0321 ] RR(Reset_restart)设计用于通过软件让控制器进入bus_off状态(称为复位),需 要注意的是,RR同时也可看作bus_off状态的标志位,即使不被软件置位,每当控制器处于 bus_〇fT状态时,RR都被自动置高。
[0322]对于不同的复位方式,根据CAN Π )总线协议,其恢复工作状态还需要额外信号: [0323] 1.总线状态BS由低变为高而使得RR被自动置高后,若RR又被软件置低,CAN Π )控 制器需要等待128次总线重启信号(11个连续的隐性位为1次总线重启信号),才能将BS自动 置' 〇 ',同时错误状态ES也自动置' 0 '。
[0324] 2.若RR置高由外部硬件或软件复位导致,CAN Π )控制器需要等待1次总线重启信 号,才能将BS自动置'0'。
[0325] 状态寄存器status_reg是展示CAN Π )控制器工作状态的主要窗口。状态寄存器为 只读寄存器,只能由内郃相关模块提供状态?目息。
[0326] 表19状态寄存器位功能表
[0328]总线状态BS:该状态位设计由错误管理模块15提供,置高表示总线脱离,置低表示 总线在线。除了寄存器模块以外,CAN FD总状态机11也需要此位信号作为状态转移的依据。 总线状态由低变为高,将会有两种情况,对应的启动方式也不相同。
[0329]错误状态ES:该状态位设计由错误管理模块15提供,它是错误管理模块15内部错 误计数值的简化反映,表征了总线被干扰的严重程度,接收管理器13及发送管理器12都需 要此位提供的当前节点错误状态作为动作依据。若任意一个错误计数器(发送或接收)计数 值达到128,则错误管理模块15将错误状态ES置为高;而若接收错误计数器和发送错误计数 的计数值都低于128,ES被置为低。
[0330]发送状态TS:该状态位设计由CAN Π )总状态机11提供,供外部微控制器查询,置高 时表示CAN FD控制器正在发送一个帧(数据帧或远程帧),置低时表示没有发送。
[0331 ]接收状态RS:该状态位设计由CAN Π)总状态机11提供,供外部微控制器查询,置高 时表示CAN FD控制器正在接收一个帧(数据帧或远程帧),置低时表示没有接收。
[0332]发送完成状态TCS:该状态位设计由发送管理器12提供,当成功发送一帧数据时, 会将TCS置高,否则TCS就将保持低,错误管理模块15依据该状态信号进行减计数,CAN ro总 状态机11的状态转移也需要该状态信号。若将命令寄存器的发送请求位TR置高,则TCS将被 置低。
[0333]发送缓冲器状态TBS:该状态位设计由发送缓冲器提供,表征发送缓冲器是否为 空。设计在两种情况下发送缓冲器会将TBS置高(表示空):
[0334] 1.当CAN Π)控制器尚未开始发送报文时,发送请求命令TR被取消发送命令AT取消 时,借由TR_ZER0信号,发送缓冲器将被清空,TBS被置高。
[0335] 2.当CAN FD控制器成功发送一个帧后,TCS及TBS同时被置高。
[0336]数据溢出状态DOS:该状态位由接收管理器13提供,当接收缓冲器已装满,这时有 报文需要存入时,DOS将被置高,设计有两种情况可将DOS置低:
[0337] 1.当外部微控制下达清除溢出状态命令从而将DOS置低。
[0338] 2.当复位请求位Reset_Restart被置高时DOS将被置低。
[0339]接收缓冲器状态RBS:该状态位设计由接收管理器13提供,用于表征接收缓冲器中 是否有待读取的有效帧,若有则将RBS置高,否则为置低。
[0340]中断寄存器Interrupt_reg为只读寄存器,各中断信息来自CAN Π)控制器内部其 他模块,外部微控制器可以通过控制寄存器决定各中断位的使能,可随时依需要读取中断 位,中断寄存器一旦已被读取就会自动复位,当任一使能中断位被置高时会产生中断检测 信号,提醒微控制器读取中断信号。
[0341] 表20中断寄存器位功能表
[0343]溢出中断01:设计由接收管理器13提供,一旦接收缓冲器溢出就会置高。
[0344]错误中断EI:设计由状态寄存器提供,用于配合ES位和BS位展示总线被干扰的程 度。当错误状态ES或总线状态BS被置高时EI置高。外部硬件复位也会将错误中断EI置低。 [0345]发送完成中断TI:设计由发送管理器12提供,当TBS被置高时,发送完成中断也被 置高,表示已经清空发送缓冲器,可以存入新的待发送数据。
[0346]接收完成中断RI:设计由接收管理器13提供,一旦接收完成就会置高。
[0347] 命令寄存器:外部微控制器通过命令寄存器向CAN FD控制器下达命令,置' Γ表示 有效命令。
[0348] 表21命令寄存器位功能表
[0349]
[0350] 清除溢出状态COS:命令设计由接收管理器13处理,用于将接收缓冲器的数据溢出 状态DOS位置低从而应答数据溢出中断信号01。
[0351]释放接收缓冲器RRB:命令设计由接收管理器13处理,每当外部微控制器成功读取 接收缓冲器中的数据后,都可下达此命令,收到命令即释放读取指针之前的数据所占用的 存储。
[0352] 取消发送命令AT:命令设计由发送管理器12处理,外部微控制器可以通过该命令 取消之前的发送请求,并同时清除发送缓冲器,除非发送已经开始(发送状态位TS为高)。
[0353] 发送请求命令TR:命令设计由发送管理器12处理,外部微控制器可以通过该命令 发送一个帧,命令将被传递到CAN ro总状态机11。注意,TR只能被自动置'0',因此只能通过 取消发送命令AT,来取消发送命令TR。
[0354]接口管理器17主要设计用于负责解析来自微控制器的指令,将收到的地址信息译 码为对应寄存器的选通信号,在相应信号置低(Wr_l〇W、rd_l〇W)时,与外部微控制器交换信 息。
[0355] 接口管理器17信号引脚解释见表22。
[0356]表22接口管理器信号引脚定义表
[0358] 仿真中对CAN FD控制器内部各个寄存器进行了片选通断测试,结果表明,接口管 理器17模块设计合理,能够完成预设功能。
[0359] 本发明实施例提供的新型CAN FD控制器,由CAN FD总状态机11、发送管理器12、接 收管理器13、时钟同步器14、错误管理模块15、寄存器组16、接口管理器17构成,CAN FD总状 态机11调控CAN Π )控制器整体功能及工作状态,发送管理器12用于所有类型的帧及ACK信 号的发送,接收管理器13用于监视总线,并分析总线上接收到的数据,时钟同步器14根据用 户设定及总线信号,控制位时钟周期,并提供总线值采样点及采样值,错误管理模块15对节 点错误进行统计计数,将计数值反应为节点错误状态ES和总线状态BS信息,并汇报给CAN状 态机及状态寄存器,寄存器组16对控制寄存器、状态寄存器、中断寄存器及命令寄存器进行 集中管理,接口管理器17用于外部微控制器与CAN Π )控制器交换信息的接口,解析来自微 控制器的指令,将收到的地址信息译码为对应寄存器的选通信号,同时向微控制器反馈中 断信息及CAN FD控制器工作状态;该新型CAN Π )控制器基于CAN FD总线通信协议规范与微 波功率分布式控制系统的实际需求,性能优越,具有重要的实际工程意义。
[0360] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1. 一种新型CAN FD控制器,其特征在于,该新型CAN FD控制器包括: CAN FD总状态机,用于调控新型CAN FD控制器整体功能及工作状态; 发送管理器,与所述CAN FD总状态机相连接,用于所有类型的帧及ACK信号的发送; 接收管理器,与所述CAN Π )总状态机相连接,用于监视总线,并分析总线上接收到的数 据; 时钟同步器,与所述CAN Π )总状态机及接收管理器相连接,用于根据用户设定及总线 信号,控制位时钟周期,并提供总线值采样点及采样值; 错误管理模块,与所述CAN Π )总状态机及接收管理器相连接,用于对节点错误进行统 计计数,将计数值反应为节点错误状态ES和总线状态BS信息,并汇报给CAN状态机及状态寄 存器; 寄存器组,与所述CAN Π )总状态机、发送管理器及接收管理器相连接,用于对控制寄存 器、状态寄存器、中断寄存器及命令寄存器进行集中管理; 接口管理器,与所述寄存器组、发送管理器及接收管理器相连接,用于外部微控制器与 CAN ro控制器交换信息的接口,解析来自微控制器的指令,将收到的地址信息译码为对应 寄存器的选通信号,同时向微控制器反馈中断信息及CAN FD控制器工作状态。2. 如权利要求1所述的新型CAN Π )控制器,其特征在于,所述发送管理器中嵌入发送缓 冲器,所述发送缓冲器用于存储待发数据,并为所述寄存器组中的状态寄存器模块提供发 送缓冲器状态; 所述发送管理器负责具体执行任何与发送有关的命令,并在所述CAN Π )总状态机的统 一协调下发送数据,能从所述发送缓冲器中读取仲裁场、控制场和数据场的内容,然后将组 装成CAN ro帧,并向总线发送CAN FD帧;在收到错误或是总线超载信号时,向总线发送错误 帧或超载帧;还用于向状态寄存器提供发送完成状态的信息; 所述接收管理器将依照CAN ro协议,执行总线仲裁格式和各项检测功能如填充错误检 测、CRC检测、错误帧检测和过载帧检测、滤波检测,所述接收管理器中嵌入接收缓冲器,所 述接收缓冲器用于存储接收数据,并为所述寄存器组中的状态寄存器反馈接收缓冲器状态 及数据溢出状态,向所述寄存器组中的中断寄存器提供接收中断及数据溢出中断; 所述时钟同步器用于CAN FD通信协议所约定的重同步、硬同步及Flexible Data功能 的具体实现,所述时钟同步器内含三个总线定时寄存器^1?0、8了1?1、8了1^0,用于存储用户设 定的位时间控制参数,从而产生相应的位时钟周期; 所述寄存器组中的控制寄存器存储来自外部CPU的控制命令;命令寄存器用于外部CPU 给CAN ro控制器下达用户可干预的操作命令;状态寄存器用于实时展现控制器内部状态; 中断寄存器用于展现各种中断状态,方便用户随时提取; 所述接口管理器作为外部微控制器与CAN ro控制器交换信息的接口,解析来自微控制 器的指令,将收到的地址信息译码为对应寄存器的选通信号,也向微控制器反馈中断信息 及CAN FD控制器工作状态。3. 如权利要求1所述的新型CAN FD控制器,其特征在于,所述新型CAN Π )控制器包括10 个状态,分别为: Bus_〇ff:总线脱离状态,考虑到CAN FD控制器在某些情况下应拒绝响应总线上的任何 信号,将这些情况都归总为Bus_ofT状态; Star_up:待复位状态,由于CAN FD协议要求节点从脱离总线恢复必须接收启动信号, 故设置此状态,CAN FD控制器此时只能等待总线上的启动信号; Busjdle:总线空闲状态,考虑到CAN Π )控制器开始工作后,如果总线上没有信号,CAN FD控制器将会等待发送或接收一个帧,Bus_idle用于归总这种情况; Arbit_mode :仲裁状态,考虑到非破坏性仲裁时,CAN FD控制器将同时进行发送与接 收,且仲裁的不同结果将导向CAN FD控制器的不同功能,因此单独设为一个状态; Transjnode:发送状态,由于数据帧的发送将是CAN Π )控制器的主要职能,也需要其他 模块相应功能的配合,因此单独设为一个状态; Recjnode:接收状态,同样数据帧的接收也是CAN Π )控制器的主要职能,也需要其他模 块相应功能的配合,因此单独设为一个状态; err_mode :错误状态,考虑到CAN总线的较为复杂错误规则,为方便发送错误帧时各模 块的相互配合而设置此状态; over 1 oad_mode:超载模式,为方便发送超载帧时各模块的相互配合而设置; Interjnode:间隙状态,由于CAN Π )协议中规定了间隙场的存在及其职能,且间隙场中 不同的显性位出现时间将导向CAN FD控制器的不同功能,因此单独设为一个状态; Suspend_mode:挂起状态,考虑到CAN FD协议中对节点挂起有详细的规定,且该情况下 CAN FD控制器的行为较为特殊,因此单独设为一个状态。4. 如权利要求1所述的新型CAN FD控制器,其特征在于,所述接收管理器进一步包括: 接收状态机模块,由CAN FD总状态机单方面决定其状态,状态与整个CAN Π )控制器状 态--对应; 过载帧检测模块,用于对过载帧进行检错; 错误帧检测模块,当所述接收管理器进入err_rec状态时,错误帧检测模块片选cs_ef_ check被置高,开始检测错误状态下的错误; 格式检测模块,当所述接收管理器进入arbit_rec状态时,cs_fs_check即被置高,直到 Rec_reC状态结束,从仲裁位的第一位起开始格式检查和填充位检查; 滤波检测模块,用于进行简单的报文滤波,筛选出需要进行接收的帧进行接收和存储; CRC检测模块,用于CRC检验及填充位过滤; 接收缓冲器,用于存储接收管理器收到的有效数据。5. 如权利要求1所述的新型CAN FD控制器,其特征在于,所述发送管理器进一步包括: 发送状态机; 发送缓冲器,用于存储即将发送到总线上的待发送数据。6. 如权利要求1所述的新型CAN Π )控制器,其特征在于,所述时钟同步器通过读取时钟 寄存器的内容,调控系统位时钟周期,并通过接收信号配合两种同步功能,向其他模块发布 总线采样值。7. 如权利要求1所述的新型CAN Π )控制器,其特征在于,所述错误管理模块用于错误计 数,不关心错误细节,监测error_add[ 1:0]、send_ack、TCS_reg_status三个信号,并采集其 值做相应处理。8. 如权利要求1所述的新型CAN Π )控制器,其特征在于,所述控制寄存器用于为外部微 处理器提供控制位,以此调控CAN Π )控制器的功能,控制寄存器地址分配及各位功能表所 示,各位均为置1有效; 所述状态寄存器是展示CAN FD控制器工作状态的主要窗口,状态寄存器为只读寄存 器,只能由内部相关模块提供状态信息; 所述中断寄存器为只读寄存器,各中断信息来自CAN Π )控制器内部其他模块,外部微 控制器可以通过控制中断寄存器决定各中断位的使能,可随时依需要读取中断位,中断寄 存器一旦已被读取就会自动复位,当任一使能中断位被置高时会产生中断检测信号,提醒 微控制器读取中断信号; 外部微控制器通过所述命令寄存器向CAN FD控制器下达命令,置1表示有效命令。9.如权利要求1所述的新型CAN Π )控制器,其特征在于,所述接口管理器用于解析来自 微控制器的指令,将收到的地址信息译码为对应寄存器的选通信号,在相应信号置低(Wr_ low、rd_low)时,与外部微控制器交换信息。
【文档编号】G05B23/02GK106094801SQ201610546227
【公开日】2016年11月9日
【申请日】2016年7月12日
【发明人】周新志, 唐臻宇, 钟睿
【申请人】四川大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1