电子设计自动化技术EDA.pptx_第1页
电子设计自动化技术EDA.pptx_第2页
电子设计自动化技术EDA.pptx_第3页
电子设计自动化技术EDA.pptx_第4页
电子设计自动化技术EDA.pptx_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

EDA技术与应用中国地质大学通信工程系 数字系统中状态机的设计 回忆计数器设计 设计一电路 包含基4计数器 和译码输出模块 计数器的输出 Present value 从0到3循环 当计数值为2时 译码输出 DataOut 为 1 否则输出 0 Clk Present valueQ n Next valueQ n 1 译码 DataOutZ n 00 0 01 0 10 1 11 0 00 0 01 0 10 1 11 0 扩展一个输入端din 当din 1时计数器递增计数 当din 0时计数器递减计数 再将计数器修改成一个状态转换器 状态为S0 S1 S2 S3 每个状态的取值根据具体情况而定 比如S0 00 S1 11 S3 01 S4 10 再将计数器修改成一个状态转换器 状态为S0 S1 S2 S3 每个状态的取值根据具体情况而定 比如S0 00 S1 11 S3 01 S4 10 现在我们得到了一个比较通用的时序电路 这种电路统称为状态机 StateMachine 状态机的分类 moore型和mealy型 状态机的表示方法1 方法一 状态转换表 状态机的表示方法2 方法二 算法流程图 方法与软件程序的流程图类似 状态转换表和算法流程图都不适合复杂系统的设计 状态机的表示方法3 方法三 状态转换图 这是最流行的表示方法 状态1 状态4 状态2 状态3 入 出 入 入 入 出 出 出 Moore 条件控制定序 直接控制定序 状态机的表示方法3 方法三 状态转换图 这是最流行的表示方法 状态1 状态4 状态2 状态3 入 出 入 入 入 出 出 出 出 Mealy 条件控制定序 直接控制定序 为什么要使用状态机 一般有限状态机的设计 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点 状态机的结构模式相对简单 状态机容易构成性能良好的同步时序逻辑模块 状态机的VHDL表述丰富多样 在高速运算和控制方面 状态机更有其巨大的优势 就可靠性而言 状态机的优势也是十分明显的 有限状态机的VHDL设计 用户自定义数据类型定义语句 TYPE语句用法如下 TYPE数据类型名IS数据类型定义OF基本数据类型 或TYPE数据类型名IS数据类型定义 以下列出了两种不同的定义方式 TYPEmyarrayISARRAY 0TO15 OFSTD LOGIC TYPEweekIS sun mon tue wed thu fri sat 有限状态机的VHDL设计 用户自定义数据类型定义语句 TYPEm stateIS st0 st1 st2 st3 st4 st5 SIGNALpresent state next state m state 一般有限状态机的设计实现 有限状态机的VHDL设计 1 说明部分 2 主控时序进程 一般状态机结构框图工作示意图 ARCHITECTURE ISTYPEFSM STIS s0 s1 s2 s3 SIGNALcurrent state next state FSM ST 主控时序进程 主控组合进程 3 主控组合进程 一般有限状态机的设计实现 主控组合进程的任务是根据外部输入的控制信号 包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号 或 和 当前状态的状态值确定下一状态 next state 的取向 即next state的取值内容 以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容 4 辅助进程 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYs machineISPORT clk reset INSTD LOGIC state inputs INSTD LOGIC VECTOR 0TO1 comb outputs OUTINTEGERRANGE0TO15 ENDs machine ARCHITECTUREbehvOFs machineISTYPEFSM STIS s0 s1 s2 s3 SIGNALcurrent state next state FSM ST BEGINREG PROCESS reset clk BEGINIFreset 1 THENcurrent state s0 ELSIFclk 1 ANDclk EVENTTHENcurrent state next state ENDIF ENDPROCESS COM PROCESS current state state Inputs 有限状态机的VHDL设计实例 BEGINCASEcurrent stateISWHENs0 comb outputscomb outputscomb outputscomb outputs 14 IFstate inputs 11 THENnext state s3 ELSEnext state s0 ENDIF ENDcase ENDPROCESS ENDbehv 接上页 思考 moore ormealy 状态机的工作时序图 一般有限状态机的设计 状态机的应用设计 例子 设计一个二进制序列检测器 当检测到10110序列时 就输出1 一个时钟周期的脉冲 其他情况下输出0 规定检测到一次之后 检测器复位到最初始的状态 重新从头检测 如下所示 输入 01101101101100 输出 00000001000001 状态转换图设计 Moore 1 0 1 1 0 S0 0 S1 0 S2 0 S3 0 S4 0 S5 1 Reset 1 1 0 0 1 1 0 1 0 0 1 0 1 0 1 1 0 s1 s2 s3 s4 s5 s0 问题1 如何保证状态机在初始时状态为s0 问题2 在状态机跑飞 即脱离有效状态 s0 s5 时 如何使状态机能恢复工作 Sx 0 波形 波形如下图所示 问题 如果需要将输出脉冲往前推一个时钟周期 该如何修改设计 1 0 1 1 0 1 0 1 1 0 s1 s2 s3 s4 s5 s0 输入 时钟 输出 当前状态 发现当当前壮态为s4 并且输入为0时 输出为1 状态转换图设计 Mealy S0 S1 S2 S3 S4 S5 Reset 1 0 0 1 1 0 1 0 0 1 0 1 sX 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 s1 s2 s3 s4 s5 s0 0 0 1 s0 练习 用状态机设计序列检测器 1101001 在通信系统中可以有什么用途 用VHDL设计状态机 AD574A采样控制状态机 VHDL综合器易于优化 易构成性能良好的时序逻辑模块 结构模式简单 层次分明 易读易懂 易排错 运行模式类似于CPU 易于进行顺序控制 利用同步时序和全局时钟线可实现高速FSM 高可靠性 非法状态易控制 为什么要使用状态机 AD574控制方法 现在我们来讨论AD574A的CE 12 n8 nCS R nC和A0对其工作状态的控制过程 在CE 1 nCS 0同时满足时 AD574A才会正常工作 在AD574处于工作状态时 当R nC 0时A D转换 当R nC 1时进行数据读出 12 n8和A0端用来控制启动转换的方式和数据输出格式 A0 0时 启动的是按完整12位数据方式进行的 当A0 1时 按8位A D转换方式进行 当R nC 1 也即当AD574A处于数据状态时 A0和12 n8控制数据输出状态的格式 当12 n8 1时 数据以12位并行输出 当12 n8 0时 数据以8位分两次输出 而当A0 0时 输出转换数据的高8位 A0 1时输出A D转换数据的低4位 这四位占一个字节的高半字节 低半字节补零 其控制逻辑真值表见表1 Moore型有限状态机的设计 三进程有限状态机 CEnCSR nC12 n8A0工作状态0XXXX禁止X1XXX禁止100X0启动12位转换100X1启动8位转换1011X12位并行输出有效10100高8位并行输出有效10101低4位加上尾随4个0有效 AD574逻辑控制真值表 X表示任意 三进程有限状态机 AD574工作时序 STATUS AD574芯片的一个输出引脚 标志芯片的忙或闲的状态 在转换进行时 它为高电平 转换结束时变低电平 8051与AD574的接口电路 三进程有限状态机 AD574工作时序 三进程有限状态机 采样状态机结构框图 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYAD574ISPORT D INSTD LOGIC VECTOR 11DOWNTO0 CLK STATUS INSTD LOGIC 状态机时钟CLK AD574状态信号STATUSLOCK0 OUTSTD LOGIC 内部锁存信号LOCK的测试信号CS A0 RC K12X8 OUTSTD LOGIC AD574控制信号Q OUTSTD LOGIC VECTOR 11DOWNTO0 锁存数据输出ENDAD574 ARCHITECTUREbehavOFAD574ISTYPEstatesIS st0 st1 st2 st3 st4 SIGNALcurrent state next state states st0 SIGNALREGL STD LOGIC VECTOR 11DOWNTO0 SIGNALLOCK STD LOGIC BEGINK12X8 1 LOCK0 LOCK COM1 PROCESS current state STATUS 决定转换状态的进程接下页 三进程有限状态机 BEGINCASEcurrent stateISWHENst0 next statenext stateIF STATUS 1 THENnext statenext statenext statenext stateCSCSCSCSCSCS 1 A0 1 RC 1 LOCK 0 其它情况返回初始态接下页 接上页 ENDCASE ENDPROCESSCOM2 REG PROCESS CLK 时序进程BEGINIF CLK EVENTANDCLK 1 THENcurrent state next state ENDIF ENDPROCESSREG LATCH1 PROCESS LOCK 数据锁存器进程BEGINIFLOCK 1 ANDLOCK EVENTTHENREGL D ENDIF ENDPROCESS Q REGL ENDbehav 接上页 三进程有限状态机 AD574采样状态机工作时序 单进程Moore型有限状态机 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYMOORE1ISPORT DATAIN INSTD LOGIC VECTOR 1DOWNTO0 CLK RST INSTD LOGIC Q OUTSTD LOGIC VECTOR 3DOWNTO0 ENDMOORE1 ARCHITECTUREbehavOFMOORE1ISTYPEST TYPEIS ST0 ST1 ST2 ST3 ST4 SIGNALC ST ST TYPE BEGINPROCESS CLK RST BEGINIFRST 1 THENC ST ST0 Q 0000 ELSIFCLK EVENTANDCLK 1 THEN接下页 CASEC STISWHENST0 IFDATAIN 10 THENC STIFDATAIN 11 THENC STIFDATAIN 01 THENC STIFDATAIN 00 THENC STIFDATAIN 11 THENC STC ST ST0 ENDCASE ENDIF ENDPROCESS ENDbehav 接上页 状态机综合后的RTL电路模块图 单进程Moore型有限状态机 单进程Moore型有限状态机 单进程状态机工作时序 单进程Moore型有限状态机 2进程状态机工作时序图 Mealy型有限状态机的设计 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYMEALY1ISPORT CLK DATAIN RESET INSTD LOGIC Q OUTSTD LOGIC VECTOR 4DOWNTO0 ENDMEALY1 ARCHITECTUREbehavOFMEALY1ISTYPEstatesIS st0 st1 st2 st3 st4 SIGNALSTX states BEGINCOMREG PROCESS CLK RESET 决定转换状态的进程BEGINIFRESET 1 THENSTX ST0 ELSIFCLK EVENTANDCLK 1 THEN 接下页 CASESTXISWHENst0 IFDATAIN 1 THENSTXIFDATAIN 0 THENSTXIFDATAIN 1 THENSTXIFDATAIN 0 THENSTXIFDATAIN 1 THENSTXSTXIFDATAIN 1 THENQIFDATAIN 0 THENQIFDATAIN 1 THENQIFDATAIN 0 THENQ 11011 ELSEQ 01001 ENDIF WHENst4 IFDATAIN 1 THENQQ 00000 ENDCASE ENDPROCESSCOM1 ENDbehav 接上页 上例状态机工作时序图 MEALY2 LIBRARYIEEE MEALYFSMUSEIEEE STD LOGIC 1164 ALL ENTITYMEALY2ISPORT CLK DATAIN RESET INSTD LOGIC Q OUTSTD LOGIC VECTOR 4DOWNTO0 ENDMEALY2 ARCHITECTUREbehavOFMEALY2ISTYPEstatesIS st0 st1 st2 st3 st4 SIGNALSTX states SIGNALQ1 STD LOGIC VECTOR 4DOWNTO0 BEGINCOMREG PROCESS CLK RESET 决定转换状态的进程BEGINIFRESET 1 THENSTXIFDATAIN 1 THENSTXIFDATAIN 0 THENSTXIFDATAIN 1 THENSTXIFDATAIN 0 THENSTXIFDATAIN 1 THENSTXSTX st0 ENDCASE 接下页 ENDIF ENDPROCESSCOMREG COM1 PROCESS STX DATAIN CLK 输出控制信号的进程VARIABLEQ2 STD LOGIC VECTOR 4DOWNTO0 BEGINCASESTXISWHENst0 IFDATAIN 1 THENQ2 10000 ELSEQ2 01010 ENDIF WHENst1 IFDATAIN 0 THENQ2 10111 ELSEQ2 10100 ENDIF WHENst2 IFDATAIN 1 THENQ2 10101 ELSEQ2 10011 ENDIF WHENst3 IFDATAIN 0 THENQ2 11011 ELSEQ2 01001 ENDIF WHENst4 IFDATAIN 1 THENQ2 11101 ELSEQ2 01101 ENDIF WHENOTHERS Q2 00000 ENDCASE 接下页 IFCLK EVENTANDCLK 1 THENQ1 Q2 ENDIF ENDPROCESSCOM1 Q Q1 ENDbehav 接上页 上例状态机工作时序图 1 检测三个连续1的状态机 用两进程的vhdl程序描述该状态机 2 状态机有两个输入a b 一个输出c 如果检测到输入对的序列为 a 1b 1 a 1b 0 a 0b 0 那么c在序列的最后一个周期变为1 其他输出保持为0 用两进程的vhdl程序描述该状态机 课后作业 状态机的状态编码 1 状态位直接输出型编码 控制信号状态编码表 每一位的编码值都赋予了实际的控制功能 即 CS current state 4 A0 current state 3 RC current state 2 LOCK current state 1 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYAD574AISPORT D INSTD LOGIC VECTOR 11DOWNTO0 CLK STATUS INSTD LOGIC OUT4 OUTSTD LOGIC VECTOR 3DOWNTO0 Q OUTSTD LOGIC VECTOR 11DOWNTO0 ENDAD574A ARCHITECTUREbehavOFAD574AISSIGNALcurrent state next state STD LOGIC VECTOR 4DOWNTO0 CONSTANTst0 STD LOGIC VECTOR 4DOWNTO0 11100 CONSTANTst1 STD LOGIC VECTOR 4DOWNTO0 00001 CONSTANTst2 STD LOGIC VECTOR 4DOWNTO0 00000 CONSTANTst3 STD LOGIC VECTOR 4DOWNTO0 00100 CONSTANTst4 STD LOGIC VECTOR 4DOWNTO0 00110 SIGNALREGL STD LOGIC VECTOR 11DOWNTO0 SIGNALLK STD LOGIC BEGINCOM1 PROCESS current state STATUS 决定转换状态的进程 接下页 BEGINCASEcurrent stateISWHENst0 next statenext stateIF STATUS 1 THENnext statenext statenext statenext state st0 ENDCASE OUT4 current state 4DOWNTO1 ENDPROCESSCOM1 REG PROCESS CLK 时序进程BEGINIF CLK EVENTANDCLK 1 THENcurrent state next state ENDIF ENDPROCESSREG LK current state 1 LATCH1 PROCESS LK 数据锁存器进程BEGINIFLK 1 ANDLK EVENTTHENREGL D 接下页 ENDIF ENDPROCESS Q REGL ENDbehav 接上页 上例状态机工作时序图 2 顺序编码 编码方式 SIGNALCRURRENT STATE NEXT STATE STD LOGIC VECTOR 2DOWNTO0 CONSTANTST0 STD LOGIC VECTOR 2DOWNTO0 000 CONSTANTST1 STD LOGIC VECTOR 2DOWNTO0 001 CONSTANTST2 STD LOGIC VECTOR 2DOWNTO0 010 CONSTANTST3 STD LOGIC VECTOR 2DOWNTO0 011 CONSTANTST4 STD LOGIC VECTOR 2DOWNTO0 100 3 一位热码编码 One hotencoding 一位热码编码方式选择窗 状态机编码方式设置 状态机剩余状态处理 剩余状态 1 在语句中对每一个非法状态都作出明确的状态转换指示 whenst ilg1 next statenext state st0 状态机剩余状态处理 2 利用others语句中对未提到的状态作统一处理 whenothers next state st0 TYPEstatesIS st0 st1 st2 st3 st4 st ilg1 st ilg2 st ilg3 SIGNALcurrent state next state states COM PROCESS current state state Inputs 组合逻辑进程BEGINCASEcurrent stateIS 确定当前状态的状态值 WHENOTHERS next state st0 ENDcase alarm st0AND st1ORst2ORst3ORst4ORst5 OR st1AND st0ORst2ORst3ORst4ORst5 OR st2AND st0ORst1ORst3ORst4ORst5 OR st3AND st0ORst1ORst2ORst4ORst5 OR st4AND st0ORst1ORst2ORst3ORst5 OR st5AND st0ORst1ORst2ORst3ORst4 one hot编码方式的剩余状态处理 状态机 状态机的设计风格 1 Moore状态机 输出仅与当前状态有关2 Mealy状态机 输出与当前状态和输入信号均有关 状态分配 状态的分配对于状态机的设计至关重要 分配的不合理会导致运行速度慢 或者消耗过多的资源 HighlyEncodedStateAssignment利用最少的寄存器 当状态增加时 系统速度会显著降低 以输出信号作为编码选择依据One hotEncoding一个寄存器分配给一个状态使用AlmostOne hotEncoding例如有两组功能相近的状态机 用1bit区分状态机 其余的bit可表示不同的状态 以输出信号作为编码选择依据 最简化状态 经过转换后的状态机图 One hotEncoding的优点 速度快准最佳的状态分配 其他的状态分配即使达到最佳 但如果增加状态或者改变一点功能后 就不一定是最佳 设计方便修改方便消耗的资源较多便于调试 状态分配 错误恢复和非法状态 采用HighlyEncodedStateAssignment出现状态跳转错误时 所处状态仍为合法状态 出现错误时能够自动回到合法状态 在数电里所谓的自启动功能 处于合法状态并不表示电路能工作正常 采用One hotEncoding合法状态少 非法状态多 因此在跳到非法状态时 可以采用有效检测并采取相应的保护手段 HighlyEncode Typestate typeis A B C process clk beginif clk eventandclk 1 thenCASEstateISWHENA if inx 1 thenstateif inx 1 thenstateif inx 1 thenstate C elsif inx 0 thenstate A endif ENDCASE endif endprocess One hotEncoding 1 architectureoneofstatemachine2isconstantA std logic vector 2downto0 001 constantB std logic vector 2downto0 010 constantC std logic vector 2downto0 100 signalstate std logic vector 2downto0 beginprocess clk beginif reset 0 thenstateif inx 1 thenstateif inx 1 thenstateif inx 1 thenstate C elsif inx 0 thenstate A endif ENDCASE endif endprocess endone One hotEncoding 2 1 process inx iState variableiNext State std logic vector 2downto0 beginiNext State 000 if istate

温馨提示

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

评论

0/150

提交评论