已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术与VHDL 第6章VHDL状态机 状态机一般定义 FiniteStateMachine FSM 状态机 一个离散数学模型 给定一个输入集合 根据对输入的接受次序来决定一个输出集合 状态 系统的基本数学特征 有限状态机 输入集合和输出集合都是有限的 并只有有限数目的状态 输入集合A 输出集合X 状态记忆 输出形成 状态迁移 状态机一般结构 CLK 组合逻辑 时序逻辑 同步 当前状态 后续状态 状态机是时序电路的通用模型 任何时序电路都可以表示为有限状态机 对于大部分数字电子系统 都可以划分为控制单元和数据单元两个组成部分 控制单元的主体是一个有限状态机 它接收外部信号和数据单元产生的状态的信息 产生各种控制信号 决定何时进行何种数据处理 有限状态机分为两类 Moore型和Mealy型 状态译码器 状态寄存器 输出逻辑 输入 次态 现态 输出 状态机的VHDL设计 状态机的基本操作有两种 1 状态机内部状态转换 状态机经历一系列状态 下一状态由状态译码器根据当前状态和输入条件决定 2 产生输出信号序列 输出信号由输出译码器根据当前状态和输入条件决定 状态机的次态是现态及输入信号的函数 输出信号根据状态机的现态或输入信号而定 状态机可分为两类 摩尔 Moore 型状态机和米里 Mealy 型状态机 Moore型状态机 其输出只为状态机当前状态的函数 而与输入无关 Mealy型状态机 其输出不仅与状态机当前状态有关 而且与输入有关 状态机的设计步骤 1 定义状态机的各状态 适当地确定状态机的工作状态 是状态机设计的基础 需要充分利用设计者的设计经验 2 建立状态转换图 构造状态转换图时 通常从一个比较容易的状态开始 例如系统的初始状态 复位状态或空闲状态等 都是很好的起始状态 为每个状态标出转换的条件 相应的输入 输出信号 3 建立状态机进程 在VHDL程序中 通常用进程描述有限状态机 由于次态是现态及输入信号的函数 因此 往往将现态和输入信号作为进程的敏感信号 4 进程中定义状态的转移 所有的状态均可表达为CASE WHEN结构中的一条CASE语句 利用CASEWHEN语句IF THEN ELSE语句实现状态的转移 起始状态的选择起始状态指电路复位后所处的状态 选择一个合理的起始状态将使整个系统简捷高效 对于有限状态机 必须有时钟信号和复位信号 状态编码采用log2N个触发器来表示这N个状态采用N个触发器来表示这N个状态 称为一位热码状态机编码 One HotStateMachineEncoding 采用VHDL语言实现基于状态机的设计 就是在时钟信号的触发下 完成两项任务 1 用case或if else语句描述出状态的转移 2 描述状态机的输出信号 6 1状态机设计相关语句 6 1类型定义语句 自定义 TYPE数据类型名IS数据类型定义OF基本数据类型 或TYPE数据类型名IS数据类型定义 TYPEst1ISARRAY 0TO15 OFSTD LOGIC TYPEweekIS sun mon tue wed thu fri sat TYPEm stateIS st0 st1 st2 st3 st4 st5 SIGNALpresent state next state m state TYPEBOOLEANIS FALSE TRUE 5 1状态机设计相关语句 6 1状态机结构 1 说明部分 ARCHITECTURE ISTYPEFSM STIS s0 s1 s2 s3 SIGNALcurrent state next state FSM ST 5 1状态机设计相关语句 6 1状态机结构 2 主控时序进程 负责状态机运转和在时钟驱动下负责状态转换的进程 图6 1一般状态机结构框图 5 1状态机设计相关语句 6 1状态机结构 3 主控组合进程 状态译码进程 根据外部输入的控制信号或 和当前状态的状态值确定下一状态的取向 4 辅助进程 用于配合状态机工作组合进程或时序进程 例6 1 一般状态机的VHDL设计模型 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 ST0 ST1 ST2 ST3 数据类型定义 状态符号化 SIGNALCURRENT STATE NEXT STATE FSM ST BEGINREG PROCESS RESET CLK 主控时序逻辑进程BEGINIFRESET 1 THENCURRENT STATE ST0 检测异步复位信号ELSIF CLK 1 ANDCLK EVENT THENCURRENT STATE NEXT STATE 当测到时钟上升沿时转换至下一状态ENDIF ENDPROCESS 由CURRENT STATE将当前状态值带出此进程 进入进程COM COM PROCESS CURRENT STATE STATE INPUTS 主控组合逻辑进程BEGINCASECURRENT STATEIS 确定当前状态的状态值WHENST0 COMB OUTPUTS 5 初始态译码输出5IFSTATE INPUTS 00 THEN 根据外部的状态控制输入 00 NEXT STATE ST0 在下一时钟后 进程REG的状态将维持为ST0ELSENEXT STATE ST1 否则 在下一时钟后 进程REG的状态将为ST1ENDIF WHENST1 COMB OUTPUTSCOMB OUTPUTS 12 以下依次类推IFSTATE INPUTS 11 THENNEXT STATE ST2 ELSE NEXT STATECOMB OUTPUTS 14 IFSTATE INPUTS 11 THENNEXT STATE ST3 ELSENEXT STATE ST0 否则 在下一时钟后 进程REG的状态将为ST0ENDIF ENDCASE ENDPROCESS 由信号NEXT STATE将下一状态值带出此进程 进入进程REGENDbehv 6 1状态机设计相关语句 6 1状态机结构 例6 1状态机的工作时序 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSYSTEM1ISPORT CLOCK INSTD LOGIC A INSTD LOGIC D OUTSTD LOGIC ENDSYSTEM1 ARCHITECTUREMOORE1OFSYSTEM1ISSIGNALB C STD LOGIC BEGIN 6 2Moore状态机 6 2 1多进程Moore状态机 FUNC1 PROCESS A C 第1组合逻辑进程 为时序逻辑进程提供的反馈信息BEGINB FUNC1 A C C一般是现态 B一般指次态ENDPROCESS FUNC2 PROCESS C 第2组合逻辑进程 为状态机输出提供数据BEGIND FUNC2 C 输出信号D所对应的FUNC2 是仅为当前状态的函数 ENDPROCESS REG PROCESS CLOCK 时序逻辑进程 负责状态的转换BEGINIF CLOCK 1 ANDCLOCK EVENT THENC B B是反馈信号ENDIF ENDPROCESS ENDMOORE1 图多进程摩尔状态机示意图 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSYSTEM2ISPORT CLOCK INSTD LOGIC A INSTD LOGIC D OUTSTD LOGIC ENDSYSTEM2 ARCHITECTUREMOORE2OFSYSTEM2ISBEGINREG PROCESS CLOCK BEGINIF CLOCK 1 ANDCLOCK EVENT THEND FUNC A D ENDIF ENDPROCESS ENDMOORE2 6 2 2单进程Moore状态机 图直接反馈式摩尔状态机示意图 6 2Moore状态机 6 2 2单进程Moore状态机 例5 4 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 接下页 5 2Moore状态机 5 2 2单进程Moore状态机 CASEC STISWHENST0 IFDATAIN 10 THENC STIFDATAIN 11 THENC STIFDATAIN 01 THENC STIFDATAIN 00 THENC STIFDATAIN 11 THENC STC ST ST0 ENDCASE ENDIF ENDPROCESS ENDbehav 6 2Moore状态机 6 2 2单进程Moore状态机 图5 7例5 4状态机综合后的部分主要RTL电路模块 Synplify综合 6 2Moore状态机 6 2 2单进程Moore状态机 图5 8例5 4单进程状态机工作时序 6 2Moore状态机 6 2 2单进程Moore状态机 图5 9对应于例5 4的二进程状态机工作时序图 米立状态机的VHDL设计模型之一 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSYSTEM1ISPORT CLOCK INSTD LOGIC A INSTD LOGIC D OUTSTD LOGIC ENDSYSTEM1 ARCHITECTUREMEALY1OFSYSTEM1ISSIGNALC STD LOGIC BEGINCOM PROCESS A C 此进程用于状态机的输出 6 3Mealy状态机 BEGIND FUNC2 A C ENDPROCESS REG PROCESS CLOCK 此进程用于状态机的状态转换BEGINIF CLOCK 1 ANDCLOCK EVENT THENC FUNC1 A C ENDIF ENDPROCESS ENDMEALY1 米立状态机的VHDL设计模型之二 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSYSTEM2ISPORT CLOCK INSTD LOGIC A INSTD LOGIC D OUTSTD LOGIC ENDSYSTEM2 ARCHITECTUREMEALY2OFSYSTEM2ISSIGNALC STD LOGIC SIGNALB STD LOGIC BEGINREG PROCESS CLOCK BEGINIF CLOCK 1 ANDCLOCK EVENT THENC B ENDIF ENDPROCESS TRANSITIONS PROCESS A C BEGINB FUNC1 A C ENDPROCESS OUTPUTS PROCESS A C BEGIND FUNC2 A C ENDPROCESS ENDMEALY2 6 3Mealy状态机 例6 5 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 BEGIN 决定转换状态的进程IFRESET 1 THENSTXIFDATAIN 1 THENSTXIFDATAIN 0 THENSTXIFDATAIN 1 THENSTXIFDATAIN 0 THENSTXIFDATAIN 1 THENSTXSTX st0 ENDCASE 接下页 6 3Mealy状态机 ENDIF ENDPROCESSCOMREG COM1 PROCESS STX DATAIN BEGIN 输出控制信号的进程CASESTXISWHENst0 IFDATAIN 1 THENQIFDATAIN 0 THENQIFDATAIN 1 THENQIFDATAIN 0 THENQIFDATAIN 1 THENQQ 00000 ENDCASE ENDPROCESSCOM1 ENDbehav 6 3Mealy状态机 例6 6 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 接下页 6 3Mealy状态机 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 6 3Mealy状态机 例6 5状态机工作时序图 6 3Mealy状态机 例6 6状态机工作时序图 A D实验 ADC0809 图5 3ADC0809工作时序 工作时序 5 2Moore状态机 5 2 1多进程状态机 图5 4控制ADC0809采样状态图 5 2Moore状态机 5 2 1多进程状态机 图5 5采样状态机结构框图 接下页 libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entityadopisport db instd logic vector 7downto0 AD转换输入outa outstd logic vector 7downto0 显示数据输出clk instd logic 系统时钟输入50MHzenable outstd logic ADC0809输出使能start outstd logic ADC0809转换启动eoc instd logic ADC0809转换结束标志clk ad outstd logic ADC0809转换时钟250KHzoutb outstd logic vector 7downto0 显示数据位选择输出wrda csda outstd logic DAC0832写信号和片选outda outstd logic vector 7downto0 DAC0832数据输入endadop architecturebehaofadopistypestate typeis s0 s1 s2 s3 s4 s5 s6 signalstate state type signalclk1m std logic signalcount std logic vector 2downto0 signalhex std logic vector 7downto0 signalhalf std logic vector 3downto0 signaltemp std logic vector 7downto0 signaltt1 integerrange0to399 signalclk1 std logic signaltt2 integerrange0to3 signalouttemp std logic vector 7downto0 beginPinDiv1M 1MHz模块process clkin variablecnttemp INTEGERRANGE0TO49 BEGINIFclkin 1 ANDclkin eventTHENIFcnttemp 49THENcnttemp 0 ELSEIFcnttemp 25THENclk1m 1 ELSEclk1m 0 ENDIF cnttemp cnttemp 1 ENDIF ENDIF endprocessPinDiv1M PinDiv process clk1m beginif clk1m eventandclk1m 1 then 400分频用于显示扫描iftt1 399thenclk1 3thenclk ad 1 tt2 0 endif endif endprocessPinDiv LEDCH LED片选process clk1 beginif clk1 eventandclk1 1 thencount count 1 endif endprocessLEDCH SELOUT process count begincasecountiswhen 000 outboutboutboutboutboutboutboutboutb 11111111 endcase endprocessSELOUT 片选数据输出half temp 3downto0 whencount 0elsetemp 7downto4 whencount 1else 1111 whencount 2else 1110 whencount 3else 1101 whencount 4else 1100 whencount 5else 1011 whencount 6else 1010 whencount 7else 0000 Display process half begincasehalfiswhen 0000 outtempouttempouttempouttempouttempouttempouttempouttempouttempouttempouttempouttempouttempouttempouttempouttempouttemp 00000000 endcase ifcount 1thenouta outtempor 10000000 elseouta outtemp endif 小数点输出endprocessDisplay ControlAD A D转换状态机process clk1m beginif clk1m eventandclk1m 1 thencasestateiswhens0 startstartstartstartstartstartstartstate s0 endcase endif endprocessControlAD outda hex DA实时输出wrda 0 csda 0 例5 3 COM1 PROCESS current state EOC BEGINCASEcurrent stateISWHENst0 next statenext stateIF EOC 1 THENnext statenext statenext statenext stateALEALEALEALEALEALE 0 START 0 LOCK 0 ENDCASE ENDPROCESSCOM2 temp B 0000 0000 andhex B 0000 0011 andhex B 0000 1000 andhex B 0000 1101 andhex B 0001 0010 andhex B 0001 1000 andhex B 0001 1101 andhex B 0010 0010 andhex B 0010 0111 andhex B 0010 1100 andhex B 0011 0001 andhex B 0011 0110 andhex B 0011 1011 andhex B 0100 0000 andhex B 0100 0110 andhex B 0100 1011 andhex B 0101 0000 andhex B 0101 0101 andhex B 0101 1010 andhex B 0101 1111 andhex B 0110 0011 else 19 5 2Moore状态机 5 2 1多进程状态机 图5 6ADC0809采样状态机工作时序 5 4状态编码 5 4 1直接输出型编码 例5 7 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYAD0809IS PORT D INSTD LOGIC VECTOR 7DOWNTO0 CLK EOC INSTD LOGIC ALE START OE ADDA OUTSTD LOGIC c state OUTSTD LOGIC VECTOR 4DOWNTO0 Q OUTSTD LOGIC VECTOR 7DOWNTO0 ENDAD0809 ARCHITECTUREbehavOFAD0809ISSIGNALcurrent state next state STD LOGIC VECTOR 4DOWNTO0 CONSTANTst0 STD LOGIC VECTOR 4DOWNTO0 00000 CONSTANTst1 STD LOGIC VECTOR 4DOWNTO0 11000 CONSTANTst2 STD LOGIC VECTOR 4DOWNTO0 00001 CONSTANTst3 STD LOGIC VECTOR 4DOWNTO0 00100 CONSTANTst4 STD LOGIC VECTOR 4DOWNTO0 00110 SIGNALREGL STD LOGIC VECTOR 7DOWNTO0 SIGNALLOCK STD LOGIC BEGINADDA 1 Q REGL START current state 4 ALE current state 3 OE current state 2 LOCK current state 1 c state current state COM PROCESS current state EOC BEGIN 规定各状态转换方式 接下页 5 4状态编码 表5 1控制信号状态编码表 5 4 1直接输出型编码 CASEcurrent stateISWHENst0 next statenext stateIF EOC 1 THENnext statenext statenext statenext state st0 ENDCASE ENDPROCESSCOM REG PROCESS CLK BEGINIF CLK EVENTANDCLK 1 THENcurrent state next state ENDIF ENDPROCESSREG 由信号current state将当前状态值带出此进程 REGLATCH1 PROCESS LOCK 此进程中 在LOCK的上升沿 将转换好的数据锁入BEGINIFLOCK 1 ANDLOCK EVENTTHENREGL D ENDIF ENDPROCESSLATCH1 ENDbehav 6 6数字方式排除毛刺信号 冒险现象 信号在FPGA器件内部通过连线和逻辑单元时 都有一定的延时 延时的大小与连线的长短和逻辑单元的数目有关 同时还受器件的制造工艺 工作电压 温度等条件的影响 信号的高低电平转换也需要一定的过渡时间 由于存在这两方面因素 多路信号的电平值发生变化时 在信号变化的瞬间 组合逻辑的输出状态不确定 往往会出现一些不正确的尖峰信号 这些尖峰信号称为 毛刺 图5 6 1存在逻辑冒险的电路示例 图5 6 2图5 6 1所示电路的仿真波形 如果一个组合逻辑电路中有 毛刺 出现 就说明该电路存在 冒险 由于信号路径长度的不同 译码器 数值比较器以及状态计数器等器件本身容易出现冒险现象 将这类器件直接连接到时钟输入端 清零或置位端口的设计方法是错误的 它可能会导致严重的后果 添加辅助进程使得输出数据锁存 将2进程的moore状态机改为单进程的moore状态机 使用状态位直接输出编码方式 5 6数字方式排除毛刺信号 图5 19单触发器输入 左图 或输出 右图 延时电路 5 6 1延时电路 图5 20双触发器延时电路 5 6数字方式排除毛刺信号 为了消除数字系统中的冒险竞争或毛刺现象 常用的措施是使信号有微量的延时 传统数字电路设计技术中较常用的方法是在通道上增加门电路 或利用所谓冗余技术来解决 甚至加滤波电容 但是这些方法在现代数字技术中都是完全行不通的 5 6 1延时电路 5 6数字方式排除毛刺信号 5 6 1延时电路 图5 21双寄存器数据延时电路 5 6数字方式排除毛刺信号 5 6 2去抖动电路 图5 22在信号上升与下降沿都含随机干扰抖动信号的时钟信号 5 6数字方式排除毛刺信号 5 6 2去抖动电路 图5 23消抖动电路 5 6数字方式排除毛刺信号 5 6 2去抖动电路 图5 24消抖动电路仿真波形 冒险往往会影响到逻辑电路的稳定性 时钟端口 清零和置位端口对毛刺信号十分敏感 任何一点毛刺都可能会使系统出错 因此判断逻辑电路中是否存在冒险以及如何避免冒险是设计人员必须要考虑的问题 5 4状态编码 图5 12例5 7状态机工作时序图 5 4 1直接输出型编码 5 4状态编码 表5 2编码方式 5 4 2顺序编码 5 4状态编码 5 4 2顺序编码 例5 8 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 5 4 3一位热码编码 图8 13一位热码编码方式选择对话框 5 5非法状态处理 表5 3剩余状态 WHENst ilg1 next statenext state st0 5 5非法状态处理 例5 9 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 5 5非法状态处理 例5 10 alarm st0AND st1ORst2ORst3ORst4ORst5 OR st1AND st0ORst2ORst3ORst4ORst5 OR st2AND st0ORst1ORst3ORst4ORst5 OR st3AND st0ORst1ORst2ORst4ORst5 OR st4AND st0ORst1ORst2ORst3ORst5 OR st5AND st0ORst1ORst2ORst3ORst4 习题 5 1 仿照例5 1 将例5 4用两个进程 即一个时序进程 一个组合进程表达出来 5 2 为确保例5 5的状态机输出信号没有毛刺 试用例5 4的方式构成一个单进程状态 使输出信号得到可靠锁存 在相同输入信号条件下 给出两程序的仿真波形 5 3 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号 当序列检测器连续收到一组串行二进制码后 如果这组码与检测器中预先设置的码相同 则输出1 否则输出0 由于这种检测的关键在于正确码的收到必须是连续的 这就要求检测器必须记住前一次的正确码及正确序列 直到在连续的检测中所收到的每一位码都与预置数的对应码相同 在检测过程中 任何一位不相等都将回到初始状态重新开始检测 例5 11描述的电路完成对序列数 11100101 的检测 当这一串序列数高位在前 左移 串行进入检测器后 若此数与预置的密码数相同 则输出 A 否则仍然输出 B 习题 例5 11 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSCHKISPORT DIN CLK CLR INSTD LOGIC 串行输入数据位 工作时钟 复位信号AB OUTSTD LOGIC VECTOR 3DOWNTO0 检测结果输出ENDSCHK ARCHITECTUREbehavOFSCHKISSIGNALQ INTEGERRANGE0TO8 SIGNALD STD LOGIC VECTOR 7DOWNTO0 8位待检测预置数 密码 E5H BEGINDIFDIN D 7 THENQIFDIN D 6 THENQIFDIN D 5 THENQIFDIN D 4 THENQIFDIN D 3 THENQIFDIN D 2 THENQIFDIN D 1 THENQIFDIN D 0 THENQQ 0 ENDCASE ENDIF ENDPROCESS PROCESS Q 检测结果判断输出BEGINIFQ 8THENAB 1010 序列数检测正确 输出 A ELSEAB 1011 序列数检测错误 输出 B ENDIF ENDPROCESS ENDbehav 习题 要求1 说明例5 11的代码表达的是什么类型的状态机 它的优点是什么 详述其功能和对序列数检测的逻辑过程 要求2 根据例5 11写出由两个主控进程构成的相同功能的符号化Moore型有限状态机 画出状态图 并给出其仿真测试波形 要求3 将8位待检测预置数作为外部输入信号 即可以随时改变序列检测器中的比较数据 写出此程序的符号化单进程有限状态机 提示 对于D 11100101 电路需分别不间断记忆 初始状态 1 11 111 1110 11100 111001 1110010 11100101共9种状态 习题 5 4 根据图5 14 a 所示的状态图 分别按照图5 14 b 和图5 14 c 写出对应结构的VHDL状态机 图5 14习题5 4状态图 习题 5 5 在不改变原代码功能的条件下用两种方法改写例5 2 使其输出的控制信号 ALE START OE LOCK 没有毛刺 方法1 将输出信号锁存后输出 方法2 使用状态码直接输出型状态机 并比较这三种状态机的特点 实验与设计 实验5 1 序列检测器设计 实验5 2 ADC0809采样控制电路实现 实验5 3 数据采集电路和简易存储示波器设计 实验与设计 图5 15ADC0809采样电路系统 RSV bdf 实验与设计 例5 12 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYCNT10BISPORT LOCK0 CLR INSTD LOGIC CLK INSTD LOGIC WE INSTD LOGIC DOUT OUTSTD LOGIC VECTOR 8DOWNTO0 CLKOUT OUTSTD LOGIC ENDCNT10B ARCHITECTUREbehavOFCNT10BISSIGNALCQI STD LOGIC VECTOR 8DOWNTO0 SIGNALCLK0 STD LOGIC BEGINCLK0 LOCK0WHENWE 1 ELSECLK PROCESS CLK0 CLR CQI BEGINIFCLR 1 THENCQI 000000000 ELSIFCLK0 EVENTANDCLK0 1 THENCQI CQI 1 ENDIF ENDPROCESS DOUT CQI CLKOUT CLK0 ENDbehav 实验与设计 实验5 4 比较器和D A器件实现A D转换功能的电路设计 例5 13 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYDAC2ADCISPORT CLK INSTD LOGIC 计数器时钟LM311 INSTD LOGIC LM311输出 由PIO37口进入FPGACLR INSTD LOGIC 计数器复位DD OUTSTD LOGIC VECTOR 7DOWNTO0 输向0832的数据DISPDATA OUTSTD LOGIC VECTOR 7DOWNTO0 转换数据显示END ARCHITECTUREDACCOFDAC2ADCISSIGNALCQI STD LOGIC VECTOR 7DOWNTO0 BEGINDD CQI PROCESS CLK CLR LM311 BEGINIFCLR 1 THENCQI 00000000 ELSIFCLK EVENTANDCLK 1 THENIFLM311 1 THENCQI CQI 1 ENDIF 如果是高电平 继续搜索ENDIF 如果出现低电平 即可停止搜索 保存计数值于CQI中ENDPROCESS DISPDATA CQIWHENLM311 0 ELSE 00000000 将保存于CQI中的数输出END 实验与设计 图5 16比较器和D A构成A D电路框图 实验5 4 比较器和D A器件实现A D转换功能的电路设计 KX康芯科技 实验与设计 4 实验内容2 引脚锁定及硬件测试 建议选GW48系统的实验电路模式6 参考附录图6 用数码8显示译码输出 PIO46 PIO40 键8 键7 键6和键5四位控制输入 硬件验证译码器的工作性能 5 实验内容3 用第3章介绍的例化语句 按图5 19的方式连接成顶层设计电路 用VHDL表述 图中的CNT4B是一个4位二进制加法计数器 可以由例3 22修改获得 模块DECL7S即为例5 18实体元件 重复以上实验过程 注意图5 20中的tmp是4位总线 led是7位总线 对于引脚锁定和实验 建议选电路模式6 用数码8显示译码输出 用键3作为时钟输入 每按2次键为1个时钟脉冲 或直接接时钟信号clock0 8 实验报告 根据以上的实验内容写出实验报告 包括程序设计 软件编译 仿真分析 硬件测试和实验过程 设计程序 程序分析报告 仿真波形图及其分析报告 实验与设计 图5 18共阴数码管及其电路 实验与设计 图5 19计数器和译码器连接电路的顶层文件原理图 实验与设计 5 2 8位数码扫描显示电路设计 1 实验目的 学习硬件扫描显示电路的设计 2 实验原理 图5 20所示的是8位数码扫描显示电路 其中每个数码管的8个段 h g f e d c b a h是小数点 都分别连在一起 8个数码管分别由8个选通信号k1 k2 k8来选择 被选通的数码管显示数据 其余关闭 如在某一时刻 k3为高电平 其余选通信号为低电平 这时仅k3对应的数码管显示来自段信号端的数据 而其它7个数码管呈现关闭状态 根据这种电路状况 如果希望在8个数码管显示希望的数据 就必须使得8个选通信号k1 k2 k8分别被单独选通 并在此同时 在段信号输入口加上希望在该对应数码管上显示的数据 于是随着选通信号的扫变 就能实现扫描显示的目的 实验与设计 图5 208位数码扫描显示电路 例5 19 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYSCAN LEDISPORT CLK INSTD LOGIC SG OUTSTD LOGIC VECTOR 6DOWNTO0 段控制信号输出BT OUTSTD LOGIC VECTOR 7DOWNTO0 位控制信号输出END ARCHITECTUREoneOFSCAN LEDISSIGNALCNT8 STD LOGIC VECTOR 2DOWNTO0 SIGNALA INTEGERRANGE0TO15 BEGINP1 PROCESS CNT8 BEGINCASECNT8ISWHEN 000 BTBTBTBTBTBTBTBTNULL ENDCASE ENDPROCESSP1 接下页 KX康芯科技 P2 PROCESS CLK BEGINIFCLK EVENTANDCLK 1 THENCNT8SGSGSGSGSGSGSGSGSGSGSGSGSGSGSGSGNULL ENDCASE ENDPROCESSP3 END KX康芯科技 实验与设计 3 实验内容1 说明例5 19中各语句的含义 以及该例的整体功能 对该例进行编辑 编译 综合 适配 仿真 给出仿真波形 实验方式 若考虑小数点 SG的8个段分别与PIO49 PIO48 PIO42 高位在左 BT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年信息系统管理岗位招聘面试参考题库及参考答案
- 2025年移动互联网运营经理岗位招聘面试参考试题及参考答案
- 2025年休闲管理专员岗位招聘面试参考试题及参考答案
- 2025年IT项目专员岗位招聘面试参考试题及参考答案
- 2025年工程项目协调员人员岗位招聘面试参考题库及参考答案
- 2025年发展顾问岗位招聘面试参考试题及参考答案
- 2025年设施安全专员岗位招聘面试参考试题及参考答案
- 2025年演说培训师岗位招聘面试参考试题及参考答案
- 2025年时尚搭配顾问岗位招聘面试参考题库及参考答案
- 2025年艺术指导岗位招聘面试参考试题及参考答案
- 化工自动化仪表培训课件
- 小学生食品安全知识讲座
- 建筑工程知识产权课件
- 高级合伙人协议合同范本
- 2025年春季学期国开电大行管本科《行政领导学》期末纸质考试总题库
- 土地管理法实施条例培训
- 2025年云南大理中考道德与法治试题及答案
- 6月16日全国安全宣传咨询日专题课件
- 2025年碳交易和减排专业资格考试试题及答案
- 江西体彩中心笔试题库及答案
- 《慢性肉芽肿性疾病的诊断与治疗》课件
评论
0/150
提交评论