基于Petri网的CAN总线模型的VHDL实现
胡辉
1,2
崔瑞雪 韦雪洁
11
(1.北华航天工业学院电子工程系 河北 廊坊 065000;2.河北工业大学信息学院 天津300130)
摘要:本文主要介绍了一种基于Petri网的CAN总线模型的VHDL实现过程。其中包括将CAN总线的通信过程进行随机Petri网(DSPN)建模, 然后将Petri网与VHDL语言相结合,用VHDL语言来描述CAN节点的DSPN模型,最后通过EDA软件工具成功实现了仿真,从而获得了系统的动态性能等内容。为各种通信协议的研究及电路实现奠定了基础。关键词:Petri网 CAN总线 VHDL DSPN模型
VHDL Implementation of CAN Fieldbus Modeling Based on Petri nets
HU Hui CUI Rui-xue WEI Xue -jie
(1.Electronics Engineering Department, North China Institute of Astronautic Engineering , Langfang 065000,China;2.College of Information; Hebei Industrial University; Tianjin 300130; China)
Abstract: This paper introduces a process for VHDL implementation of CAN fieldbus modeling based on Petri nets. which includes carrying on the model to DSPN(Deterministic and Stochastic Petri Net) of the communication behavior of CAN Fieldbus , describing DSPN model of CAN node by VHDL Language, simulating with the EDA software, then the dynamic properties of the system are obtained. It is the basis to the Research on the Communication Protocol and circuit implementation。
Keywords: Petri nets; CAN bus; VHDL; DSPN model
1 引言
随着深亚微米集成工艺的掌握,异步时序电路在超大规模集成电路方面得到应用,但异步电路设计仍然还没有逾越旧轨。Petri网是异步并发系统,没有人为的控制流,直观地表示了非确定性;且可以图形化的方式描述复杂的系统,并可运用数学工具进行分析。因此,其在软件系统的建模与仿真中得到广泛应用。VHDL语言适用于描述异步并发系统,因此可与Petri网建立的模型联系起来。使用Petri网对系统进行建模、分析和验证,然后直接编译为VHDL代码。
CAN总线具有成本低、易开发、实时性好以及抗噪声性能好等优点,传输速率最高为1Mbps,最大传输距离为10km,由于其数据通信可靠,现在已逐步发展成为用于工业部门控制和通信的现场总线。CAN总线是一种面向工业应用的、全分布式的、实时网络控制系统,其理论分析与建模很不成熟,缺乏完整的研究体系。本文对CAN总线的通信过程进行进行DSPN建模,并利用VHDL语言描述了随机Petri网的模型,为现场总线的通信协议的性能分析提供一种新的方法。 2 CAN总线的DSPN模型
目前,国内Petri网的硬件实现研究的较早,但Petri网到VHDL编译器的开发较晚,国外已经进行了较多的研究。瑞典人研究将有色Petri网映射成VHDL。其主要内容是将Petri网图形描述翻译成VHDL代码,方法是将Petri网中的每个结点(库所或变迁)翻译成元件库中预先定义的VHDL组件。葡萄牙和波兰人开发了一个ECAD软件,该软件的主体是一个编译器,使用Cocktail编译工具将Petri网CONPAR格式的文本描述转为RTL级的VHDL代码。
在Petri网中引入时间参数,在每个变迁的可实施与实施之间联系一个随机的延迟时间,这种类型的Petri网叫做随机Petri网(stochastic Petri net,SPN)。随机Petri网为系统的性能模型提供良好的描述手段。随机Petri网大致可分为随机Petri网(SPN)、广义随机Petri网(GSPN)、随机回报网(SRN)和确定与随机Petri网(DSPN)。
CAN的CSMA/CA单节点的DSPN模型如图1所示。模型中库所P表示系统的状态,用圆圈表示。变迁T表示系统状态发生的变化,用方框表示。一般用白色矩形表示随机变迁,黑色矩形表示定时变迁,线段表示立即变迁。
1
设计一个CAN系统时,必须保证CAN协议中媒体访问层非破坏性位仲裁的要求,即出现总线竞争时,具有较高优先权的报文获取总线竞争的原则,所以要求物理层必须支持CAN总线中隐性位和显性位的状态特征。在没有发送显性位时,总线处于隐性状态,空闲时,总线处于隐性状态;当有一个或多个节点发送显性位,显性位覆盖隐性位,使总线处于显性状态。一个CAN节点的通信DSPN模型的状态与变迁的含义如表1所示。
网络上的任意节点向其它节点发送信息,只有在前一个信息传输成功发送后才能接收新的传输要求。本模型主要分为三个模块:通道模块,冲突处理模块和正常发送和接收模块。
(1)通道模块
模型中采用库所P7来表示CAN总线通道状态,当P7含有token时,表示当前通道处于忙状态。首先,发送节点处于准备就绪状态P1,经历随机时间变迁T1后节点信息处于队列状态P2,然后发送节点检测通道忙闲状态。当检测到通道忙,即P7有一个标记,瞬时变迁T2实施,节点进入等待状态P3,直到通道空闲,并再经历一小段由确定时间变迁T3参数设定的延时后再发送;否则,瞬时变迁T7实施,发送节点发送其信息帧的标识符部分P8。
P1T1P2T2P3T3P8T8P6T4P4T5P5T6P9T9P10T10P14P12T7T11P7P15P11P13T12T13 图1 CAN节点的通信DSPN模型
表1 状态与变迁的含义
状态 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 含义 准备就绪状态 节点信息处于队列状态 等待状态 受阻状态 退避状态 优先级节点存在状态 总线通道状态 发送标识符状态 发送全部信息帧状态 帧校验检查状态 总线通道的忙闲状态测试 框架检查状态 错误状态 正确状态 撤除连接状态 变迁 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 随机时间变迁 通道忙瞬时变迁 等待定时变迁 受阻瞬时变迁 返回瞬时变迁 返回队列定时变迁 发送开始瞬时变迁 没有优先级冲突定时变迁 等待检查定时变迁 校验错误瞬时变迁 撤除通道连接等待新信息瞬时变迁 检查结果正确瞬时变迁 含义 (2)冲突处理模块 模型中用库所P6表示优先级高的节点存在的状态,当库所中有token时表示有高优先级的节点信息在发送。当节点处于P8状态时,如果在这期间检测到P6含有标记,即通道上有高优先级的息在发送,则进入受阻状态P4,经历退避状态P5 重新回到P2状态;否则发送该帧的全部信息P9。
2
(3) 正常发送模块
当节点处于P9状态时,节点处于等待帧校验的结果状态P10,如果该帧传输有误,瞬时变迁T10实施,发送节点重新回到P2状态继续发送该帧;否则,传输正确,瞬时变迁T12实施,发送节点准备撤除通道连接状态P15,经过瞬时变迁发送节点T11撤除连接后回到P1状态,等待新的发送请求。
3 VHDL语言实现
VHDL语言诞生后,被列为IEEE1076标准,并成为工业界的标准,被广大硬件设计者所接受。它提供的丰富手段可以方便地产生能够运行的硬件系统描述模型。VHDL有多个抽象级别的描述能力,可支持抽象级别之间的任何方式的混合描述。将系统级建模方法与VHDL相结合,既可以利用VHDL丰富的支持工具实现系统硬件部分设计的自动化,又可以利用VHDL的模拟环境对系统的完整模型进行模拟分析,从而为系统的设计提供快速原型设计方法的设计支持。
VHDL语言与Petri网一样,也是一种并发语言,把系统设计的模型用Petri网进行描述、分析与验证,然后转变成为VHDL语言描述并进行仿真和综合,这将使Petri网与VHDL语言的优势得到互补,使设计系统的性能得到进一步的分析和验证。
(1)VHDL语言的实体描述
程序的实体描述是对设计实体与外部电路进行接口描述。根据该系统的协议中关心和需观察的变量选择系统的输入和输出信号,以确定VHDL语言描述的实体及其端口。在CAN总线协议的系统模型中,将CAN总线通道状态设计成实体的输入信号,系统条件作为实体的输出信号。 (2)程序的结构体描述
结构体用于描述设计实体的逻辑结构和逻辑功能。根据系统的协议,可采用多进程组织结构来描述系统。多进程结构是并行执行进程的网络,多个进程并发执行。因此从系统的拓扑结构角度,可将各进程映射系统的各库所状态,从而能够描述出各条件库所间的异步并发的关系。各进程之间通过信号进行通信。信号是由新变化的参量引导进程产生的输出结果。设计进程的程序,使之产生的输出结果成为新的库所状态,从而影响变迁发生权条件,以各进程的输出结果作为进程间的通信信号。
(3)系统资源的冲突
VHDL语言支持行为描述和结构性描述等多种描述方法,使用VHDL语言的并行语句描述系统中的并发关系,用VHDL的顺序语句描述系统内部的顺序约束机制,为解决系统内部的有效冲突提供了可行的方法。在实际的Petri网模型中可能存在冲突,Petri网系统自身并不提供解决冲突的方法。
VHDL语言中的并行语句不能解决冲突问题。使用VHDL并行语句描述冲突时将导致资源的丢失。而使用VHDL语言中的顺序语句,如进程内部的语句,采用设定不同优先级的方法,可以解决Petri网中存在的冲突。
(4)VHDL语言的时延
在系统的设计过程中,需要建立时延模型对系统的时延特性进行分析。时延Petri 网引入到系统中进行建模、分析是十分必要的。由于VHDL语言具有很强的电路描述和建模能力,能从系统层、算法层、寄存器传输层(RTL)、逻辑层和电路层对数字电路进行建模和描述。所以使用VHDL语言来描述时延Petri网,并进行仿真,从而获得其性能,为系统的设计实现奠定基础。
在VHDL语言中,wait和after语句可被用来对电路的时延进行建模与仿真。wait语句用于进程。VHDL中使用after语句实现器件的传输延时和惯性延时。 (5)CAN单节点DSPN模型的VHDL编程实现
利用VHDL语言编制的CAN单节点DSPN模型部分程序如下: ARCHITECTURE a OF petri1 IS
signal ra1,rb1,r1,r2,r5,r10,ra2,rb2,rc,r8,r9:std_logic; begin
3