微程序控制器(通用8篇)
微程序控制器 篇1
《计算机组成原理》是计算机科学及相关专业开设的一门重要的专业基础课,它主要学习的是计算机系统硬件部分的组成原理、逻辑设计原理和技术实现方法。计算机组成原理的实验是该课程学习的一个重要环节,把实验教学看作是培养和锻炼学生处理计算机组成中若干问题的综合能力的一个途径。计算机控制器是Von Neumann结构计算机的五大功能部件之一,其作用是向计算机的每个功能部件(包括控制器本身)提供协同运行所需要的控制信号。这些控制信号是根据计算机指令生成的,每条指令的执行都需要被划分成几个执行步骤来完成。从这个角度看,控制器的功能是依据当前正在执行的指令和指令的执行步骤,形成并提供当前整机各部件要用到的控制信号。控制器是整台计算机的指挥、协同机构,有着举足轻重的地位,也是学习计算机组成原理的重点和难点。从难点上看,主要体现在两个方面,一是控制器产生很多控制信号的机理是什么;一是控制器如何连续地执行指令步骤。难点的理解掌握,应该有比较直观和具体的手段或装置体现出来,在实验中建立起感性认识,并通过理论学习,提升到理性认识。Tecxp实验教学设备是功能完备的实验用计算机,完全进行硬件上的实验和调试,对初学者可能比较复杂,再加上实验设备达不到每人一台,给实验教学增加了难度。因此,如果能先在模拟实验系统上进行控制器实验的逻辑设计,确保设计正确性,然后在硬件设备上再进行调试,则可提高实验效率,缩短实验的进程,加深理解。为此,在实验教学过程中我们结合Tec-xp实验设备,利用面向对象的VC++语言开发设计了微程序控制器的虚拟实验。
1 微程序控制器的基本结构
微程序控制的基本思想是仿照通常解题的方法,把操作控制信号编成所谓的“微指令”存放到一个只读存储器里,当机器运行时,一条一条读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作。基本构成包括控制存储器、微指令寄存器、微地址产生逻辑等组成。
2 微程序控制器虚拟实验设计思路
Tec-xp实验设备的微程序控制器实验支持两种工作方式:11010(即:单步、手动置指令、微程序控制器、联机、16位机时)和00010(即:连续运行程序、微程序控制器、联机、16位机),虚拟实验也按照这两种工作方式设计。在前一种工作方式下,借助模拟机箱上的指示灯可以查看某一条指令的微程序执行的过程;在后一种工作方式下,可以启动模拟监控程序,运行一段程序,查看多条指令的执行结果。
在单步方式(11010)下,设计了Tec-xp实验设备上的所有按键及电源指示灯、微程序灯、查看微指令执行顺序的指示灯等。这部分的核心问题是确定每次START按下,执行哪条微指令,需要重点设计START按键的响应函数。主要依靠节拍和控制变量实现,多数微指令都对应节拍,在特定的节拍下执行特定的功能。状态编码为0010和0000两个节拍完成读取指令的功能,公用于所有指令;A组指令将进入0011状态的节拍,用1步完成寄存器之间的数据运算或传送;B组指令将进入0110状态的节拍,再经过0100的节拍,用2步完成1次对主存储器或IO设备的读写操作;C组指令将进入0110状态的节拍,再经过0111,0101状态的节拍,用3步完成2次内存储器的读写操作;D组指令,将进入0110状态的节拍,再经过0100、0111、0101的节拍,用4步完成2次内存储器的操作。因此确定了节拍就确定了当前应执行的“一组”指令,在START按键的响应函数中要调用一个设置节拍的函数ProcessCLK()。在一组指令中如何选出一条执行的指令呢?指令是通过16位数据开关输入的,在其响应函数中,调用ReSetDataCtrl()函数,设置48条指令数组CurAR[48]对应的元素为1。在START按键的响应函数中调用函数SetVariable0(),设置控制变量的值。因此,通过三个函数准备好节拍和控制变量,在START按键的响应函数中检索节拍和变量的值执行唯一正确的微指令。
在连续方式(00010)下,要调用联机监控程序,就是对应Tec-xp设备的“汇编语言”,它与计算机的“汇编语言”不一致,要进行重新编写实现,在VC++中可直接调用。监控程序要处理Tec-xp设备发送的消息,比如:连续按RESET和START按键启动监控程序、工作方式改变、停止执行当前的监控程序等,通过进程间通讯实现。这里简单介绍一下,在VC++中,进程通讯是通过发送消息实现的。VC++中允许用户自定义消息,形式为:#define messagename USER+x,x取大于或等于5的值。发送方使用函数SendMessage(messagename,0,0)发送消息,接收方通过消息映射添加消息响应函数,在其中添加处理消息的代码。
此外,各种操作之间存在相互制约的问题。一是在两种工作方式下,按键执行的功能不同,对按键进行处理时,很重要的一点就是要判断工作方式,如对于START按键,在11010方式下,每按一下,执行一条微指令,而在00010方式下,若之前按了RESET按键,重启监控程序,否则不执行任何操作。二是操作执行的先决条件,如连续按下RESET和START按键,是否重启监控程序,要判断电源是否打开,工作方式是否为00010。因此设置了一些标识变量,标识电源、工作方式、START、RESET等。在程序中,通过判断这些变量,实现各按键间的相互约束。
3 微程序控制器虚拟实验设计程序
程序是交互式程序,通过各按键的响应函数实现。具体如下:
1)监控程序按键响应函数
若监控程序界面未打开,则打开;否则,不执行任何操作。
2)电源开关的响应函数
当电源打开时,电源标识PowerFlag=true,电源指示灯亮,调用函数ReSetBlackCtrl(),设置工作方式。若工作方式WorkType=4,调用函数ReSetDataCtrl(),确定输入指令,输出状态提示文字“电源已经接通,可以开始试验了,请设置相关的控制开关及数据开关”。当电源关闭时,标识PowerFlag=False,所有指示灯灭,此时需要判断工作方式,若WorkType=4,调用函数InitVariable(),恢复变量初始值;若WorkType=2,监控程序窗口打开,判断监控程序运行标识RUNNING,若为真,则向监控程序发送消息,停止其运行,并输出状态提示文字,“电源已断开,如果要重行试验,请拨通电源,否则,点击右上角的红?关闭该实验系统!”。
3)控制开关、数据开关成批处理函数
标识C_Bkbutt[5],C_Redbutt[24],D_Button[16]相应置0或置1,据标识设置图标。
对于五个黑色控制开关,若PowerFlag=True,调用“设置工作方式”函数ReSetBlackCtrl()。若WorkType=2,输出“工作方式为:连续运行程序、微程序控制器、联机、16位机”,如果监控程序窗口打开,检测监控程序运行标识RUNNING,若为真,则向监控程序发送WM_STOP消息,停止其运行;若WorkType=4,输出状态提示文字“工作方式为:单步、手动置指令、微程序控制器、联机、16位机”;WorkType为其他值时,输出“工作方式与微程序控制器试验不对应,请选择正确的工作方式"。
对于16位数据开关,若PowerFlag=ture,调用函数ReSetDataCtrl(),确定输入指令,设置其对应的微指令执行时的状态提示文字。
4)RESET按键响应函数
如果PowerFlag=true,判断工作方式,若WorkType=4,则将变量“清零”,标识RESET=0,输出状态提示文字“清零”操作已完成,请继续试验”;若WorkType=2,监控程序窗口打开,判断监控程序运行标识RUNNING,若为真,则向监控程序发送“复位”消息WM_CLEARR,输出状态提示文字“复位”操作已完成,请继续实验”,将RESETFLAG设为true。否则,不执行任何操作。
5)START按键响应函数
如果PowerFlag=true,判断工作方式,对于“11010”工作方式,解释执行指令的每条微指令对应一个节拍,根据当前节拍和指令判断应执行哪一条微指令。不同微指令的有效执行,取决于一组控制变量。先调用ProcessCLK(),获得当前节拍,再调用SetVariable(),根据节拍,设置控制变量,最后根据节拍和控制变量选择微指令执行。
对于“00010”工作方式,若监控程序窗口已打开,RESETFLAG=TRUE,RUNNING=TRUE,发送WM_STOP消息,停止当前运行的监控程序,发送WM_START消息,重启监控程序,若RUNNNING=FALSE,则不发送WM_STOP消息,输出状态提示文字“操作失败,先按下RESET,再按START,才能启动监控程序”。如果监控程序程序窗口未打开,则输出“操作失败,监控程序窗口未打开,请按左上方的“监控程序窗口”按键”。其他工作方式不予处理。
START按键响应函数流程图如图3所示。程序代码省略。
4 结束语
为了适应实验教学的需要,我们重点研究了计算机组成原理虚拟实验的实现方法,以满足教学、实验的需要。实践证明,计算机组成原理运算器虚拟实验的开发,不仅使学生不受时间、空间的限制,而且可以方便地帮助学生加深对微程序控制器原理的理解,提高了学习兴趣。虚拟实验室的研究及其进一步实现是非常必要的,这也是摆在计算机科学与技术教育工作者面前的一项重要的工作。
参考文献
[1]王爱英.计算机组成与结构[M].3版.北京:清华大学出版社,2000.
[2]王诚.Tec-xp技术说明和实验指导[M].北京:清华大学科教仪器厂,清华大学计算机系,2007.
[3]Kruglinski D J,Wingo S,Shepherd G.Visual C++6.0技术内幕[M].5版.北京:北京希望电子出版社,2002.
[4]明日科技.Visual C++程序开发范例宝典[M].北京:人民邮电出版社,2008
[5]王建新,张丽媛,盛羽,等.基于组件的计算机组成原理虚拟实验室的设计与实现[J].系统仿真学报,2008,20(9):2470-2474.
[6]Andreas S,Venkatraman A.Interactive Online Undergraduate Laboratories using J-DSP[J].IEEE Transactions on Education(S0018-9359),2005,48(4):735-749.
[7]Wang J X,Lu W N,Jia W J.A Web-Based Environment for Virtual Laboratory with CORBA Technology[J].International Journal of Computer Processing of Oriental Languages(S0219-4279),2003,16(4):261-274.
微程序控制器 篇2
根据微信小程序应用开发后的使用反馈来看,其实把微信小程序作为一个推广的工具是一个很不错的选择,因为小程序的功能以及定位,决定了小程序可以打通线上和线下。具体到获取精准客户的问题,其实通过附近的小程序等入口可以实现大范围的覆盖,当有需求的用户看到时自然会来,可以说这已经不是我们去找客户,而是让客户主动与我们联系了。
如何利用小程序来精准获客?可以以婚庆公司的推广来举例:
目前我国的婚庆市场规模已经达到了万亿级别,这是机遇也是挑战。互联网时代,活跃在网络上的人数数以亿计,传统线下门店如何实现线上流量转化为门店消费,实现红利,需要一条连接线上线下的通道。微信小程序完美扮演着这个身份。
精准营销在任何一个时代都不会过时。要想不浪费过多的资源达到最高的效益,需要将精准营销落实到位。之于婚纱行业,精准抓住年轻用户群体,激发他们的消费欲望,快速、流畅、多维度地展示尤为重要。那么,小程序能给我们带来哪些精准化营销?
第一,套餐风格-丰富精美的专属定制行业模板
直观展示门店相关信息,例如套餐、客照、风格、拍摄地点、品牌介绍、团队介绍、服务流程、用户评价等,用户可以根据个人需求做出选择。可以通过展示客照对应的摄影师以及摄影师过往的优秀作品,让顾客了解摄影师的相关信息,免去一些交流沟通上的障碍,提升用户体验。同时还可以通过预约,节省消费者时间,提高合作效率,一站式解决用户需求。第二,预约转化-直击广告转化效果
小程序页面展示拍摄风格,用户选中心仪的套餐可以直接在小程序上联系商家预约,实现消费。小程序不仅提供了丰富的产品展示平台,还能带来时效性的销售线索。用户还可以利用小程序的在线客服功能,向商家咨询了解相关业务,优化沟通渠道,方便快捷,提高商业转化率。第三,强大的后台-大数据直击客户需求
小程序的后台数据涵数据管理、访问分析、访问信息等数据概况,使用趋势曲线呈现的方式便于婚纱摄影行业企业分析小程序的传播和获客情况,便于及时整改运营推广方案。根据用户的使用习惯,实现精准内容的推送,更贴近客户的 需求,有效提升企业服务效率的同时大大降低运营成本。
第四,附近的小程序“移动 社交广告”整合营销
商家可以通过附近的小程序功能,吸纳门店附近的潜在客户。通过线上的展示,让更多人知道之间线下门店,提高曝光度。此外,微信小程序还可以为商家提供整合营销推广服务。小程序通过选取优质流量资源,基于“LBS 社交大数据”和“信息化技术”两大优势,对客户进行聚焦,通过分析对客户分类,实现精准营销。
那么又如何利用小程序来提高运营效率呢?主要注意一下几点:
1.微信小程序与微信搜索主动搜索的背后是什么,是用户具有一定目的,在微博或者淘宝上知名人士都在首页上写下自己的微信来和粉丝进一步的交流,想通过搜索途径获得服务体验的心理需求,清晰的知道你的名字,明确知道你的微信小程序能干什么。这就是品牌效应带来的精准搜索。而微信开放模糊搜索之后,用户只是需要对想要的东西进行搜索,便可以直接触达到小程序,以及里面提供的商品或服务内容。如何通过微信小程序名称,简介,服务类目,服务相关,得因素考虑进行关键词的设置则成为运营人员的必修课目。
2.在微信小程序中识别微信小程序码可使得微信小程序与微信小程序可互相导流,在同一企业主体下,会把不同业务类型的微信小程序分开开发和发布来达到精准服务,但是在特定条件下,用户使用 A 服务的同时可能有 B 服务的需求,这时候需要微信小程序跳转微信小程序来解决需求,类似目前 PC 网址的超链接或者友情网址,微信小程序有个要求限制:两个微信小程序需要绑定同一公众号。这对于提供跨行服务的企业可谓是一项强有力的特殊技能。
3.微信小程序与第三方网站联盟平台,网站联盟可以由网站直接发起,也可以通过第三方联盟平台来进行,通过推文的方式从微信公众号及其以外的媒体平台将流量导入,主观推广不能太强,否则会被平台认定为广告或者推荐量低等情况,这就考验到了运营人员对图 文内容的把握能力,以及文字组织能力了。
4.微信小程序与社交网络红包广告推广微信红包,QQ 红包,支付宝红包,微博红包等,现在对大多数上网用户来说都不陌生,已成为日常社交尤其是春节收发红包最受欢迎的方式,“能给发红 包解决的就不用发祝福语”之类的网络语言在微信群里经常可见,一到节假日或特殊节假日,要求群主发红包的段子也是不断出现,网络红包已经成为用户使用频繁的网络服务之一。微信此前曾经对小程序广告推广功能进行内测,具体公开竞价推广以及相关规则未知。但是,如果微信把这一广告推广功能开放上线,那将会是一场盛大的狂欢节,流量导入或许将会进入到金钱竞争的返利阶段。而目前广告推广主要出现在微信小程序搜索,搜一搜以及附近门店处,期待具体官方公布后详解。
5.微信小程序与活动推广线下活动推广,小程序也一样。结合小程序的特性推出活动吸引用户的关注,这个我们可以学习那些做保健品给大妈上课的方式,对于年轻人人群则选用爬山,相亲等方式,获得他们关注,从而转化为自己的用户。活动推广是任何产品推广都适用的推广方式,微信小程序推广适合以主要业务推广为主,微信小程序以辅助活动的工具形式更佳,在公司原定的活动中嵌入小程序进行推广,便能获得一定量的流量导入,获取用户。
微程序控制器 篇3
在以前, 外围设备是更大的微处理器如特定用途集成电路和DSP中的内存[1]。现在, 低功率微处理器包括了外围设备, 这样就有机会在低功耗的情况下进行复杂的运算[2,3]。本文介绍了在低功率的微处理器中执行快速傅里叶变换 (FFT) , 其中微处理器包括一周期的硬件乘法器。这个应用可以实时计算输入电压的频谱。为了完成此任务, 一个模数转换器对输入信号进行采样然后传输到微处理器[4]。微处理器再对样本信号进行256点的FFT, 这样就获得输入电压的频谱。为了测试其有效性, 微处理器计算频谱的幅值然后实时地传输给示波器。
1背景
为了确定输入样本信号的频谱信息, 需要计算输入样本的离散傅里叶变换 (DFT) 。离散傅里叶变换定义为:
式中:N是样本点数;X (k) 是频谱, 与x (n) 代表输入样本。利用欧拉方程的一致性将这个求和公式中的输入样本与频谱分离为它们的实部与虚部, 可得以下方程式:
因为输入样本只是考虑实部。式 (2) 与式 (3) 中的求和公式的第二项消失了, 假设有N个样本, 直接计算式 (2) 、式 (3) 需要2N2次乘法及2N (N-1) 次加法。因此256点输入样本的DFT将要求131 072次乘法和130 560次加法。
已经出现了很多种FFT算法。普通的以基为2的算法连续将DFT分解成2个更小的DFT[5]。为了使其变成可能, N必须分解为2的整数幂。转化为以2为基的FFT的步骤见图1的蝶形计算。从图1的蝶形计算[6]中可观察到, 获得基为2的FFT算法的解只需要 (N/2) log2N次乘法与Nlog2N次加法。在图1中的值WH通常认为是旋转因子且能够在执行FFT前计算得到[7]。
在图1中, FFT的输入具有特殊的形式。它是具有位倒置下标的原始顺序。因此, 当计算基为2的N=8的FFT时, 输入数据的记录顺序要求为0 (000b) , 1 (001b) , …, 0 (000b) , 4 (100b) , …。
FFT是以正确的顺序作为输出。图1同样揭示了单一的蝶形计算的结果只是FFT的下一阶段的输入。因为计算是在适当的位置中完成的, 旧值可以代替新获得值且在计算N点的FFT只是需要2N个变量样本 (需要2N个变量是因为每一个变量值都有一个实部与虚部) 。
当完成FFT时, 结果是以复数为记法的。式 (4) 和式 (5) 将复数表示形式转变为以极坐标表示:
在DSP的文章里介绍了很多关于DFT/FFT的优化方法, 使其计算速度更快且需要的计算量更少, 其中一个比较重要的优化方法 (也可能是最容易执行的) 。从观察DFT中可以获得, 因为具有N点的实值信号的DFT是以X (N/2) 为对称的, 因此有:
2执行要点
写代码实现DFT不是一件容易的事, 因为用低功率的微处理器实现DFT算法的实际情况是相当复杂的。例如, 这些微处理器通常:
(1) 有限的内存。选择的微处理器只有2 KB的RAM。从上面叙述可知实现FFT至少需要2N×16 B变量。微处理器不能执行样本点数N大于512的FFT。这是不现实的, 因为别的固件同样需要一些字节的RAM。因此在实际执行的过程中, 通常将样本点数局限在256点。使用16 B的变量表示每一个值的实部与虚部, 这种情况下对于FFT的数据需要1 024 B的RAM。
(2) 有限的速度。尽管低功率的微处理器具有高达每秒百万条指令的速度, 仍然需要一些优化方法来减少在执行FFT过程中所用到的指令。所幸的是在应用过程中, C编译器包括很多优化的级别设置。小心使用芯片的硬件乘法同样可以使得代码优化到一个可以接受的水平。
(3) 没有浮点数功能。所选择的微处理器特别是那些低功率的微处理器没有浮点数功能。因此所有的计算都需要定点算法。为了表示分数, 固件将使用有符号的Q8.7标记。因此固件将假设:0~6 B表示每一数字的分数部分;7~14 B表示每一数字的整数部分;第15字节是这个数字的符号位。
这种形式对于加法和减法是没有影响的, 但是对于乘法则必须注意, 使所有数据排成Q8.7的形式。例如对于Q8.7的乘法如下:
为了获得比较精确的FFT结果, Q8.7排列形式的一致性同样适用于具有比较大样本点数的FFT。例如, 模/数转换器以实部和虚部互补的形式提供8位的符号数。如果输入的是直流电压 (+127为有符号的8位样本数) , 从X (0) 中将会完全获得其频谱, 以Q8.7标记等于32 512。这个值很适合于用16位的符号数表示。
3固件
下面介绍计算基为2的FFT所需的固件。当从模/数转换器中读取样本数后, 存储在数组x_n_re中。这个数组表示x (n) 的实部。在执行FFT前, 虚部的值初始化为零, 存储在数组x_n_im中。当执行完FFT时, 频域的幅值将代替原来的样本值, 且存储在x_n_re和x_n_im中。
3.1 采集样本
FFT算法假设以固定采样率来采集样本的。尽管这是在本文考虑范围之外, 但是如果认真对待采集样本的代码同样会产生问题。例如, 不稳定的采样率将会产生错误的FFT结果, 所以应该尽量使该情况最小化。
对模/数转换器采样的原码每一次循环以及输出结果命令都有可能对采样率产生不稳定性。例如, 系统从模/数转换器中读取8位的有符号数, 然后存储在16位的数组变量中。
下面列出了关于从模/数转换器中读取及存储数据的2个伪码算法。第1个记为算法1, 将会引起采样率的不稳定。因为负数样本比正的样本需要更多的时间来读取及存储。中断同样不能保证采样代码的健全。
模/数转换器采样 (ADC) 的伪码:
算法1:不一致的采样率。
算法2:固定的采样率。
3.2 三角法来查寻表格
FFT利用查寻表的方法 (LUTs) 来代替直接计算正弦与余弦的值。下面叙述中给出了对正弦与余弦的LUTs的声明。固件中的声明包括在程序中自动产生这些表格的原始代码。LUTs中的正弦与余弦都具有N/2样本, 因为旋转因子的下标从0~ (N/2) -1变化。
正弦与余弦函数的LUTs:
包括这些LUTs的声明为常量, 强迫编译器将这些数据存储在码区而不是数据区。由于微处理器中的RAM的有限性这样做是很重要的。由于LUTs的值必须以Q8.7方式排列, 因此与正弦和余弦对应的值应该乘以27。
3.3 位倒置
位倒置 (N是已知的) 可以在运行中计算, 利用1个查寻表格标记或者直接用一个打开的环来写。每1种方法有其各自的大小与执行速度的平衡。本文利用开环直接写的方法来执行位倒置。实际的固件由原码来自动产生这个开环。
利用开环来获得位倒置 (其中N=256) :
i=x_n_re[1]; x_n_re[1]=x_n_re[128]; x_n_re[128]=i;
i=x_n_re[2]; x_n_re[2]=x_n_re[ 64]; x_n_re[ 64]=i;
i=x_n_re[3]; x_n_re[3]=x_n_re[192]; x_n_re[192]=i;
i=x_n_re[4]; x_n_re[4]=x_n_re[ 32]; x_n_re[ 32]=i;
…i=x_n_re[207]; x_n_re[207]=x_n_re[243]; x_n_re[243]=i;
i=x_n_re[215]; x_n_re[215]=x_n_re[235]; x_n_re[235]=i;
i=x_n_re[223]; x_n_re[223]=x_n_re[251]; x_n_re[251]=i;
i=x_n_re[239]; x_n_re[239]=x_n_re[247]; x_n_re[247]=i;
3.4 基为2的FFT算法
在对样本执行位倒置后, 即可以计算FFT了。利用蝶形方法 (见图1) 计算基为2的FFT的固件包括3个主要的循环。在循环之外包括log2N的FFT计算阶段。在每一阶段循环内部执行单独的蝶形运算。
FFT算法的核心是执行每一蝶形运算的块码。不幸的是, 这一块码的计算是不轻便的。MUL_1与MUL_2利用微处理器的硬件乘法来执行乘法。
3.5 复数转化为极坐标表示
为了计算输入信号的幅值, 必须将复数X (k) 转换为极坐标来表示。幅值将代替在固件中不再需要的FFT中的原来的值。
式 (4) 中决定了二维的LUT其幅值而不是其计算。第1个值是频谱实部4个最重要的位, 而第2个值是频谱虚部4个最重要的位。为了获得这些最重要的位, 16位有符号数右移11次。频谱的实部与虚部都可以被用作下标时, 它们被其绝对值代替了 (因此符号位将是零) 。
从式 (6) 中, 可以知道频谱是以X (N/2) 对称的, 只有前N/2+1个幅值被转化为极坐标表示。同样, 对于输入样本为实数的频谱虚部中的X (0) 与X (N/2) 通常为零。因此这两个幅值通常分别是单独计算的。固件中用来自动计算X (k) 的包括原码。
3.6 海明窗或汉宁窗
为了实现此任务的固件包括LUTs (Q8.7形式) 将海明窗或汉宁窗应用到输入样本中。加窗对于防止泄漏是有用的。加窗可以在时域上对输入样本截短。海明窗的方程如方式 (8) 所示, 而汉宁窗则如式 (9) 所示[8,9,10]。
同样, 这些实际固件的注释包括自动为这些窗函数产生LUTs的原码。
4测试结果
为了对FFT结果测试, 利用微处理器中的通用异步收发报机端口。固件将幅值X (k) 上传到PC上。这个程序包括FFT图表, 即利用一个窗口应用程序从PC中的串行端口中读取这些幅值, 实时地将计算得到的幅值利用图表画出来。利用微处理器对4个不同输入电压信号进行200 Kb/s采样, 并在图2中输出其FFT图像。
5结语
当然你可以利用无限的时间来优化及计算FFT。但是本文采取了基为2的FFT, 这种方法可以很大限度地减少计算FFT所需要的加法与乘法。由于篇幅问题, 有很多提高执行FFT速度的优化方法并没有在本文中给出。例如, 对于实数的输入样本信号, 输入样本的虚部通常为零, 而且只有开始的一半频谱是重要的。利用这个信息, 第一和最后一个FFT阶段就可以更快速的执行 (但可能将需要编写更多的代码) 。
对于低功率的微处理器, 在本文中所提到的关于FFT的算法是一个好的开始。
摘要:低功率微处理器的储存空间比较小, 如何用其实现FFT变换一直是一个比较重要且很难实现的问题。详细介绍了实现FFT的具体算法包括低功率微处理器的固有缺点, 采集样本需要注意的问题及其程序实现, 加窗程序以及在实现过程中应注意的问题。在低功率微处理器中实现了FFT变换, 结果表明所设计的方法在低功率微处理器中具有良好的性能。
关键词:低功率,微处理器,傅里叶变换,加窗程序
参考文献
[1]雒雄, 曹建.基于FPGA的简易MCU设计[J].现代电子技术, 2007, 30 (16) :387-40.
[2]周明德.微型计算机系统原理及应用[M].北京:清华大学出版社, 2002.
[3]蒋存波, 孙朝华, 唐博, 等.基于MCU控制的便携式测控系统的设计[J].微计算机信息, 2008 (32) :142-144.
[4]邹逢兴.计算机硬件技术基础[M].2版.北京:高等教育出版社, 2005.
[5]段小东, 顾立志.高性能基4快速傅里叶变换处理器的设计[J].计算机工程, 2008, 34 (24) :238-243.
[6]程佩青.数字信号处理教程[M].北京:清华大学出版社, 1995.
[7]方洁, 张可, 王睿, 等.改进的FFT算法及应用研究[J].四川电力技术, 2007, 30 (6) :9-11.
[8]侯朝焕, 阎世尊, 蒋银林.实用FFT信号处理技术[M].北京:海洋出版社, 1990.
[9]谭代伦, 张世禄.FFT复指数计算的改进算法[J].乐山师范学院学报, 2006, 21 (5) :13-14.
微程序运算器的实验教学研究 篇4
1 微程序的理解
微程序的基本思想是:将机器指令分解为基本的微操作控制信号和数据信号, 并以编码字的形式将这些信号进行编码, 这种编码我们称其微指令, 多条微指令组合成微程序, 从而产生机器运行所需要的控制信号与数据, 控制有关部件完成指令功能所要求的微操作, 产生所希望的结果。《JYS-Ⅲ计算机组成原理实验系统》, 由于该系统的CPU使用了单片机89C51, 其基本字长为8位, 在存放微程序时, 系统使用了三个存储器, 其中程序存储器为3#RAM, 控制存储器为1#RAM及2#RAM, 2#RAM用来存放微指令的高8位, 1#RAM存放微指令的低8位。把微程序码按顺序存放在不同单元中。
2 运算器结构
下面以设计一个四位串行进位的加法器, 具有加法和加1功能, 两个操作数由八位寄存器R0, R1提供, 结果存放R2寄存器中, 为例说明加法器结构 (见图1) 。
运算器的两个加数分别存放在R0, R1寄存器中, 结果存放R2寄存器中, R2, R0, R1均采用八位D触发器, 在打入脉冲CPR0, CPR1, CPR2的作用下, 接受数据输入端提供的信息分别送入R2, R0, R1中。
3 清楚系统提供的资源
微程序的设计应在通调方式下进行, 在这种模式下有专用资源和通用资源之分, 专用资源不可以随意编程, 它在系统中有约定好的用途, 只有通用资源用户才可以随意使用。
由图2可以看出 (见表1) 。
系统的专用资源是:uRD为68, CpuIR为69, 脉冲为73, 而76~~83为显示发光二级管LED0~~LED7。这些资源系统已指定了专门用途, 用户是不能随意改变的。对于统用资源1#RAM的使用45-52中的哪4个信号, 2#RAM的使用34-41中的哪4个信号则由用户在微指令格式确定。
4 微指令的格式
十六位的微指令码, 要分成两个八位码存放。高八位数据码, 低八位控制码 (见表2) 。
至于使用哪几个位来存放数据码还是控制码, 则影响锁定引脚号和码值而已。假如采用图3所示的控制格式。
显然使用的是uIR7uIR6uIR5uIR4, 对应的引脚号为52 51 50 49, 在此种格式下, R2开, R0关, R1关的控制微指令是10H。R0开, R2关, R1关的控制微指令是40H。R1开, R0关, R2关的控制微指令是20H。而对于图4格式则:
显然使用的是uIR3uIR2uIR1uIR0, 对应的引脚号应锁定为48 47 46 45, 在这种格式下, R2开, R0关, R1关的控制微指令是01H。R0开, R2关, R1关的控制微指令是04H。R1开, R0关, R2关的控制微指令是02H。而对于下列格式则, uIR8-15为指令寄存器的高八位, 用来存放数据。 (见表3)
若使用uIR11uIR10uIR9uIR8作为数据输入端, 则引脚定义为34、35、36、37, 计算3+7时, 则输入03H, 07H即可 (见表4) 。
若使用uIR15uIR14uIR13uIR12作为数据输入端, 则引脚定义为38、39、40、41, 计算3+7时, 则需要输入30H, 70H。
5 掌握运行方法
实验原理图设计、下载时, 皆按通调方式进行。但在写微程序时要在分调方式, 写完微程序再转到通调方式运行。例如计算3+7, 微程序格式的字段分配:uIR15~uIR0中uIR11~uIR8定义四位操作数, uIR15~uIR12可为0, uIR7~uIR4定义为控制信号, uIR3~uIR0可为0。uIR7为1C0=1, 为0C0=0。uIR6为1产生CPR0信号, uIR5为1, 产生CPR1信号, uIR4为1, 产生CPR2信号。第一步, 在统调方式设计完原理图, 编译成功时下载。第二步, 在分调方式写入微程序。1#RAM从00单元开始依次写入40H、20H及10H, 2#RAM从00单元开始依次写入03H、07H、00H。第三步, 在通调方式下发脉冲运行。检验结果。
摘要:重点介绍了微程序运算器的实验教学方法。
关键词:微程序,运算器,资源,统调,分调
参考文献
[1]卜艳萍, 周伟.计算机组成与系统结构[M].北京:清华大学出版社.
[2]白中英.计算机组成原理[M].北京:科学出版社.
微程序控制器 篇5
随着智能移动终端的普及,越来越多的高校尝试在教育教学中应用微课程。《程序设计基础》课程是一门实践性较强的课程,对学习程序设计、逻辑思维培养起着非常重要的作用,构建高校程序设计基础微课程可以实现课程教学的灵活性,启发学生对程序设计知识和技能的主动探索,推动课堂教学模式变革。
1微课程
微课程(Microlecture)是运用建构主义方法,以在线学习或移动学习为手段,具有完整的课程设计、开发、实施、评价等教学设计环节的课程教学模式。微课程概念于2008年由美国新墨西哥州圣胡安学院的高级教师戴维彭罗斯于提出,是针对某专题的系列教学内容和教学活动的总和,课程教学载体是时长约10分钟的教学视频。微课程的“微”体现在时间、内容、资源的容量上,对抽象知识点、需要复杂设备的实验操作和疑难问题等教学内容具有重要作用。微课程受到越来越多的研究者关注,成为一种课程建设新趋势[1]。
1.1微课与微课程
微课是微型教学视频课例的简称,而微课程是微课的高级阶段或发展趋势[2-3]。
1.2翻转课堂与微课程
翻转课堂(Flipped Classroom或Inverted Classroom)是指重新调整课堂内外的时间,将学习的决定权从教师转移给学生的一种教学模式。在翻转课堂教学模式下,学生更专注于“项目导向,任务驱动”的学习,师生共同研究解决课程任务,课程涉及的知识和技能在课前完成。学生可随时随地学习,学习途径有:观看课程视频、听播客、阅读电子参考书、与别的同学在网络上进行学习讨论、在网上查阅课程参考材料等,学生自主规划学习内容、学习节奏; 教师采用实操演示法、讨论协作法来引导学生进行更深入学习,课堂教学演变为师生交流、生生互动的学习。翻转课堂是一种大教育运动模式,在本质上与探究性学习、混合式学习等教学方法在内涵上有相似之处,是为了实现 “以学生为本”的教学目标,提高学生的参与度,使学生学习更加主动灵活[4-5]。
翻转课堂是一种基于微课程资源的新型教学模式,将微课程与翻转课堂有机结合,课前学生利用微课程资源进行自主学习,课堂上教师解答学生疑问、测试自学效果、指导学习实践,课后利用微课程资源进行复习巩固、作业练习。
1.3微课程特点
微课程有6项特点:1视频时间较短:一个微课教学视频时长控制在5~15分钟左右,不宜超过15分钟;2教学内容较少:微课的教学内容知识点单一、主题突出、问题聚焦,主要是针对教学中某个学科知识点(如教学中的重点、难点、疑点内容)的教学,或是课堂中某教学环节的教与学活动;3资源容量小:一个微课视频及配套资源的总容量一般在几十兆内,视频格式一般支持在线播放的流媒体格式(如rm、wmv、flv等);4资源组成情景化:微课程以微课视频为主线进行课程教学设计,微课视频、多媒体素材、课件、教师课后教学反思等相关教学资源构成完整的微课资源包;5微课程内容具体:微课研究的问题来源于教育教学中的具体问题,或是教学反思,或是重点强调,或是难点突破,或是学习策略、教学方法、教育教学观点等,呈现具体性、真实性等特点;6传播方式多样:可使用手机传播、网上下载传播、微博讨论等多种形式。
2 《程序设计基础》微课程开发意义
《程序设计基础》课程是一门重要的计算机基础课程, 是培养学生程序设计逻辑思维的入门课程。通过本课程学习,培养学生程序设计理念,促使学生使用计算机程序解决现实世界中业务逻辑问题,学会程序设计的基本方法。该门课程是一门理实一体化课程,课程在第1学期开设,其前导课程没有特别要求,后续课程是:《面向对象的程序设计基础》,包括C#和Java两种语言方向任选其一, 软件技术专业课程体系结构如图1所示。
2.1对教师的意义
高校教师进行《程序设计基础》微课程建设,按照先进的微课程理念进行总体设计,应用计算机技术和多媒体技术等进行微课视频制作,将促进教师专业发展,革新传统的课程教学教研方式,提高教师的教学能力及课程建设能力,是教师专业成长的重要途径。
2.2对学生的意义
高校学生在进入大学学习初期,通过《程序设计基础》 微课程应用,学习由以教师为主改变为以学生为主,课程教学由教师单方向的讲授改变为师生共同探索和实践,有利于激发学生学习兴趣,增强程序设计和程序开发能力, 为计算机专业课程的学习打下良好基础。
3 《程序设计基础》微课程设计
《程序设计基础》微课程设计过程为:微课程架构设计、微课程教学设计、微课程制作、微课程存储、微课程发布、微课程评价[6-8]。
3.1微课程设计原则
(1)微课程总体设计原则。微课程改变了传统教学中师生角色,实现以学生为主的学习,这需要对课程教学时间重新规划,教师细分教学知识点和实操技能,围绕知识点和实操技能进行微教案设计、微练习设计及微课件制作,设计微教学活动和完成微视频的拍摄和制作,在课前引导学生自主学习,课后教师进行微教学反思,整理形成微课程资源并上传到网络教学平台。
(2)微课程选题设计原则。首先对课程知识点和实操技能目标进行分解,分解的最小单元应该满足每节微课需具备的容量和学习时间,微课教学单元的教学目的要明确。然后选取教学环节中某一知识点、专题、实验活动作为选题,针对教学中常见、典型、有代表性的问题或内容进行设计。选题尽量小而精,具备独立性、示范性、代表性。
(3)教学内容设计原则。微课程是日常教学内容的提炼,与传统课堂相比,微课的时间要精简。每次微课的教学内容应严谨充实,无科学性、政策性错误,能理论联系实际,反映社会和学科发展。
(4)教学组织设计原则。教学组织与编排要符合学生的认知规律;教学过程主线清晰、重点突出、逻辑性强,注重突出学生的主体性以及教与学活动有机结合。教学组织应按照提出问题、分析问题、解决问题的思路进行设计。 一是吸引学生进入课题内容,可采取提出问题的形式进入课题,或以一个故事引入主题,切入方法要新颖、具吸引力,能够让学生马上产生浓厚的兴趣。需要注意的是课程导入要与微课的教学内容关联紧凑、和谐统一;二是课程内容讲授思路要清晰。在微课程的讲授过程中,突出重点内容,展现核心知识点,围绕一条知识或实操技能主线展开讲解;三是课后总结要高度提炼,课后小结是一节微课的精髓所在,要总结一节课的核心内容、重点、难点,使学生掌握本节课的知识点内容。
(5)技术规范设计原则。1微课视频:时长5~15分钟,力争简明易懂、短小精悍,视频图像清晰稳定、构图合理、声音清楚,主要教学内容有字幕提示;视频片头应显示微课标题、作者、单位;2多媒体教学课件:主要教学课件为PPT格式;3教学方案设计表内应注明微课讲课内容所属学科、专业、课程及适用对象等信息。
3.2微课程架构设计
微课程学习架构按照总分关系,依次有:微课群、微课模块、微课、微课素材,程序设计基础课程设计了5个微课群:程序语言的集成环境、程序的基本数据结构、程序语言的控制结构、程序的复杂数据结构、程序的算法。其中,程序语言的控制结构微课群设计了4个微课模块:顺序结构、选择结构、循环结构、函数应用;程序的复杂数据结构微课群设计了4个微课模块:数组应用、结构体、指针应用、文件应用;循环结构微课模块设计了5个微课:1 while循环:打印抽奖号码、微课;2do-while循环:模拟抽奖、微课;3for循环:韩信点兵、微课;4循环嵌套:打印吉祥图案、微课;5循环综合应用:猜牌游戏拓展;每个微课都包括若干微课素材:微视频、微课件、微反思等。即课程由多个微课程群组成(一个微课程群可看作一个学习情景),每个微课程由多个微课模块组成(一个微课模块可看作一个学习单元),每个微课模块包含若干微课,每个微课包含若干微课素材。每个微课一般不可再分,称为微课程元,《程序设计基础》微课程设计架构如图2所示。
3.3微课教学方案设计
微课教学方案包括7方面内容:教学目的、教学重点、 教学难点、导入环节设计、教学过程设计、思考问题和素材准备。例如,For循环微课的教学方案设计如表1所示。
4微课制作
微课的拍摄与录制是微课程制作的重要环节,包括微课情景的拍摄或微课实操演示过程录制。制作步骤如下: 1微课设计:进行详细的微课教学设计;2拍摄和录制:用两台摄像机从前后两个方向拍摄课程的教学过程,用录屏软件录制电脑屏幕的实操演示过程。课程内容讲解要语音清晰,有必要的黑板板书,邀请学生参与,完成部分教学情景再现,课堂教学拍摄要保证画面清晰、准确、稳定;3视频文件和录制文件后期处理:如增加片头、片尾和字幕, 用视频编辑软件对录制视频进行适当的后期编辑和美化, 对视频文件和录制文件、实操演示操作与讲解同步处理等。
拍摄视频的设备有:2个带三角架的数码摄像机、1个麦克风;录制电脑屏幕的设备配置:1台多媒体电脑、录屏软件Camtasia Studio(或者屏幕录像专家)、PPT课件。
微课程视频制作技术标准:视频制作使用标清制式, 视频压缩推荐采用H.264编码方式,码流率为1Mbps,封装格式使用MP4,录制操作演示的电脑屏幕分辨率为1024×768,视频时间控制在15分钟以内。
5结语
积极吸收国内外微课程的优点,构建高校《程序设计基础》微课程,探索适合具有区域特色的计算机类专业人才培养模式,有利于满足社会对高层次信息技术人才培养的迫切需求。程序设计基础微课程的构建,对课程改革和人才培养模式改革具有重大意义,将有力推动高校师资团队建设和专业建设,提高高校计算机类专业人才培养质量。
微程序控制器 篇6
C引言程序设计教学是大学教育课程中, 相对比如难学的一门学科。尤其是其安排的教学要求和课程排期相对比较紧凑, 从而造成了学习的困难程度相对较高。
基于此, 通过解析微课程的优势和模式, 探究将其应用在C引言程序设计教学中的相关改革措施。
1 微课程的概念与优势分析
信息时代, 新鲜名词的涌现非常快速。在教育行业中, 一些新鲜名词也相继成为师生关注的热点。例如, 多媒体教学, 模拟教学等诸多教育名词。而微课程最近也成为了教学课程中的新鲜活跃词汇, 与此同时也成为了提升教学效率的一种全新方法。因此, 需要对微课程的概念极其优势进行透彻的分析。
1.1 微课程的概念分析
对于微课程的概念, 需要从不同的角度进行分析, 才能够更加透彻的了解微课程的实际意义。
首先, 微课程是基于视频教学的一种常见教学模式, 利用计算机等相关设备, 将教学内容以视频或者音频的方式展示出来, 从而给予学生们最直观的教学体验。因此, 微课程首先是基于计算机相关技术平台, 将教学内容以视频或者音频的方式进行传递的一种教学模式。
其次, 微课程的教学内容相对短小精悍, 并且教学内容相对集中, 仅针对一个点或者是一个内容进行详细阐述。实际上, 微课程的特点可以从其名称中的“微”字体会到。微课程的内容必然比较短, 但是其教学的内容却非常精准丰富。这就在一定程度上造成微课程的教学内容更容易呈现碎片化以及点状化。
最后, 微课程的形成理念, 是基于教学设计思想进行规划与完成的。教学设计过程中, 如果紧密切合教学设计思想, 那么教学内容就可以实现点状化以及精准化, 从而更适合学生们进行针对性的学习。
1.2 微课程的优势分析
通过以上对于微课程的定义进行的分析, 可以了解到, 对于微课程在现代教学课堂中的应用, 具备哪些优势:
1.2.1 针对性
微课程更加适合针对性的教学方式与内容。在教学的过程中, 一些教学内容更加适合采用针对性教学。例如, 在对数学解题思想的教学过程中, 最好就采用针对性以及简短性的教学, 将教学内容直接准确的传递给学生们。这样学生们在接收知识的同时, 也可以实现高效化的学习。
1.2.2 点对点
微课程能够进行点对点的方法传授以及技能培养等。很多教学内容都是方法性教学, 微课程可以将这些教学内容直接以点的方式传递给学生们, 让学生们在学习的过程中可以更好的进行知识感悟, 从而实现更加快捷有效的教学模式。
1.2.3 点状与碎片化
点状与碎片化的知识集锦能够让学生们在学习中找到探索的乐趣, 充分体现了微课程的优势。实际上, 在学习的过程中, 就是通过知识点之间的相互累积与关联, 才构成了庞大的知识体系。由于传统教学模式中, 只能将这些知识点进行散乱学习, 无法形成真正的知识体系。但是利用微课程, 就可以实现分布式学习模式, 形成完整的体系。
2 C语言程序设计教学分析
对于C语言程序设计教学, 主要分析其目前的教学模式中存在的一些问题;
对于C语言程序设计教学而言, 在刚入学就进行学习, 会对学生们造成非常大的压力;
为了能够理解其中生僻的含义词汇, 需要耗费大量的认知时间;
学生们在学习的过程中, 总会觉得找不到重点, 知识点彼此之间无法连接。
这些都对C语言课程的学习造成了非常大的影响。
因此, 为了能够有效的提高C语言程序设计教学的效率, 必须认清以上总结的问题和弊端, 才能够进行合理有效的改革。
3 基于微课程的C语言程序设计教学改革探究
通过对微课程的优势和特点, 以及对C语言程序设计教学的缺陷进行分析, 可以根据微课程的一些优势来实施C语言程序设计教学模式的改革:
首先, 将C语言程序设计教学的教学内容拆分成独立的微课程, 来进行针对性教学。这项改革对于C语言程序设计教学而言非常有必要, 因为C语言程序设计教学内容对于逻辑性的要求非常强, 彼此之间是一种相互联系但又相互独立的关系。那么, 可以根据C语言程序设计教学中的独立模块, 进行针对性的录制与视频制作, 从而将单一的知识点直接传递给学生们, 学习的效果就会更加明显。
其次, C语言程序设计课程内容相对比较抽象和枯燥。尤其是因为C语言程序设计教学在大一的第一学期就开始进行, 对于刚步入大学的学生们而言, 学习这样的课程确实存在比较大的困难, 尤其是理解其中的逻辑关系以及一些比较深奥的定义等。因此, 利用微课程短小精准的特点, 以及视频或者音频的丰富表达方式, 可以在很大程度上提高C语言程序设计课程的教学效率。对于学生们的学习效果而言, 也起到了非常大的强化作用。
最后, C语言程序设计教学改革需要利用微课程的碎片化优势, 微课程的碎片化特点并非不足, 反而是非常强大的优势。利用C语言程序设计教学中的知识分布特点, 制定相应的碎片化的教学内容提纲, 可以让学生们在探索的过程中学习。微课程的点状分布, 让不同的知识点成为了独立而又相对联系的个体, 从而让彼此之间存在非常密切的联系。由此, 能够让学生在学习的过程中更好的体会探索的趣味, 进而增强学习的兴趣。
4 结语
本文通过对微课程的概念以及优势进行分析, 确定了微课程在教育领域中的优势。结合C语言程序设计教学中存在的一些问题和弊端, 提出针对性的教育改革分析。C语言程序设计教学的改革, 需要从教学手段, 教学模式等多个方面进行, 而基于微课程的教育改革, 刚好实现了C语言程序设计教学中急需解决的问题。总之, C语言程序设计教学要进行改革, 引入微课程是非常必要和重要的。
摘要:微课程是近年来发展比较快速的教育模式之一, 其优势相对比较明显, 对于一些传统课程的教学工作起到了非常大的推进与促进作用。基于此, 通过对微课程的教学理念以及教学模式进行分析, 并结合C语言程序设计教学课堂存在的问题, 进行深化分析, 从而探讨基于微课程的C语言程序设计教学的改革问题。
关键词:微课程,C语言程序设计,教学改革,教学模式
参考文献
[1]胡家芬.思维导图在《C语言程序设计》语法教学中的应用研究[J].电脑编程技巧与维护, 2012 (22) :124-124.
[2]何有生.面向对象的GPS网程序设计的研究[J].科技视界, 2012 (27) :221-223.
[3]张振顶, 黎华, 李茂东, 叶向荣, 尹忠杰.LABVIEW和C语言混合编程在工业锅炉热效率计算中的应用[J].能源与环境, 2012 (05) :24-25.
微程序控制器 篇7
形式化方法是保证微内核操作系统正确性的重要方法。形式化验证[1]就是从数学上完备地证明系统是否实现了设计者的意图,是指用形式化方法描述程序的规范,然后通过一定的验证规则对这些形式化规范以及相关代码进行验证,判断这个程序是否依照程序规范所指示的方式执行主要包括模型检测和定理证明。定理证明[2]是将软件按照需求、设计描述为形式化系统,将需要满足的性质描述为系统中的定理,并建立推理规则,将待检测软件的各个要素与形式化系统中的变量对应起来,证明这些要素满足系统中的定理和规则。模型检测[3]是将测试对象建立状态机模型,将待检测属性用逻辑语言描述,然后用有限状态穷举的方法判定状态机模型是否满足用逻辑语言描述的待检测性质。本文主要是在UPPAAL中使用模型检测方法,对微内核操作系统程序验证方法进行探索和研究。
1 模型检测工具 UPPAAL
UPPAAL[4]是由瑞典的Uppsala大学与丹麦的Aalborg大学于1995年联合研发的一种以R.Alur和Dill提出的时间自动机作为行为模型的自动验证工具,可以用于实时系统模拟、仿真、验证,主要采用一组带有整形变量的时间自动机对实时系统的行为进行模拟,可以有效地对实时系统建模,模拟和验证,它可以验证实时系统中的可达性以及由可达性所衍生的一些性质,特别适合对实时系统的安全性和有界活性进行自动验证,从而确保了系统在实际运行中的高度正确性。
UPPAAL对系统性质的描述采用形式化描述语言CTL(timed computation tree logic)逻辑,UPPAAL中的模型检测采用的方法是状态空间的穷搜索,其自动验证器主要用于检查简单不变式,系统的安全性,可达性以及受限活性等。CTL查询语言由路径公式和状态公式组成,状态公式描述单独的状态;路径公式量化模型的路径或轨迹,可以分为可达性、安全性、活性。UPPAAL使用的规范验证语言形式如下:
Prop::=A []Expression|E<> Expression|E []Expression|A<>Expression|Expression Expression
UPPAAL使用的规范验证语言归纳见表1:
具体查询语句的含义如下,其中p、q表示某个状态性质:
(1)E<>p:表示Possibly,存在一条路径,p最终成立,E<>p为真当且仅当在时间自动机中存在一个序列S0→S1→…→Sn,使得S0是起始状态,Sn是p。
(2)A[]p: 表示Invariantly,对于所有的路径,p总是成立,A[]p等价于notE<>notp。
(3)E[]p: 表示Potentially always,存在一条路径,p总是成立。在时间自动机中,E[]p为真当且仅当存在一个序列S0→S1→…→Si→…使得p在所有状态si中得以满足。
(4)A<>p: 表示Eventually,对于所有的路径,p最终成立,A<>p等价于notE[]notp。
(5)p→q: 表示Lead to,无论何时p成立,q最终成立,p→q等价于A[](p implyA<>q)。
2 基于 UPPAAL的程序验证
2.1 验证的研究方案
模型检测[5]使用状态空间搜索的办法来全自动地检验一个有穷状态系统是否满足其设计规范。这类方法的优点在于它有全自动化的检测过程且验证速度快、效率高,并且如果一个性质不满足,它能给出这个性质不满足的理由,据此可对系统描述进行改进。
在模型检测中涉及两种形式说明语言:性质说明语言,例如CTL,用于描述系统的性质;模型描述语言,例如时间状态自动机,用于描述系统的模型。模型检测技术用于检验由模型描述语言描述的系统模型是否满足性质说明语言描述的系统性质。
因此,采用模型检测方法对程序进行验证时主要分为建模、规约、验证三步。其中,建模是采用时间状态自动机对程序进行建模分析;规约是对抽取的程序性质进行描述;验证是通过模型检测工具UPPAAL来检验在所建立的模型上,给出的系统性质是否能够得到满足。基于模型检测的验证研究方案如图1所示。
2.2 ucosII 任务管理在 UPPAAL中的模型表示
本节以微内核操作系统ucos-II[6]任务管理部分中的taskinitusers .c文件中初始化用户任务源函数代码作为实例进行分析。μcosII的任务看起来与任何C函数一样,具有一个返回类型和一个参数,只是它从不返回,任务的返回类型必须被定义成void型,任务必须是图2、图3两种结构之一:
根据所需验证代码实现的功能,通过函数调用、同步信号等形式,判断返回值情况以及函数调用是否成功,建立代码到UPPAAL模型的对应关系,对应的模型如图4、图5所示。
2.3 属性表示及验证
利用UPPAAL验证器进行属性的验证,可对如下的性质进行验证:
(1)E<>Initialize_user_tasks.Internal_error_Occurred验证Internal_error_Occurred状态是否可达。若可达则说明存在一条路径从函数的入口到达该状态,反之亦然。能够有效自动的判定,程序中的重要状态是否可达,从而验证程序编写的正确性。
(2)A []not deadlock可以验证该函数是否出现死锁。若出现死锁,则说明函数的编写有问题,不能正常的传递参数,得到正确的返回值等信息,可以根据模型,动态跟踪错误发生的位置。
验证结果如图6所示。
由验证结果可以清晰的看出,所建立的模型不会产生死锁,Internal_error_Occurred状态是可达的。根据这些属性的验证结果,当发现代码的不安全和不完善后,可以及时的进行修改,以满足代码正确性的要求。
3 结束语
在形式化验证程序正确性的领域中,模型检测以其自动化程度高、强大的时态逻辑描述能力而得到了广泛的研究与应用。模型检测基于时态逻辑,为验证对象建立状态机模型,将待检测属性用逻辑语言描述,然后用有限状态穷举的方法判定状态机模型是否满足用逻辑语言描述的待检测性质,是形式化验证的主流方法之一。本文采用模型检测方法对微内核操作系统的程序进行分析和验证,采用这种方法对程序进行验证的自动化程度高,用时间自动机对程序分析结构进行建模,形象且直观易懂,通过实验的验证结果可知,模型检测方法可以应用于微内核操作系统软件的验证,能够得到正确的验证结果,具有一定的研究和验证实用价值。
摘要:随着航天、航空工业的发展,机载嵌入式软件的可信属性验证是新一代飞机研制最关注的软件质量保障问题。形式化方法具有严密的数学基础,能够准确的对系统进行建模、描述和验证,能够在软件系统的设计初期发现潜在的错误,是保证机载软件可信性和安全性的软件正确性验证技术。形式化验证以形式化描述为基础,对所描述系统的特性进行分析和验证,以评判系统是否满足期望的性质,分为定理证明和模型检测两类。文章研究模型检测方法应用于程序形式化描述和验证的技术,提出基于模型检测的验证程序正确性的方案,并进行微内核操作系统程序分析,最后在UPPAAL中进行程序属性的验证。
浅析可编程序控制器的编程方法 篇8
关键词:可编程序控制器,存储程序控制,顺序功能图,梯形图
随着我国工业化的不断发展, 可编程序控制器在电气自动化领域的贡献日益突显。由于可编程序控制器具有简单易懂、操作方便、可靠性高、通用性强、体积小、使用寿命长等优点, 它在各行各业的电气控制领域的应用越来越广泛。近几年来, 伴随着电子类产品的价位下调, 可编程序控制器的价位也有所下降, 这就为其大规模应用奠定了基础。
1 接线程序控制与存储程序控制系统
传统的电气控制是通过不同的导线连接方式来连接继电器、接触器、电子元件, 从而实现控制任务的逻辑部分, 这属于接线程序控制系统。而现在的可编程序控制器是台专用的微型计算机, 它是通过存储的程序控制系统来实现电气控制要求的, 控制程序的变更不必改变硬件导线的连接就能轻易实现, 所以对于传统的硬逻辑控制来说, 可编程序控制器的出现颠覆了人们多年来程序设计的习惯。操作者往往原本早已熟悉传统的硬件接线方式, 形成了固定的编程思维模式, 在此基础上才学习存储程序控制系统 (即可编程序控制器的编程) , 编程思维模式很容易被传统模式所禁锢, 虽然这样可以学习到可编程序控制器的编程技巧, 但是实际的应用还是会出现一些问题。
2 存储程序控制系统的编程方法
笔者从事多年的可编程序控制器的研究工作, 认为要想熟练运用可编程序控制器就要从程序的设计方法上来入手, 经常提到存储程序控制系统的编程方法的有继电器电路转化设计法、经验设计法和顺序控制设计法等。笔者就这些方法进行简要的分析。
2.1 基于接线程序的编程方法
继电器电路转化设计法和经验设计法都属于这同一范畴, 它们都是在传统的硬逻辑继电器的基础上来编制适合可编程序控制器的梯形图程序。继电器电路设计法就是将继电接触器控制电路“移植”到可编程序控制器上[1], 由于可编程序控制器的扫描方式与继电接触器电路原理上不同, 所以在生搬硬套的基础上往往出现一些不可预期的情况, 会产生一次性输出竞争和触点竞争等问题, 所以不是可编程序控制器的最优的设计方法, 只能对一些老旧控制线路的改造等。而经验设计法更是没有一套固定的步骤可循, 具有很大的试探性和随意性, 在设计复杂的程序时, 用大量的中间单元来完成记忆、连锁和互锁功能, 由于考虑的因素比较多, 这些因素又往往交织在一起, 分析起来比较困难, 并且修改某一局部就可能对整个系统其它部分产生意想不到的结果, 往往事倍功半。此方法设计出来的程序其他工程人员不易读懂, 维修和改进也比较困难, 即使是自己编制的程序也可能时间过长而忘记。所以, 这两种编程方法并不是最优的编程方法。
2.2 顺序控制设计法
顺序控制设计法则是一种先进的设计方法, 很容易被初学者接受, 有经验的工程师使用顺序控制设计法, 也会提高程序的设计效率, 程序的调试、修改和阅读也是很方便[2]。因为在工业领域中, 大部分的生产工艺都是按预先规定好的顺序, 在各个输入信号的作用下, 根据内部状态和时间的顺序, 生产过程的各个执行机构自动有序地进行操作, 只要根据生产工艺画出顺序功能图, 然后根据顺序功能图画出梯形图就可以了, 非常的简单明了。顺序功能图转换成梯形图有三种方法, 下面就这三种方法做一比较说明。
(1) 利用“启—保—停”电路进行转换。这种方法还是传承了经验设计法的理念, 找到每一步骤的启动条件、停止条件和自锁触点, 然后驱动每一个步骤的辅助继电器M, 这一步的动作内容就和该步的辅助继电器M并联输出[3]。
为了说明特举一例子。运料小车从A地运到B地, 在B地卸货后小车再从B地返回到A地待命。图1为其单周期工作方式顺序功能图, 图2为利用“启—保—停”电路进行转换成的梯形图。
(2) 以转换为中心的编程方法。以转换为中心的编程方法就在原来“启—保—停”电路的基础上用可编程序控制器的置位指令SET和复位指令RST来实现的, 由于置位指令本身带有自保功能, 所以和“启—保—停”电路比较看不到自保的触点。图1若用此方法进行转换则为如图3。
(3) 用步进顺控指令来编程。对于根据工艺要求绘制出的顺序功能图还有第三种的转换方法, 此方法是可编程序控制器专门为顺序功能图设计了两条指令来进行转换。就是步进顺控指令STL和步进返回指令RET。此时只要驱动下一个步, 上一步的状态继电器自动结束, 比以转换为中心的编程省去了复位指令。图1若用此方法进行转换则为如图4。
3 三种转换方法的异同
此三种转换方法都是比较实用, 顺序功能图不管用那种方法转换都可以, 用“启-保-停”电路进行转换对于对传统继电接触器电路比较熟悉的工程人员来说可能上手更快一点, 以转换为中心的编程方法是在“启-保-停”电路的基础上运用了可编程序控制器的两条指令比“启-保-停”电路的转换更简洁一点, 但是需要注意的是输出动作时不能和“启-保-停”电路表示步的辅助继电器M并行输出, 一般是在梯形图的最后用代表步的辅助继电器的常开触点或它们的并联电路来驱动各步的动作。对于用步进顺控指令来转换来说是比较方便和最为简洁的, 从以上三个梯形图可看出此方法程序步数少, 占用扫描时间最短, 响应速度快, 是三种中最优的方法, 但是还需要再补充一些状态继电器的知识。所以, 此三种转换方法各有千秋, 工程人员不管用那一种都是可以的, 只要能熟练掌握就可。
以上对可编程序控制器的编程方法的论述都是以三菱FX2N可编程序控制器的基础上来说的, 编程思路同样也适用其它种类的可编程序控制器。
参考文献
[1]李稳贤, 田华.可编程序控制器应用技术 (三菱) .冶金工业出版社, 2008-6.
[2]瞿彩萍.PLC应用技术 (三菱) .中国劳动社会保障出版社, 2006-7.
【微程序控制器】推荐阅读:
可编程序控制器应用06-15
施工程序控制10-01
服务控制程序08-25
自动控制程序10-06
输入/输出控制程序09-22
虫害控制程序-食堂06-06
工资工时控制管理程序07-07
记录管理控制程序09-21
PLC编辑程序电气控制06-29
质量控制程序及措施07-11