结构化状态机(精选7篇)
结构化状态机 篇1
0引言
金属结构作为起重机的主要承载部件,约占整机总重的3/4左右,起到“骨架”作用。以桥式起重机为例,其起升载荷通过起重小车的车轮传递给主梁,主梁再传递给端梁,端梁通过大车车轮传递给轨道,最终由轨道传递到轨道梁的基础来完成载荷的传承。由此可见,起重机金属结构的作用之大。
目前,由于起重机结构的破坏导致的事故很多,如铸造起重机桥架的坍塌事故、桥式起重机的主梁断裂事故、门座起重机主梁隔板变形破坏事故、门座起重机臂架弯折事故和平衡梁折断事故等。由于这些事故往往造成灾难性的后果和损失,因此,对起重机的金属结构进行监测与诊断,提供一种行之有效的结构健康状态评估方法是非常必要的。
1现有起重机维护方法
现有桥式起重机的维护方式包括计划维护、状态维护和事后维护。计划维护就是根据以往的起重机损坏经验、生产任务等,采取停机检修的方式对起重机整机进行大修,一般一定时间间隔内进行一次计划维护; 状态维护就是根据温度检测、挠度检测、应力检测等技术,采取在线监测的方式对起重机的结构部件进行监测维护;事后维护是根据已发生的故障、事故,采取停机检修方式对失效的结构进行修复、更换,甚至宣布整机报废。现有桥式起重机维护方式如图1所示。
现行起重机维修制度正逐渐从计划维护模式向健康维护模式转变,如何保障起重机的安全运行和维护管理,关键是在于怎样综合评价起重机结构的健康状态,要实现结构的状态评价,必须合理构建起重机结构健康状态评价的指标体系。
2起重机结构健康状态指标体系
2.1健康指标体系构建原则
对起重机结构健康状态进行评价首先应建立评价指标体系,指标的作用就是将结构健康状态这一定性的概念转化为用数量来表示的定量的分析。由于影响起重机金属结构安全性的因素很多并且各因素之间关系复杂,因此通过各个指标来建立评价体系对金属结构的状态进行评价尤为必要。指标体系是状态评价成功与否的关键因素,它对数据及信息的收集起着指引作用,同时通过指标体系的建立,还有利于评价模型形式的选取与评价方法的选定。因此,在对金属结构进行健康状态评价时建立合理、有效的指标体系非常重要。
体系的建立大概遵循以下5个原则:可操作性原则、科学性原则、可比性原则、目的性原则、定性与定量相结合原则。所有原则都由状态评价的目的来决定, 并以评价目的为前提,最终建立评价体系。
2.2结构健康状态主要指标
由于桥式起重机结构失效导致的事故主要有桥架的坍塌、主梁的断裂等,究其原因主要是由结构的强度与刚度失效引起的。因此,对于桥机结构,其健康状态主要从静强度和静刚度两方面来进行评估。强度评估主要选取主梁危险截面的应力作为其评估指标,而刚度评估则选取主梁跨中的下挠度作为其评价指标。评估的目的就是认清结构的实际安全状况,以免在使用过程中发生事故。
2.2.1静刚度标准
本文以桥机主梁下挠度为例对静刚度标准进行说明。以A5工作级别的桥机为例,主梁下挠到一定程度以后将会影响起重机的正常使用,甚至发生严重后果。为了确保安全生产,必须根据实际情况,确定主梁下挠的允许下挠界限和应修界限。根据变形与应力的关系确定应修界限,即将主梁内应力达到比例极限时相应的变形作为桥式起重机主梁变形应修界限的下限,表1中给出4个跨度下的计算值作为健康评价指标的参考值。
表1中的数字仅适用于桥式起重机工作级别A5和A6;下挠值计算起点为水平线;应修下挠值只是建议,使用时可以根据实际情况灵活掌握。
对于相应的跨度,我们都可以通过计算获得它的允许下挠值和应修下挠值,以此来作为刚度指标的监测标准。在对起重机结构进行健康监测时,可以通过监测数据与所指定标准的比较来判断起重机所处的健康状态等级,以便指定维修保养策略,减少事故发生。
2.2.2静强度标准
对于强度标准,即许用应力,需根据起重机的工作级别、载荷组合情况和起重机材料选择来计算。以A5工作级别,第Ⅱ类载荷组合,材料为Q235(即屈服强度 σs=235MPa)的桥式起重机为例,其许用应力为:
[σ]Ⅱ=σs/n=σs/1.33=176.9 MPa .
其中:n=1.33为起重机安全系数。
在对起重机进行监测时,通过对应力指标数据的提取,与许用应力进行比较,以此判断桥机结构的健康状况。此外还可对结构的健康状态进行等级划分,在一定标准内为良好,其次为欠佳,再次为危险,该标准还有待进一步研究。
2.3桥机健康状态指标体系结构
根据上述健康指标的选择可简单建立桥式起重机结构健康状态评价的指标体系,如图2所示。
建立上述指标体系,指标选取的方式主要是从数值类指标入手,其实具体来说,影响起重机安全评价的指标还有很多,诸如开裂、变形、锈蚀等。考虑到建模的复杂性,本文暂时选取三类数值类指标来验证评价方法的正确性。
3结构健康状态贝叶斯评价模型与举例
贝叶斯网络推理就是利用贝叶斯网络的结构及其条件概率表,在给定数据后计算某些节点取值的概率, 显然概率推理是贝叶斯推理的重要组成部分。贝叶斯网络的联合概率分布是由条件概率表和网络拓扑结构直观显示出来的,也就是说其推理过程是通过BN联合概率的参数化方式计算需要的概率值。
考虑到贝叶斯网络在表达不确定知识和进行不确定性知识推理方面的优势,建立了基于BN的桥式起重机结构健康状态评价模型;结合专家经验和监测数据信息,确定出评价模型的条件概率分布;并结合桥机的信息及诸多专家经验对所建评估模型的条件概率进行更新,进而利用贝叶斯网络确定其边缘概率,可灵活方便地对系统进行预测及诊断分析,评估桥式起重机的健康状态等级。
为验证上述健康评价指标体系的合理有效性,采用由美国的匹兹堡大学开发的GeNie图模型处理软件进行分析,该软件的应用界面如图3所示。通过图2的桥机结构健康状态评价指标体系,运用该软件建立起重机结构健康状态评价的贝叶斯网络拓扑结构, 如图4所示。
BN模型构建完后,在具有一定数据时可利用BN推理,求出发生损坏的概率,即实现状态的评价。评价结构状态可以利用所得到的概率P(S=Yes)根据评价准则进行评估:若P(S=Yes)<0.4,则该结构的健康级别为健康;若0.4≤P(S=Yes)≤0.6,则结构为亚健康级别;若P(S=Yes)>0.6,则结构为疾病状态。
由检测数据结合专家(分别有专家E1、专家E2、 专家E3)的经验评价准则,更新得出根节点的边缘概率,进而评价得出结构的健康状态情况如表2所示。
4结论
通过所建立的健康指标体系和评价准则,结合贝叶斯网络建模分析,可根据监测数据和专家经验评价出起重机结构的健康状态,是健康、亚健康,还是疾病,这对于保障起重机结构的安全性具有重大的意义。
基于状态机比对的状态机推断方案 篇2
在对网络协议进行分析的过程中, 需要用到各种技术, 其中网络协议逆向工程是一门经常被用来逆向分析网络协议流从而获得协议信息的技术。协议逆向工程[1]是指在不依赖协议描述的情况下, 通过对协议实体网络数据的输入输出、系统行为和指令执行流程进行监控和分析, 从而提取协议格式以及协议状态机信息的过程。网络协议逆向分为两个部分, 它们分别是消息格式提取和状态机推断。
消息格式提取是指逆向分析出消息的格式。协议一般是由多个会话组成的分层的结构, 每个会话由许多消息序列组成, 而消息序列由域组成, 域的定义是最小的有一定意义的连续数据序列。大部分协议都包括分隔符、长度域及其目标域、关键词, 所以协议格式的推断一般首先提取这三种域, 然后再根据它们分离出消息序列的其他域。
网络协议逆向分析的另一个部分是状态机推断[2], 传统状态机推断方法一般包括三个步骤, 即:
1) 利用前期采样到的会话数据, 根据会话集构建状态前缀树;
2) 根据消息序列的特性对不同的状态机进行标注;
3) 使用状态机化简算法合并和化简状态机。
2问题描述
在前期状态机推断的研究工作中都理想化研究结果, 认为利用协议逆向技术推断出的状态机是该协议的完整状态机, 但是协议逆向工程推断出的状态机有可能不是协议的原始状态机, 因为输入的会话集合可能没有完全遍历协议状态机的各条路径, 或者在状态机推断过程中存在某些偏差使得推断的状态机并不是一个完全正确的协议状态机。以这个不完整的甚至带有某些错误的状态机为基础进行后续工作, 产生的结果与预期的结果会有偏差。基于以上的原因, 协议逆向推断的状态机需要进一步处理以获得完整正确的协议状态机。
3状态机推断
针对发现的问题, 本文提出了状态机比对的思想, 比对推断出的状态机与已有状态机, 从而获得状态机的完整信息, 便于后续的漏洞挖掘工作的进行。所以本文状态机推断的完整流程为:
1) 根据输入的会话集构造状态机的泛化前缀树接收器;
2) 使用算法确定报文类型之间的顺序特征, 确定先决条件, 利用先决条件标注状态;
3) 利用DFA (有穷自动机) 化简算法化简合并前缀树;
4) 利用字符串相似度算法比对推断出的状态机与现有状态机, 确定逆向协议状态机的完整信息。
流程图如图1所示。
本文忽略状态机推断的其他步骤, 着重讨论状态机比对部分。状态机比对是指将推断出的状态机与现有协议的状态机做比对, 根据状态机的相似性确定推断出的状态机的所属协议。考虑到状态机整体比较的困难性, 那么可以将状态机分作多个元素, 取其中的决定性元素作为比对参照物。状态机是由多个状态和状态转换组成的, 状态机的状态转换就可以作为比对参照物。利用一些转换将状态转换化为字符串, 这样就可以使用字符串序列比对的方法来比对各条状态转换, 从而比对各个状态机。字符串比对一般都是利用字符串的相似度作为度量, 所以本文的状态机比对以字符串相似度算法为核心。
3.1最长公共子序列算法
字符串相似度有很多种算法, 比如编辑距离算法[3]、最长公共子序列 (LCS) 算法和贪婪字符串比对算法 (GST) 等, 其中编辑距离算法只能针对顺序的匹配, 算法的时间复杂度较大, 贪婪算法采用了逐字符比较的方法, 算法的时间复杂度也较大。另外这里的字符串比对环境更适合使用LCS算法, 所以这里选择LCS算法作为比对算法。
LSC算法是在不改变字符顺序的情况下将两个给定的字符串分别删掉其中的零个或者几个字符, 得到长度最大的相同字符序列的算法。也就是说, 给定字符串P、T, 计算它们的最长公共子序列X。这种算法有多种解析方式, 但是一般使用递归的方法, 分为自上而下递归与自下而上递归两种, 这两种递归方式并没有本质上的差别, 本文选用自上而下的递推法, 算法具体的步骤描述如下:
1) 获得两个字符串的长度L1 (S1) 和L2 (S2) , 此时如果L1或者L2中任意一个数字为0, 则最大公共子串长度为0。
2) L1和L2皆不为零的情况下构造一个矩阵a, 其大小为 (L1+1) × (L2+1) , 矩阵的第一行与第一列置零, 也就是ai, 0=0, a0, j=0, 其中0≤i≤L1, 0≤j≤L2。
3) 在计算ai, j时的值已经被计算出来了, 利用递归式 (1) 计算矩阵A的每一行每一列的参数, 矩阵中最大的一个数值就是最长公共子串的长度, 用符号LCS表示,
相似度用δ表示, 其计算方法如公式 (2) 所示。
主要的步骤如流程图2所示。
例如计算字符串T=abcdefgh和字符串P=xyzabpd的相似度, 根据递归公式构造出的矩阵如图3所示。
根据图3可知最大的公共子序列为X=abd, 最大公共子序列长度为3, 根据这个长度可以得到两个字符串的相似度为
3.2状态机比对
将协议的状态转换表示为一个四元组<初始状态, 动作, 消息模式, 结束状态>, 表示为矢量t=<Si, action, M, Sj>, 其中action有两种:发送 (send) 和接收 (recv) , M表示消息的格式, 这里为了后续比对的方便, 简略地将消息用分隔符和关键词表示, 省略掉消息中的其他域。例如一个消息序列是由两个关键词和两个分隔符组成的, 那么M为关键词1加分隔符1加关键词2加分隔符2, 关键词和分隔符按在消息序列中的顺序排列。整个状态机的状态转换就表示为<t1, t2, t3…>, 一个协议的状态机用这种转换方式构成一个转换矩阵。因为根据标记训练集推断出的状态机是完整状态机的一个部分, 所以可以从完整状态机矢量矩阵中寻找推断出的状态机矢量, 能够寻找到该状态机的矩阵就是该状态机所属的协议。状态转换包括四个参数, 这4个参数中有2个可以用来作为比较内容区分转换 (因为状态的表述不一定完全相同) , 那就是action和M。
称协议逆向出来的状态机为协议P的状态机, 状态机比对的具体步骤如下:
1) 将协议的状态转换按照动作分为send组合recv组, 先在recv组别中比对;
2) 取协议P状态机中状态转换recv组的一个状态转换ti的消息序列 (包含关键词和分隔符) , 与已知的协议状态转换分在recv组的消息序列做对比, 这里使用LCS算法计算相似度, 与新推断状态机的状态转换ti相似度最高的协议记为Pn;
3) 取新推断状态机的状态转换ti+1, 与已知的协议状态转换分在recv组的消息序列做对比, 相似度最高的协议若是与Pn相同, 记为Pn, 否则记为Pn+1;
4) 重复步骤2) 和3) , 直到协议P的recv组中的状态转换比对完毕, 然后比对协议P的send组中状态转换, 重复步骤2) 和3) (将其中的recv替换为send) ;
5) 计算被记录相同协议符号的个数, 最多的就是新推断协议状态机所属协议的状态机。
例如表1列出的新推断出的协议状态转换序列与现有协议1和协议2的转换序列, 根据LCS算法计算出新推断协议的各条状态转换序列与协议1和协议2的状态转换序列相似度中, 与序列Aab Bc相似度最大的是协议1的Aab BFc (91%) , 与序列Cac相似度最大的是协议2的Cac (100%) , 与序列Dd Ec相似度最大的是协议1的Dd Ec (100%) , 所以新推断协议与协议1有两条状态转换相似度最大, 占新推断协议状态转换的2/3, 所以可以确定新推断的协议状态机隶属于协议1的状态机, 也就是说协议1是逆向分析的协议。
4结束语
随着科学技术的发展, 网络协议逆向工程的应用将会越来越广泛, 因为现代技术的发展更加看重自动化的技术。为了更加深入地对协议进行逆向, 就需要解决协议逆向工程中的种种问题, 状态机的推断是协议逆向的一大难点, 很多研究都规避此类研究, 这无助于协议逆向技术的发展。本文针对状态机推断过程中可能出现的理想化问题提出解决方案, 其中还存在一些不足, 但是相信对未来的协议逆向技术发展会有一些积极的作用。
参考文献
[1]潘瑶, 吴礼发, 杜有翔, 等.协议逆向工程研究进展[J].计算机应用研究, 2011, 28 (8) :2 801-2 806.
[2]张钊, 温巧燕, 唐文.协议规范挖掘研究综述[J].计算机工程与应用, 2013, 49 (9) :1-9.
结构化状态机 篇3
2-PK610约克冰机是聚丙烯二套装置的关键设备。冷冻水系统温度控制的核心设备, 聚丙烯生产工艺中的催化剂配置温度;Teal、DONOR、催化剂预接触系统的温度;预聚合反应器系统温度;驰放气排放系统温度;氢气提纯系统的温度都是由冷冻水来控制的, 也就是说, 冰机的启动是聚丙烯装置能否生产的前提。
2 压缩机参数
设备名称:2-C610冷冻单元压缩机
型号:RWFⅡ177
转速:2950rpm
工作压力:入口5bara、出口12bara
工作温度:入口-8℃、出口55℃
冷冻水温度:进7℃、出2℃
功率:315kw
负荷控制:10%-100%
制冷剂:丙烯
机组其附属设备位号及名称:2-D619油分离器;2-F611A/B油过滤器;2-E614油冷却器;
2-E611冷凝器;2-E612蒸发器2-D618回油器
3 约克冰机制冷原理
液相丙烯在压缩机运行时压力降低, 丙烯气化吸收大量的热, 将冷冻水的热量带走, 从而降低了冷冻水的温度实现制冷。整个制冷过程发生在2-E612蒸发器里。
-8℃、5bara的气相丙烯进入压缩机, 压缩后变成55℃、12bara的气相丙烯, 丙烯进入冷凝器经过装置26℃的夹套水冷却, 气相丙烯变成液相, 冷凝器压力高, 蒸发器压力低, 液相丙烯通过蒸发器液位控制阀向蒸发器源源不断的输送液相丙烯。整个制冷过程丙烯是不消耗的。
4 冰机长周期停机后开车困难的问题
装置冰机长周期停机后启车困难是困扰聚丙烯人的一大难题, 首先必须确认机组工艺流程、机械、电器、仪表等相关专业无问题后, 开车时仍然会出现无法建立润滑油压差的报警联锁停车。曾经出现过因为无法建立油压差冰机启动不了, 润滑油压力是由压缩机出口与入口的压差建立起来的。延误了装置生产开工进程的情况, 最后厂家技术人员到现场旁掉相关联锁, 冒险启车。这对于生产对于设备都是冒险的举动。
经过理论与实际的结合, 并同时比对各种生产情况下冰机的运行参数。我们不难发现, 整个冷冻水系统的温度会随着冰机停机的时间不断升高, 开车时冷冻水温度甚至能达到40℃左右, 而冰机冷冻水额定工况是进水7℃出水2℃。这是由于聚丙烯工艺技术造成。因为催化剂配置系统;Teal、DONOR、催化剂预接触系统;预聚合反应器系统都有蒸汽与冷冻水接触, 而且冷冻水补水是由蒸汽凝液补充的。开车困难最大的问题根源就是冷冻水温度过高。
5 原因初步排查与分析
根据问题的情况, 现进行分析与排查, 见图1。
6 结论与实践
根据问题的分析总结出三个可以使冰机启车稳定的方法。
(1) 降低冷冻水温度:结合工艺生产根据气候温度, 当装置长周期停工时, 冷冻水系统的蒸汽尽量停掉, 待冰机运行稳定切冷冻水温度接近额定温度时逐渐投用。
(2) 降低冷冻水流量:在准备启机的时候根据冷冻水温度尽量关小冰机冷冻水出口阀, 关至20%左右。待压缩机运行稳定, 冷冻水温度降低后缓慢开阀, 增大冷冻水流量。
(3) 降低机组内液相丙烯输送量:关闭液位控制阀的后手阀, 开两圈液位控制阀的跨线手阀, 同时观察2-E612蒸发器液位, 和压缩机入口压力, 启车后在允许加载的情况下持续加载, 当入口压力过高时关小跨线手阀, 要尽量维持蒸发器液位稳定, 压缩机入口压力稳定。同时持续加载提高压缩机负荷, 增大出口压力。当冷冻水温度降低接近额定温度时投用液位控制阀, 关闭跨线手阀, 并将压缩机滑阀投自动。
综上所述就可以稳定的启车, 并且建立润滑油压差。使冷冻水系统温度不断的降下来。
2013年9月18日聚丙烯二车间装置开工, 当时冷冻水温度为35℃, 用上述方法, 聚丙烯二期冰机一次开车成功, 并稳定运行服务生产。
参考文献
[1]陈敏恒, 潘鹤林, 齐鸣斋.化工原理, 2008;56-100
异步时序状态机的分析与设计 篇4
有限状态机及其设计技术是实用数字系统设计中最重要组成部分,也是实现高效率、高可靠和高速控制逻辑系统的重要途径[1]。异步时序状态机是相对于同步时序状态机而言的。同步时序状态机的设计、状态分配及化简在许多书籍中都有详细的介绍,对于异步时序状态机设计的介绍则极少。在许多情况下,一个电子系统中无法只用一个同步的时钟脉冲,对于局部的电路设计可采用异步的模式。
本文以一个状态机为例,详细地给出异步时序状态机设计的步骤。为了验证设计电路的正确性,通过在Quartusii软件上编写Verilog HDL代码和testbench且在modelsim上测试其逻辑,结果表明所设计的电路是正确的。
1异步时序状态机的基本模型
异步时序状态机的基本模型如图1所示。
图中X、Z分别为输入和输出信号,&为输入逻辑,Y为存储单元,λ为输出逻辑。输出逻辑中有X信号则为mealy型状态机,否则为moore型状态机。
2异步时序状态机的设计步骤
下面将对图2所给的状态转换图进行状态机分析设计。
2.1画出原始流程表
根据所给的状态转换图来画出原始流程表。原始流程表描述了所有输入状态下的现态,以及下一个输入所对应的次态。所得流程表如图3所示。
图中x1x2为输入,在一行中被圈住的状态为现态,其余的为次态,“-”为不关心,z1表示当前状态的输出。
2.2合并状态图
在合并状态图之前,可将等价状态进行化简成为简化流程表。由于从上述流程表中可以观察到并无等价的状态,因此可直接进行合并状态图。
合并状态图就是把流程表中的多行合并成一行的过程。也就是说,利用这种合并的方式也可以有效减少流程表的行数,从而减少反馈变量的数目[2]。这使得逻辑电路变得更加简单。如果两行每一列的状态值都满足下列3个条件之一,就可以把两行合并成一行。1)不管是否是稳态,状态值相同即可;2)一个状态值是确定值,另一个状态值是不关心的;3)两个状态值是不关心的[2]。
根据以上规则,可以得出第1行和第2行可以合并成一行,第1行和第5行可以合并成一行。合并状态图如图4所示。
由于状态a与状态b相连,状态a与状态e相连,但状态b与状态e并未相连。因此状态a和状态b可以合并成一行,或者状态a和状态e合并成一行。合并之后形成合并流程表如图5所示。
此处将状态a和状态b合并成一行。
2.3写出激励方程
接下来进行状态分配,状态a(b)为00,状态c为01,状态d为11,状态e为10。可得图6所示的合并激励图。
将合并激励图分解成两个卡诺图,然后按照卡诺图的化简规则可得反馈变量的激励方程。得激励方程为 ,输出方程
2电路设计
根据上面的激励方程和输出方程可设计出异步时序状态机电路图7为所设计的异步时序状态机的逻辑电路。
图中在每个输入的与门和输出中均加入了复位信号rst_n。
3 Verilog HDL描述与逻辑测试
Verilog HDL是一种用于数字逻辑电路设计的语言。用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型[3]。为了验证所设计状态机电路的正确性,这里在Quartusii软件上用Verilog HDL进行逻辑电路的描述。Verilog HDL代码如下:
通过编写逻辑测试代码testbench并在modelsim软件上进行逻辑测试。最终得到测试结果如图8、9所示。
图中x1,x2为当前输入,state为当前状态,z1为现态的输出。当state=10时,即状态e,z1输出高电平。
4结束语
基于状态机伪码快速捕获的研究 篇5
扩频通信是指用来传输信息的射频带宽远大于信息本身带宽的一种通信方式,窄带宽的信号通过与宽带宽的伪随机码进行作用而实现扩频,扩频系统能带来30 dB以上的信噪比改善,使干扰的影响减少了1 000倍以上。它对抗干扰影响具有重要作用,而且扩频通信还将带来一系列革命性的影响。 最容易理解的扩频通信方式就是直接序列扩频,简称直扩(DS)。所传送的信息符号经伪随机序列(或称伪噪声码)编码后对载波进行调制。伪随机序列的速率远大于要传送信息的速率,因而调制后的信号频谱宽度将远大于所传送信息的频谱宽度。为了增强信息的保密性,通常要增加伪随机码的周期长度以增加被破解的难度,因此,伪随机码的周期长度不能太短。在直扩系统中,伪随机码快速准确的捕获一直都是研究的重点和难点之一。常见的捕获方法有串行和并行捕获两种[1,2]。
1 串行捕获
串行捕获的原理图如图1所示,首先在本地端产生一个与扩频端相同的伪随机码,把收到信息序列与本地产生的伪随机码码序列做相关运算,由于伪随机码有尖锐的自相关特性,因此只有两个码序列相位一致时才有高的相关值输出。接收信号与本地伪随机码进行相关后的相关值送人门限比较器进行比较, 若低于某一设定门限, 就控制本地伪随机码发生器移动一个相位,再次让本地扩频序列与接收扩频序列相关、比较,直至两个相位保持一致,然后启动跟踪步骤使两个序列保持相位一致[3,4]。这个过程要通过两序列相关检测与积分累加判决来完成。由于滑动相关法要做大量的相乘累加运算,滑动有可能遍历整个周期长度,因此相位滑动搜索速度较慢,平均捕获时间较长。如果伪随机码相位服从均匀分布,相位一次移动半个码片,则采用串行捕获的时间的数学期望是伪随机码的周期长度P。
2 并行捕获
并行捕获的基本原理如图2所示:假设伪随机码的周期长度为P。如果在接收端用2P个本地伪随机码,相邻两个伪随机码序列相位间隔为半个码片,即Tc/2时间,其中Tc为一个码元的时间。让收到的信息序列和各个本地伪随机码分别同时做相关运算,哪个相关器的输出最大, 哪个相关处理器的本地序列与接收序列的相位最接近,也就找到了本地序列的同步相位,实现了信息序列的捕捉[5,6]。在并行捕获中,只需要半个码片的时间就可以得到信息序列的相位,捕获时间大大缩短。如果想提高捕获的精度,还可以设置更对的本地伪随机码,相邻伪随机码序列的相位差更小,则捕获的精度更高并且不增加捕获时间。这种捕获时间的缩短是靠增加设备的复杂性而获得的。当伪随机码序列周期较大且捕获精度要求较高时,电路设备量过大。
3 FPGA串行捕获实现
利用Altera公司的Quartus Ⅱ软件,采用原理图和VHDL语言相结合的方法来实现伪码快速捕获电路。整个过程中采用层次化设计,即先对各个模块进行具体设计仿真, 再由这些功能模块组合成整个系统的设计方法。数字下变频的功能是从输入的高速数据流中去除载波,将其下变频为数字基带信号。假设要处理的信号就是经过数字下变频处理的数字基带信号。首先设计一个m序列产生器来产生伪随机码,再用一个串行捕获电路来检查收到的伪随机码的相位,当本地码序列的相位和收到的码序列的相位比较一致时输出捕获成功信号表示捕获成功[7]。该系统的顶层文件如图3所示。
图3中左边第一个模块为m序列产生器,用来产生伪随机码,为了方便演示结果,采用阶数较低的生成多项式为X4+X+1,生成的序列为000100110101111,周期为P=15。中间的模块中有个固定相位的伪随机码序列,把收到信息序列与本地产生的伪随机码码序列做异或运算并将异或结果输出,右边的模块对异或结果进行判决,当异或结果中‘0’的个数大于门限值时就认为捕获成功,输出捕获成功信号。仿真结果如图4所示。
从仿真图中可以看出,经过一段时间后输出管脚gout输出捕获成功信号。图中bus1是异或结果总线,clk是时钟信号。该系统消耗资源如图所示,从图5中可以看出共消耗33个逻辑单元。
4 FPGA状态机捕获实现
文献[8,9,10]分别介绍了大步进、匹配滤波器、双层循环等新的捕获方法,但这些方法实现都比传统的捕获方法复杂,这里介绍一种基于状态机的捕获方案。状态机捕获电路伪随机码仍采捕获电路中的m序列,伪随机码序列周期为P,状态机就有P个状态,一个状态中码元个数是由以下方法确定,相邻N个码元为一个状态,将整个码序列遍历一遍没有重复状态的最小的那个N即为一个状态中码元个数。本例中将具有15个码元的序列中相邻4个码元作为一个状态。每接收1个码元,一个状态就有可能跳向另一个状态(特殊情况跳向本身),跳到某个固定状态时输出一个结束信号,由结束信号出现的早晚来确定输入码序列的相位。状态机的仿真结果图如图6所示。
图6中clk是时钟信号,out1是捕获结束信号,rst是重启信号。从图中可以看出,经过几个周期,输出管脚out1输出结束信号,由重启信号和结束信号之间的时间决定输入码序列的相位。该系统消耗资源如图7所示。
从图7中可看出,状态机捕获电路共消耗19个逻辑单元,比串行捕获电路消耗资源少。
5 结 语
提出基于状态机的伪码快速捕获方案,介绍了捕获的原理,利用 Altera公司的QuartusⅡ软件,采用原理图和VHDL语言相结合的方法来实现伪码快速捕获系统。同时还实现了传统的串行捕获系统。通过两个系统的仿真比较,验证了状态机捕获电路的正确性。仿真结果表明,状态机捕获电路捕获速度与串行捕获电路相差无几,但消耗资源比串行捕获电路要少。系统软件都下载到康芯公司的EP2C5T144C8硬件开发板中,实验结果和仿真结果完全相符,证明了该方法的可行性。
参考文献
[1]王凤宇.扩频码快速捕获算法的研究[D].哈尔滨:哈尔滨工业大学,2006.
[2]曾海彬,王天宝.一种低信噪比下PN码的快速捕获技术[J].成都信息工程学院学报,2009,24(2):126-128.
[3]周先军,胡修林,张蕴玉,等.一种基于二分试探法的相干扩频快捕系统[J].信号处理,2007,23(1):116-119.
[4]张野,卢哲.短波突发通信快速同步技术研究[J].山西电子技术,2007(6):70-73.
[5]王鹏宇,吕善伟,董胜波.基于多伪码周期的直扩快速捕获新方法[J].宇航计测技术,2008,28(1):4-8.
[6]张树勇,曹永刚,郭岩.一种新型数字高精度伪码快速捕获延迟锁定环的设计与实现[J].飞机设计,2007,27(5):76-80.
[7]王伟,焦健,蔡鹤皋.基于FPGA的扩频信号快速捕获电路设计与实现[J].弹箭与制导学报,2009,29(5):227-231.
[8]陈超,田红心.一种快速直接的长码捕获方法[J].导弹与航天运载技术,2008(5):53-56.
[9]廉保旺,刘慧红,毛得明.基于匹配滤波器与FFT的伪码快速捕获方法及性能分析[J].测控技术,2009,28(1):20-23.
[10]李志军,史健婷,隋晓红,等.通信测距复合系统中的扩频码捕获研究[J].信息技术,2007(11):23-24.
结构化状态机 篇6
1 有限状态机结构
有限状态主要由两部分构成, 包括组合逻辑电路和状态寄存器, 是数字系统中的控制单元, 用来控制有限个状态之间进行相互动作和转移控制中心。有限状态机主要分为Mealy型和Moore型两类。其中, Mealy型有限状态机的输出信号不仅与当前状态有关, 还会受输入变量的影响;而Moore型有限状态机的输出信号只与当前状态有关, 与输入信号没有关系。
由模块图 (a) 及模块图 (b) 可以看出, 无论是Mealy型有限状态机还是Moore型有限状态机都包括了三个部分:次态逻辑、状态寄存器、输出逻辑。其中状态寄存器 (CS) 是维持现有状态不变。当时钟信号变动出现时, 该变动会对状态寄存器进行赋值, 状态寄存器的输入信号就是次态逻辑组合电路的输出信号, 状态寄存器的输出信号就是输出逻辑电路和次态逻辑电路的输入信号。其中, Mealy型有限状态机中, 因为其输出函数是输入信号和当前状态的共同结果, 所以当改变输入信号和状态时钟信号出现变动时, 都会影响信号的输出结果。Moore型有限状态机中, 其输出函数只受当前状态的影响, 因此只有当状态时钟信号出现变动时, 输出结果才会变化。
2 有限状态机VHDL设计方法研究
VHDL作为一种语言, 具备说明数字系统的各种设计的功能。在基于VHDL设计的有限状态机中, 其设计均由VHDL文件来进行描述。VHDL文件包括结构体、参数以及实体三个部分。运用VHDL设计有限状态机的需要遵循一定的程序:首先, 明确系统要求, 建立出符合要求状态转移图;其次, 根据建立的转移图, 进行VHDL设计程序的编写工作;最后, 运用EDA工具对设计程序进行仿真及验证。而传统的有限状态机的设计方法更为繁琐, 需要先制作出状态控制器的设计图, 然后绘制出状态表, 将其中的等价状态项合并在一起, 通过运算得出方程, 最后画出原理图。与传统数字系统设计方法相比较, 运用VHDL设计方法, 可以能够极大的简化整个设计过程, 运用EDA来进行逻辑功能的测试、制作状态表及绘制设计原理图等工作, 提高了工作效率。
基于VHDL设计的Mealy型状态机在现实中也有众多运用, 如自动售卖机等。假设自动售货机内的薯片价格是每袋3元, 一次只能投进一枚0.50元或1.00元的硬币。当投入2.50元后, 如果再投进去1枚1.00元的硬币, 就会找回0.50元并给出一袋薯片;如果再投进去1枚0.50元的硬币, 就只会给出一袋薯片。这就是一个Mealy型有限状态机的问题, 投进硬币的信号就是输入变量, 共有两个;投币时, 自动售货机内已经有的硬币面值就是当前状态, 共有六个;投币完成后自动售货机给出的东西就是输出结果, 共有两个。
基于VHDL设计的Moore型的有限状态机, 要能够清楚分辨出时序逻辑电路与组合逻辑电路。对于组合逻辑电路和状态寄存器, 要分别用不同的PROCESS语句进行描述。其中, 对于时序逻辑电路 (状态寄存器) 的描述, 需要运用IF CP’EVENT AND CP=’1’THEN语句, 同时还要在敏感信号列表中引入时钟信号。此外, 由于Moore型有限状态机的输出与输入变量没有关系, 只与现存状态有关, 因此在对组合逻辑进行描述时, 在判断有限状态机的状态方式上需要选择运用CASE语句, 避免将输出函数变量的赋值语句放在IF-ELSE-END语句中, 而应该将它放在IF-ELSE-END的语句后面。
3 结论
通过本文对有限状态机VHDL设计方法的研究可以看出, 相较于传统有限状态机的设计方法, 运用VHDL设计方法大大简化了设计程序, 降低了设计难度。运用从上至下的VHDL设计方法, 在保证符合系统总体要求的前提下, 一步步的细分设计有限状态机的内容, 然后完成整个设计。
运用VHDL设计有限状态机时, VHDL语言相对独立于设计描述的特性, 不用在意设计电路的内部制造工艺, 也不用思考如何处理电路内部的逻辑关系或结构, 适用于设计逻辑复杂的电路。运用VHDL语言设计有限状态机, 不仅能完美的适应有限状态机复杂的电路, 还极大的提高了有限状态机的性能、效率以及可靠性, 还降低了成本, 缩短了设计所耗费的时间。
参考文献
[1]侯伯亨, 顾新.硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社, 1999:173-216.
[2]亲铭, 高明伦.工业控制芯片中状态机的描述方法.合肥:第三届全球智能与自动化大会, 2000:40-67.
[3]邬杨波, 王曙光.有限状态机的VHDL设计及优化[J].信息技术, 2004 (1) :75-78.
结构化状态机 篇7
1 智能柜工作原理
智能开关柜采用C51单片机作为控制系统, 配有液晶屏和键盘, 通过IC卡结合密码的形式确认用户身份, 控制继电器执行开柜操作, 通过管理员卡进行系统的管理维护。工作时, 首先由管理员给持有合法IC卡的用户分配箱号, 用户在使用时, 刷IC卡然后操作键盘输入密码, 系统自动完成IC卡与密码的合法性验证, 验证成功后开启对应的箱门。但在新研的智能开关柜项目中, 用户对安全性提出了更高的要求, 对箱门的开启强调双管双控, 主要体现在以下6个方面:
(1) 增加检查卡功能:由检查人员使用, 检查卡具有最高开箱权限, 可与管理员卡配合开启任一箱门进行检查。
(2) 增加监控卡功能:由监控人员使用, 配合用户开箱, 实现“双管双控”。
(3) 增加白名单功能:为提高安全级别, 对仅需工作牌作为唯一识别卡的工作场所, 采用白名单功能, 由管理员统一收集有使用智能柜权限的员工工作牌, 逐一刷卡注册白名单。
(4) 增加一卡多箱功能:一张用户卡可以对应多个箱门, 通过液晶屏提示用户, 由用户选择所需开启的箱号。
(5) 增加一箱多卡功能:一个箱门可对应多张用户卡, 由有开箱权限的用户刷卡开启。
(6) 增加动态分配箱号功能:对于临时需要使用智能柜, 但又未通过管理员分配箱号的白名单用户, 可动态分配临时箱号, 使用后清除记录。
从用户需求进行分析, IC卡分为管理卡、用户卡、检查卡以及监控卡一共4种, 相应的持卡人员的角色也增加到了4种, 分别是管理员、用户、检查员以及监控员, 且每种角色的功能和应用场合各不相同。
2 状态结构模型
在创建状态机模型时, 分别从操作状态和工作状态两个角度对系统进行第一级状态的划分, 这两种状态同时存在, 其中的某些特性存在相互交叉, 从而构成了二维的状态结构空间。就以工作状态“开箱”来说, 日常用户开箱时需用户和监控员依次持卡操作方可开启箱门, 即“双管双控”;但需对任意箱门开启进行安全检查时, 则由管理员配合检查员实现。同理, 根据工作状态的不同, 由管理员、用户、监控员和检查员4种角色相互配合, 完成操作。由此可确定一个二维状态机, 其结构图如图1所示, 黑圈表示操作状态与工作状态有交叉的情况。
从图1可以看出, 实际需要的一级状态机数量22个, 由4种操作状态和10种工作状态相互交叉构成。而某些工作状态又可划分出多个二级状态, 这些二级状态既拥有上级状态的某些共性, 同时又有自己的个性。如以工作状态“开箱”来说, 无论“用户操作”或“监控员操作”, 均可划分出“等待刷卡”、“等待键盘输入”等二级状态。
对于状态机来说, 出于对其内在因果关系的考虑, 可归纳为4个要素, 即现态、条件、动作、次态, 下面以本系统中的一个重要工作状态“开箱”进行状态分析以及程序设计。
对于工作状态“开箱”来说, 其状态转换条件可以分为“等待超时”、“取消操作”、“确认操作”等;其动作则包含“液晶提示”、“保存卡号”、“验证卡号”、“验证密码”等, 可以通过状态迁移表来整理其二级状态之间的关系, 如表1就列出了“用户操作—等待刷卡”的状态迁移表, 可以按照状态迁移表中的关系设计状态机程序。
3 单片机程序实现
通过上述介绍, 知道在程序设计时如何使用状态机来实现程序的正确转移, 在定义状态时, 采用结构体的方式来定义状态表, 其格式如下:
状态的迁移过程又可以分为“预处理+执行”两个阶段, 在“预处理”阶段完成液晶显示, 变量、数组的赋值等;而“执行”阶段则包含对条件的判断和动作的执行, 可以根据功能采用不同的函数来实现。
首先定义一组名为“State”的枚举类型变量, 将规划的状态值全部列入其中, 如下所示:
定义函数“void Statetransfer (next State) ”来实现状态预处理, 在调用时, 直接将要转移的下一状态值作为参数传给该函数, 如下所示:
将各个状态与其要执行的函数列入到状态表Lsm Table中, 状态函数的定义方式按照“State+现态”的方式, 例如“用户操作—等待刷卡”, 其现态为“Wait User Card”, 则其状态函数定义为“void State Wait User Card () ”, 如下所示:
在mian函数中, 由While循环执行程序。在循环内调用函数“Lsm Search Process () ”对状态表进行循环遍历, 若查到Lsm Usertable->State=now State, 则执行Lsm Usertable->State相对应的执行函数。例如Lsm Usertable->State=Wait User Card, 则执行函数State Wait User Card () 。程序如下所示:
而对于执行函数来说, 主要由条件判断和动作两部分组成, 例如函数State Wait User Card () , 分别由3个if语句进行条件判断, 条件成立则进行动作和状态的迁移。
4 结语
提供了一种二维多级状态机的设计方法, 并成功应用在新型智能开关柜项目中。该设计思路具有较强的通用性和灵活性, 满足系统的实时性、高效运行等要求, 程序的执行效率高, 并且状态模型构建合理, 程序编写思路清晰, 可修改性强, 是一种设计功能复杂、状态较多的大型单片机软件系统的有效方法。
摘要:通过对新型智能开关柜项目的用户需求分析, 提出了一种二维多级状态机模型。该模型通过对有限状态机的灵活运用和模块化编程实现, 提高了C51单片机程序处理复杂任务时的条理性和可读性。程序模块通用性强, 便于引用或修改。