复杂功能模块设计(状态机)_第1页
复杂功能模块设计(状态机)_第2页
复杂功能模块设计(状态机)_第3页
复杂功能模块设计(状态机)_第4页
复杂功能模块设计(状态机)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、复杂功能模块设计在正向设计中,一个数字系统首先要分解为若干个功能模块,例如一个单片机除CPU、存储器外,可能包括中断控制器、定时/计数器、异步串行接口、SPI接口、Pc接口等,这些电路就是功能模块。一个重要设计思想是,任何复杂功能模块是由状态机和数据通道两部分构成的。这里数据通道(Dsapath)指的是典型逻辑电路,如计数器、寄存器、算术运算电路等。状态机就是控制器,数据通道在状态机控制下工作。一个复杂功能模块的设计几乎总是从状态机设计开始的。状态机输入状态寄存器数据通道V典型逻辑部件逻辑门图1复杂功能模块的一般结构例1:设计一个简单报警器。输入信号來自8位A/D转换器,要求当输入大于等于10

2、0时,产生报警信号,当输入回落到97以下时解除报警信号。rstelkalarmad7:0图2分析:关键是输入为98、99时怎么处理?ad7:0逻辑门DFFAalarm图3简单报警器的内部结构代码:例2:简易交通灯问题。主干道至少通行10分钟才能使小路方向通行1分钟。在主干道通行时,如果有过街请求则在10分钟到时变为小路通,如无请求,则主干道继续通行5分钟后再变为小路通。主干道小请求路图5诸求时钟3276SHZ状态机代码逻辑门逻轲门二-t=逻辑门例3:售货机问题假设商品价格7角,并假设每次只能销售一个商品,且售货机发现金额超过7角即关闭投币口。找零时,每次只能找回一枚硬币,如需找回5角以上,优先

3、考虑5角。时钟复位收到1角收到5角收到1元售货机控制器付货找回1角找回5角投币口Z多积DVlf田询出Y廉丄烛i唆舉DVJ.r聊E*北0廉轴ejnpnjisovir4anBijoaismi丄moiia丄Is0】s!旳beieQPhysica-p_ni|eoueog-Ajepunoguietioueog-AjepunogWkHVlMrbDVlf沖呦1IEEEJTAG1SVF1Amontec11Spec1Spec1Code1+-+-+1-DR1DREXIT21”0000”1hexO11Exitl-DR1DREXIT11,0001n1hexl11Shift-DR1DRSHIFT1,f0010K1hGx

4、211Pause-DR1DRPAUSE1,f0011111hex311Select-IR1IRSELECT1,f0100n1hex411Update-DR1DRUPDATE11hGx511Capture-DR1DRCAPTURE11hex11Select-DR1DRSELECT11hex?11Exit2-IR1IREXIT21,fL000,f1hGxS11Exitl-IR1IREXIT111hex911Shift-:ER1IRSHIFT1,f1010111hexA11PausG-IR1IRPAUSE1,fL011,f1hexB11Run-Test/Idle|IDLE11hexC11Update

5、-IR1IRUPDATE1-llOl111hexD11Capture-DR1IRCAPTURE11hexE11TestLogicReset|RESET1,f1111111hexF1十TDIUPDATI-IRCLOCKIRSHIFTIRTMSTCKTRSTTAP控制器SELECTUPDAIEDRCLOCKDRSHIFTDR旁通寄存希数据存器TMS|RunTewasaectbRscanSelect_RScancapcreRsh_f_REx.nRupdMZRRun.Yesv&leFigure5.InstructionRegisterScanTimingJUUUmTOJ-LHTCKTMSTDITOOu

6、pdeDREXH.DRszflDRcapcr?DRsdectDRscanRun,TesMd-eFigure6.DataRegisterScanTiming4.2状态机设计方法一般情况下,一个数字电路系统总是可以分解为数据通道(Datapath)和状态机两个部分。“数据通道”一词与字面意义不同,泛指较常用的数字部件,具有通用性。状态机则是对电路特殊性部分的描述。这里所说的“状态机”是一种描述电路功能的方法,与数字电路中的状态转换图类似,但要更抽象一些。以下以一个“密码”定时器为例,介绍状态机分析方法。(1)电路功能描述输入输出信号见图4-6,只要求设计“密码定时器”模块。上电复位后,定时器处于等

7、待状态,输出控制信号“out”为0,计时显示输出为BCD码“9”。输入正确密码后开始倒计时,每秒计数值减1,计时回0后,输出控制信号置1。按键事件信号(key_in)的每个脉冲代表一次数字输入事件,输入数字以bed码形式给出。密码为固定的4位数字,例如“2012”。密码输入间隔时间或总的输入时间不限。输入数据的总位数也不限,只要4个连续的输入数据与密码相同即可。图4-6密码定时器设计思路:可以想象电路中将包含分频电路、BCD减法计数器等常用部件,这些属于“数据通道”部分,功能比较简单。问题的关键是如何描述密码的输入情况。用寄存器保存输入密码的方法可行,但耗用较多硬件资源。以下釆用状态机方法描述

8、密码输入情况。10图4-7边沿检测regl:Okey_in_edge;always(posedgeelk)beginif(rst_n=l*bO)key_in_edge=2*511;elsebegmkey_ui_edg亡1=key_m.edgeO;key_in_edgeO=key_in;endendalways(posedgeelk)beginif(rst_n=l*bO)div=2fb00;elsediv=div+Fbl;end/always(posedgeelk)beginif(rst_n=l*bO)ent0)ent=ent1bl;end!(21)图4-8状态机paiainetei2:0PAS

9、S_O=3bOO;paiainetei2:0PASS_1=3bOl;parainetei2:0PASS_2=3blO;paiainetei2:0PASS_3=3bll;parainetei2:0PASS_4=3bll;always(posedgeelk)beginif(rst_n=l*bO)state=PASS_O;elsestate=next_state;endalways(stateork亡y_in_edgeorbed)beginif(key_in_edge=3b01)begincase(state)PASS_0:beginif(bcd=3d2)nextstate=PASS1;elsenextstate=PASS0:zendPASS_l:beginif(bcd=3*(10)nextstate=PASS2;elseif(bcd=3*d2)nextstate=PASS1;elsenextstate=PASS0:zendPASS_2:beginif(bcd=3*dl)nextstate=PASS3;elseif(bcd=3*d2)nextstate=P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论