一个嵌入式系统的Petri网模型与CPLD实现
摘要:将Petri网与VHDL结合,运用Petri网建立硬件系统模型,然后采用VHDL语言进行设计,最终下载到CPLD,成功地实现了整个硬件系统的逻辑控制器设计。
关键词:Petri网 C/E模型 VHDL CPLD
Petri网是异步并发系统,没有人为的控制流,直观地表示了非确定性;且可以图形化的方式描述复杂的系统,并可运用数学工具进行分析。因此,其在软件系统的建模与仿真中得到广泛应用。Petri网自身具备的可运行性方便了系统形式化描述级的模拟,可以用于表达不同抽象级上的系统概念并清楚地描述整个系统的运作过程。笔者发现Petri网的应用目前仅局限于软件系统的设计,例如网络协议、物流管理等,而在硬件系统中却很少涉足。硬件系统随着功能的日益增强,其功能描述也越来越复杂。基于硬件系统描述的VHDL语言以其强大的硬件描述能力,已被广大科研工作者所采用。VHDL语言也适用于描述异步并发系统,因此可与Petri网建立的模型联系起来。
本文采用自顶向下与层次分析相结合的设计方法用Petri网的一个子类C/E系统(条件/事件系统)对视频输入卡的逻辑控制器建立模型。针对控制器C/E模型中关心和需要观察的变量,确定VHDL描述的实体和端口,由C/E系统网的拓扑结构确定条件和事件间的逻辑关系,构造VHDL语言中的结构体。采用EDA开发工具MAX+PLUS II进行代码设计,逻辑综合,并对设计进行仿真,最后下载到CPLD,验证了逻辑控制器设计的正确性。
图1 视频输入卡结构框图
1 应用背景及控制器功能要求
图1为某一视频输入卡结构框图。前端视频信号经过解码、缓冲后,将数据送入DSP处理。其中由逻辑控制器协调各部分之间的运作。从图1中可以看出,逻辑控制器与视频切换、视频解码、视频数据缓存以及DSP等部分存在联系,归纳起来需要完成五个基本功能:视频通道切换控制;插入行标志信息;FIFO的初始化操作;写FIFO;读FIFO。
要完成上述五个基本功能,必须保证每个功能与另一功能之间不存在冲突,但允许存在并发行为,同时它们之间的逻辑顺序应保持一致。因此需要一个主控模块协调各部分的操作。各功能部分之间的逻辑关系比较复杂,涉及到图像数据的行同步以及场同步等问题,一旦出错,则接收的就不是有效的图像数据,后续工作也不能正常进行。为此,首先建立Petri网模型,并运用数学工具进行分析,最后采用VHDL语言实现。
2 控制器Petri网模型
应用Petri网的一个子类C/E建立视频输入卡的逻辑控制器模型。控制器实现的五大功能,在满足各自条件的情况下,能够正确地完成相关操作。如果将每个功能展开进行Petri网模型设计,将会使整个C/E系统的节点过多。节点一多,则不易分析其性质和计算它的可达树、不变量等参数。Petri网特有的直观易懂、适于交流的图形表示也就失去了意义。采用层次分析的方法,首先在顶层根据各功能要求建立一个Petri网模型,然后在各个模块内部建立更详细的子模型。鉴于顶层和底层的分析方法类似,只将顶层模型展开讨论。网络的一些动态特性,如库所与变迁的含义如表1所示。
表1 库所和变迁的含义
库 所 | 含 义 | 变 迁 | 含 义 |
P1 | 初始化FIFO有效 | T0 | 系统开始(sysSTART) |
P2 | 初始化FIFO结束 | T1 | 通道切换 |
P3 | 插入行属性结束 | T2 | 初始化FIFO |
P4 | 读FIFO有效 | T3 | 插入行属性标志 |
P5 | 通道切换有能 | T4 | 写FIFO |
P6 | VREF=0 | T5 | 读FIFO奇场数据 |
P7 | 插入行属性标志有效 | T6 | 场开始 |
P8 | 写FIFO有效 | T7 | 场同步 |
P9 | RST0=0 | T8 | 行开始 |
P10 | HREF=0 | T9 | 行同步 |
P11 | VREF=1 | T0 | 行有效 |
P12 | HREF=1 | T11 | 读取FIFO偶场数据 |
P13 | RST0=1 | ||
P14 | 偶场结束 |
逻辑控制器顶层Petri网模型如图2所示。该模型是一个基本网系统,其状态元素称为条件,变迁元素称为事件。事件的发生改变条件的状态(成真与否),引起信息在网上的流动1。由条件和事件组成的有向网通常表现为三元组(B,E;F),其中B为条件集,E为事件集。同时该模型还满足如下条件:
·(B,E;F)为简单网;
·B中每个条件都有机会成真,也有机会成假;
·E中每个事件都有机会发生;
·由初始情态ci导出的可达情态集是完全可到达关系R下的等价类。
因此,该模型还是一个C/E系统。在Petri网仿真软件Visual Object Net++中进行仿真测试,结果表明该模型能很好地描述控制器各部分之间的逻辑关系。
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 VHDL程序的基本单元设计
CPLD(复杂可编程逻辑器件)是处于并行工作方式的基本电路单元构成的高速、大规模集成器件,可作为一种并发系统模型与Petri网建立联系。VHDL作为一种硬件描述语言,支持行为描述、数据流描述和结构化描述等多种描述方法,可以用并行和顺序多种语句方式描述实际的系统,并可采用VHDL的并行语句描述C/E系统中条件/事件间的并发关系,用VHDL的顺序语句描述条件/事件间的顺序约束机制,为解决C/E系统中的有效冲突提供了可行的方法。
VHDL语言程序设计的基本单元称