




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字系统设计基础第一页,共八十九页,2022年,8月28日第13章数字系统设计基础数字系统的设计模型数字系统的设计方法
数字系统的设计准则
数字系统的设计步骤本章小结数字系统设计举例VHDL状态机第二页,共八十九页,2022年,8月28日13.1数字系统的设计模型数字系统指的是交互式的、以离散形式表示的,具有存储、传输、信息处理能力的逻辑子系统的集合。用于描述数字系统的模型有多种,各种模型描述数字系统的侧重点不同。图13.1介绍了一种普遍采用的模型。这种模型根据数字系统的定义,将整个系统划分为两个模块或两个子系统:数据处理子系统和控制子系统。第三页,共八十九页,2022年,8月28日图13.1数字系统的设计模型第四页,共八十九页,2022年,8月28日
●数据处理子系统主要完成数据的采集、存储、运算和传输。
●数据处理子系统主要由存储器、运算器、数据选择器等功能电路组成。●数据处理子系统与外界进行数据交换,在控制子系统(或称控制器)发出的控制信号作用下,数据处理子系统将进行数据的存储和运算等操作。
●控制子系统是执行数字系统算法的核心,具有记忆功能,因此控制子系统是时序系统。控制子系统由组合逻辑电路和触发器组成,与数据处理子系统共用时钟。第五页,共八十九页,2022年,8月28日
●把数字系统划分为控制子系统和数据处理子系统两个主要部分,使设计者面对的电路规模减小,二者可以分别设计
;
采用该模型的优点
●由于数字系统中控制子系统的逻辑关系比较复杂,将其独立划分出来后,可突出设计重点和分散设计难点;●当数字系统划分为控制子系统和数据处理子系统后,逻辑分工清楚,各自的任务。
第六页,共八十九页,2022年,8月28日13.2数字系统的设计方法数字系统设计有多种方法,如模块设计法、自顶向下设计法和自底向上设计法等。数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方法。第七页,共八十九页,2022年,8月28日一、自底向上的设计方法
传统的电子设计流程通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系统的要求。以此流程,逐步向上递推,直至完成整个目标系统的设计。第八页,共八十九页,2022年,8月28日系统测试与性能分析完整系统功能模块基本元器件
缺点:1、设计过程依赖现有的通用元器件、手工及经验;2、设计后期的仿真和调试3、自下而上思想的局限性4、设计周期长、灵活性差、效率低传统电路设计方法:自下而上(Bottom-Up)的设计方法第九页,共八十九页,2022年,8月28日二、自顶向下的设计方法
将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模快,层层分解,直至整个系统中各个子系统关系合理,并便于逻辑电路级的设计和实现为止。自上而下设计中可逐层描述,逐层仿真,保证满足系统指标。第十页,共八十九页,2022年,8月28日
●自顶向下设计方法是一种模块化设计方法。对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯;
优点
●针对具体的设计,实施自顶向下的设计方法的形式会有所不同,但均需遵循以下两条原则:逐层分解功能和分层次进行设计。同时,应在各个设计层次上,考虑相应的仿真验证问题。
●适合多个设计者同时进行设计。随着技术的不断进步,许多设计由一个设计者已无法完成,由多个设计者分工协作完成一项设计的情况越来越多;第十一页,共八十九页,2022年,8月28日13.3数字系统的设计准则进行数字系统设计时,通常需要考虑多方面的条件和要求,如设计的功能和性能要求,元器件的资源分配和设计工具的可实现性,系统的开发费用和成本等。虽然具体设计的条件和要求千差万别,实现的方法也各不相同,但数字系统设计还是具备一些共同的方法和准则的。第十二页,共八十九页,2022年,8月28日一、分割准则
●自顶向下的设计方法或其他层次化的设计方法,需要对系统功能进行分割,然后用逻辑语言进行描述。分割过程中,若分割过粗,则不易用逻辑语言表达;分割过细,则带来不必要的重复和繁琐。二、系统的可观测性
●在系统设计中,应该同时考虑功能检查和性能的测试,即系统观测性的问题。一些有经验的设计者会自觉地在设计系统的同时设计观测电路,即观测器,指示系统内部的工作状态。第十三页,共八十九页,2022年,8月28日三、同步和异步电路
●异步电路会造成较大延时和逻辑竞争,容易引起系统的不稳定,而同步电路则是按照统一的时钟工作,稳定性好。因此,在设计时应尽可能采用同步电路进行设计,避免使用异步电路。在必须使用异步电路时,应采取措施来避免竞争和增加稳定性。四、最优化设计
●由于可编程器件的逻辑资源、连接资源和I/O资源有限,器件的速度和性能也是有限的,用器件设计系统的过程相当于求最优解的过程,因此,需要给定两个约束条件:边界条件和最优化目标。第十四页,共八十九页,2022年,8月28日五、系统设计的艺术
●一个系统的设计,通常需要经过反复的修改、优化才能达到设计的要求。一个好的设计,应该满足“和谐”的基本特征,对数字系统可以根据以下几点做出判断:设计是否总体上流畅,无拖泥带水的感觉;资源分配、I/O分配是否合理,设计上和性能上是否有瓶颈,系统结构是否协调;是否具有良好的可观测性;是否易于修改和移植;器件的特点是否能得到充分的发挥。第十五页,共八十九页,2022年,8月28日
●数字系统设计中的第一步是明确系统的任务。在设计任务书中,可用各种方式提出对整个数字系统的逻辑要求,常用的方式有自然语言、逻辑流程图、时序图或几种方法的结合。当系统较大或逻辑关系较复杂时,系统任务(逻辑要求)逻辑的表述和理解都不是一件容易的工作。所以,分析系统的任务必须细致、全面,不能有理解上的偏差和疏漏。
一、系统任务分析13.4数字系统的设计步骤第十六页,共八十九页,2022年,8月28日二、确定逻辑算法
●实现系统逻辑运算的方法称为逻辑算法,也简称为算法。一个数字系统的逻辑运算往往有多种算法,设计者的任务不但是要找出各种算法,还必须比较优劣,取长补短,从中确定最合理的一种。数字系统的算法是逻辑设计的基础,算法不同,则系统的结构也不同,算法的合理与否直接影响系统结构的合理性。确定算法是数字系统设计中最具创造性的一环,也是最难的一步。第十七页,共八十九页,2022年,8月28日三、建立系统及子系统模型
●当算法明确后,应根据算法构造系统的硬件框架(也称为系统框图),将系统划分为若干个部分,各部分分别承担算法中不同的逻辑操作功能。如果某一部分的规模仍嫌大,则需进一步划分。划分后的各个部分应逻辑功能清楚,规模大小合适,便于进行电路级的设计。第十八页,共八十九页,2022年,8月28日四、系统(或模块)逻辑描述
●当系统中各个子系统(指最低层子系统)和模块的逻辑功能和结构确定后,则需采用比较规范的形式来描述系统的逻辑功能。设计方案的描述方法可以有多种,常用的有方框图、流程图和描述语言等。
●对系统的逻辑描述可先采用较粗略的逻辑流程图,再将逻辑流程图逐步细化为详细逻辑流程图,最后将详细逻辑流程图表示成与硬件有对应关系的形式,为下一步的电路级设计提供依据。第十九页,共八十九页,2022年,8月28日五、逻辑电路级设计及系统仿真
●电路级设计是指选择合理的器件和连接关系以实现系统逻辑要求。电路级设计的结果常采用两种方式来表达:电路图方式和硬件描述语言方式。EDA软件允许以这两种方式输入,以便作后续的处理。第二十页,共八十九页,2022年,8月28日六、系统的物理实现
●物理实现是指用实际的器件实现数字系统的设计,用仪表测量设计的电路是否符合设计要求。现在的数字系统往往采用大规模和超大规模集成电路,由于器件集成度高、导线密集,故一般在电路设计完成后即设计印刷电路板,在印刷电路板上组装电路进行测试。需要注意的是,印刷电路板本身的物理特性也会影响电路的逻辑关系。第二十一页,共八十九页,2022年,8月28日13.5数字系统的设计举例【例13.1】数字频率计的设计1.方案构思:8位十进制数字频率计可以由一个测频控制信号发生器TESTCTL、八个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。第二十二页,共八十九页,2022年,8月28日
2.顶层电路的设计及VHDL实现:
1)顶层电路逻辑图
图13.28位十进制数字频率计逻辑图第二十三页,共八十九页,2022年,8月28日2)顶层的VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFREQISPORT(FSIN:INSTD_LOGIC;CLK:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDENTITYFREQ;ARCHITECTUREARTOFFREQIS第二十四页,共八十九页,2022年,8月28日COMPONENTCNT10IS --待调用的有时钟使能的十进制计数器端口定义PORT(CLK,CLR,ENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CARRY_OUT:OUTSTD_LOGIC);ENDCOMPONENTCNT10;COMPONENTREG32BIS --待调用的32位锁存器端口定义...COMPONENTTESTCTLIS --待调用的测频控制信号发生器端口定义第二十五页,共八十九页,2022年,8月28日...SIGNALSE,SC,SL:STD_LOGIC;SIGNALS1,S2,S3,S4,S5,S6,S7,S7,S8:STD_LOGIC;SIGNALSD:STD_LOGIC_VECTOR(31DOWNTO0);BEGINU0:TESTCTLPORTMAP(CLK=>CLK,TSTEN=>SE,CLR_CNT=>SC,LOAD=>SL);U1:CNT10PORTMAP(CLK=>FSIN,CLR=>SC,ENA=>SE,CQ=>SD(3DOWNTO0),ARRY_OUT=>S1);--名字关联第二十六页,共八十九页,2022年,8月28日U2:CNT10PORTMAP(CLK=>S1,CLR=>SC,ENA=>SE,CQ=>SD(7DOWNTO4),CARRY_OUT=>S2);U3:CNT10PORTMAP(S2,SC,SE,SD(11DOWNTO8),S3); --位置关联U4:CNT10PORTMAP(S3,SC,SE,SD(15DOWNTO12),S4);U5:CNT10PORTMAP(S4,SC,SE,SD(19DOWNTO16),S5);U6:CNT10PORTMAP(S5,SC,SE,SD(23DOWNTO20),S6);U7:CNT10PORTMAP(S6,SC,SE,SD(27DOWNTO24),S7);U8:CNT10PORTMAP(S7,SC,SE,SD(31DOWNTO28),S8);U9:REG32BPORTMAP(LOAD=>SL,DIN=>SD(31DOWNTO0),DOUT=>DOUT);ENDARCHITECTUREART;第二十七页,共八十九页,2022年,8月28日
3.次级模块电路的分析与设计:
1)32位锁存器REG32B的设计设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
第二十八页,共八十九页,2022年,8月28日2)32位锁存器的VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG32BISPORT(LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);DOUT:OUTSTD_LOGEC_VECTOR(31DOWNTO0));ENDENTITYREG32B;第二十九页,共八十九页,2022年,8月28日ARCHITECTUREARTOFREG32BISBEGINPROCESS(LOAD,DIN)ISBEGINIFLOAD'EVENTANDLOAD='1'THENDOUT<=DIN;--锁存输入数据ENDIF;ENDPROCESS;ENDARCHITECTUREART;第三十页,共八十九页,2022年,8月28日3)十进制计数器CNT10的设计此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时计数禁止。第三十一页,共八十九页,2022年,8月28日4)
十进制计数器CNT10的VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; ENTITYCNT10ISPORT(CLK:INSTD_LOGIC;--计数时钟信号CLR:INSTD_LOGIC; --清零信号ENA:INSTD_LOGIC; --计数使能信号CQ:OUTINTEGERRANGE0TO15;--4位计数结果输出CARRY_OUT:OUTSTD_LOGIC); --计数进位第三十二页,共八十九页,2022年,8月28日ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISSIGNALCQI:INTEGERRANGE0TO15;BEGINPROCESS(CLK,CLR,ENA)ISBEGINIFCLR='1'THENCQI<=0; --计数器异步清零ELSIFCLK'EVENTANDCLK='1'THENIFENA='1'THEN第三十三页,共八十九页,2022年,8月28日IFCQI<9THENCQI<=CQI+1;ELSECQI<=0;ENDIF--等于9,则计数器清零ENDIF;ENDIF;ENDPROCESS;PROCESS(CQI)ISBEGINIFCQI=9THENCARRY_OUT<='1';--进位输出ELSECARRY_OUT<='0';ENDIF;ENDPROCESS;CQ<=CQI;ENDARCHITECTUREART;第三十四页,共八十九页,2022年,8月28日4、测频控制信号发生器设计频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。测频控制信号发生器的工作时序如图13.3所示。为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。第三十五页,共八十九页,2022年,8月28日图13.3测频控制信号发生器工作时序第三十六页,共八十九页,2022年,8月28日测频控制信号发生器的源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; ENTITYTESTCTLISPORT(CLK:INSTD_LOGIC;--1Hz测频控制时钟TSTEN:OUTSTD_LOGIC;--计数器时钟使能CLR_CNT:OUTSTD_LOGIC;--计数器清零LOAD:OUTSTD_LOGIC);--输出锁存信号第三十七页,共八十九页,2022年,8月28日ENDENTITYTESTCTL;ARCHITECTUREARTOFTESTCTLISSIGNALDIV2CLK:STD_LOGIC;BEGINPROCESS(CLK)ISBEGINIFCLK'EVENTANDCLK='1'THEN--1HZ时钟二分频DIV2CLK<=NOTDIV2CLK;ENDIF;第三十八页,共八十九页,2022年,8月28日ENDPROCESS;PROCESS(CLK,DIV2CLK)ISBEGINIFCLK='0'ANDDIV2CLK='0'THEN --产生计数器清零信号CLR_CNT<='1';ELSECLR_CNT<='0';ENDIF;ENDPROCESS;LOAD<=NOTDIV2CLK;TSTEN<=DIV2CLK;ENDARCHITECTUREART;第三十九页,共八十九页,2022年,8月28日13.6VHDL状态机
●状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;
优势
●由于状态机的结构相对简单,设计方案相对固定,容易构成性能良好的同步时序逻辑模块;●在高速运算和控制方面,状态机更有其巨大的优势;
●高可靠性。
●与VHDL的其他描述方式相比,状态机的VHDL表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处;第四十页,共八十九页,2022年,8月28日一、状态机设计相关语句
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;
1、类型定义语句第四十一页,共八十九页,2022年,8月28日(1).说明部分
ARCHITECTURE...ISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;...2、状态机结构第四十二页,共八十九页,2022年,8月28日(2).主控时序进程
图13.4
一般状态机结构框图
2、状态机结构第四十三页,共八十九页,2022年,8月28日(3).主控组合进程
(4).辅助进程
2、状态机结构第四十四页,共八十九页,2022年,8月28日【例13.2】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)--主控组合进程
(接下页)第四十五页,共八十九页,2022年,8月28日BEGINCASEcurrent_stateISWHENs0=>comb_outputs<=5;IFstate_inputs="00"THENnext_state<=s0;ELSEnext_state<=s1;ENDIF;WHENs1=>comb_outputs<=8;IFstate_inputs="00"THENnext_state<=s1;ELSEnext_state<=s2;ENDIF;WHENs2=>comb_outputs<=12;IFstate_inputs="11"THENnext_state<=s0;ELSEnext_state<=s3;ENDIF;WHENs3=>comb_outputs<=14;IFstate_inputs="11"THENnext_state<=s3;ELSEnext_state<=s0;ENDIF;ENDcase;ENDPROCESS;ENDbehv;
第四十六页,共八十九页,2022年,8月28日图13.5例13.2状态机的工作时序
第四十七页,共八十九页,2022年,8月28日3、状态机类型从状态机的信号输出方式上分,有Moore型和Mealy型两类状态机。从输出时序上看,Mealy型属于异步输出状态机,其输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。Moore型属于同步输出状态机,其输出仅为当前状态的函数,这类状态机在输入发生变化时必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。第四十八页,共八十九页,2022年,8月28日图13.6ADC0809工作时序
二、Moore状态机1、多进程状态机第四十九页,共八十九页,2022年,8月28日图13.7控制ADC0809采样状态图
第五十页,共八十九页,2022年,8月28日5.2.1多进程状态机图13.8
采样状态机结构框图
第五十一页,共八十九页,2022年,8月28日【例13.3】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYADCINTISPORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);--来自0809转换好的8位数据CLK:INSTD_LOGIC;--状态机工作时钟EOC:INSTD_LOGIC;--转换状态指示,低电平表示正在转换ALE:OUTSTD_LOGIC;--8个模拟信号通道地址锁存信号START:OUTSTD_LOGIC;--转换开始信号OE:OUTSTD_LOGIC;--数据输出3态控制信号ADDA:OUTSTD_LOGIC;--信号通道最低位控制信号LOCK0:OUTSTD_LOGIC;--观察数据锁存时钟Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位数据输出ENDADCINT;ARCHITECTUREbehavOFADCINTISTYPEstatesIS(st0,st1,st2,st3,st4);--定义各状态子类型SIGNALcurrent_state,next_state:states:=st0;SIGNALREGL :STD_LOGIC_VECTOR(7DOWNTO0);SIGNALLOCK :STD_LOGIC;--转换后数据输出锁存时钟信号BEGINADDA<='1';--当ADDA<='0',模拟信号进入通道IN0;当ADDA<='1',则进入通道IN1Q<=REGL;LOCK0<=LOCK;COM:PROCESS(current_state,EOC)BEGIN--规定各状态转换方式CASEcurrent_stateIS
(接下页)第五十二页,共八十九页,2022年,8月28日WHENst0=>ALE<='0';START<='0';LOCK<='0';OE<='0';next_state<=st1;--0809初始化WHENst1=>ALE<='1';START<='1';LOCK<='0';OE<='0';next_state<=st2;--启动采样WHENst2=>ALE<='0';START<='0';LOCK<='0';OE<='0';IF(EOC='1')THENnext_state<=st3;--EOC=1表明转换结束 ELSEnext_state<=st2;;--转换未结束,继续等待ENDIFWHENst3=>ALE<='0';START<='0';LOCK<='0';OE<='1';next_state<=st4;--开启OE,输出转换好的数据WHENst4=>ALE<='0';START<='0';LOCK<='1';OE<='1';next_state<=st0;WHENOTHERS=>next_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;第五十三页,共八十九页,2022年,8月28日图13.9ADC0809采样状态机工作时序
第五十四页,共八十九页,2022年,8月28日【例13.4】COM1:PROCESS(current_state,EOC)BEGINCASEcurrent_stateISWHENst0=>next_state<=st1;WHENst1=>next_state<=st2;WHENst2=>IF(EOC='1')THENnext_state<=st3; ELSEnext_state<=st2;ENDIF;WHENst3=>next_state<=st4;--开启OEWHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM1;COM2:PROCESS(current_state)BEGINCASEcurrent_stateISWHENst0=>ALE<='0';START<='0';LOCK<='0';OE<='0';WHENst1=>ALE<='1';START<='1';LOCK<='0';OE<='0';WHENst2=>ALE<='0';START<='0';LOCK<='0';OE<='0';WHENst3=>ALE<='0';START<='0';LOCK<='0';OE<='1';WHENst4=>ALE<='0';START<='0';LOCK<='1';OE<='1';WHENOTHERS=>ALE<='0';START<='0';LOCK<='0';ENDCASE;
ENDPROCESSCOM2;
第五十五页,共八十九页,2022年,8月28日【例13.5】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(接下页)2、单进程状态机第五十六页,共八十九页,2022年,8月28日5.2Moore状态机5.2.2单进程Moore状态机CASEC_STISWHENST0=>IFDATAIN="10"THENC_ST<=ST1;ELSEC_ST<=ST0;ENDIF;Q<="1001";WHENST1=>IFDATAIN="11"THENC_ST<=ST2;ELSEC_ST<=ST1;ENDIF;Q<="0101";WHENST2=>IFDATAIN="01"THENC_ST<=ST3;ELSEC_ST<=ST0;ENDIF;Q<="1100";WHENST3=>IFDATAIN="00"THENC_ST<=ST4;ELSEC_ST<=ST2;ENDIF;Q<="0010";WHENST4=>IFDATAIN="11"THENC_ST<=ST0;ELSEC_ST<=ST3;ENDIF;Q<="1001";WHENOTHERS=>C_ST<=ST0;ENDCASE;ENDIF;ENDPROCESS;ENDbehav;
第五十七页,共八十九页,2022年,8月28日图13.10例13.5状态机综合后的部分主要RTL电路模块(Synplify综合)
第五十八页,共八十九页,2022年,8月28日图13.11例13.5单进程状态机工作时序
第五十九页,共八十九页,2022年,8月28日图13.12
对应例13.5的二进程状态机工作时序图
第六十页,共八十九页,2022年,8月28日【例13.6】
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'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;ENDCASE;(接下页)三、Mealy状态机第六十一页,共八十九页,2022年,8月28日ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX,DATAIN)BEGIN--输出控制信号的进程CASESTXISWHENst0=>IFDATAIN='1'THENQ<="10000";ELSEQ<="01010";ENDIF;WHENst1=>IFDATAIN='0'THENQ<="10111";ELSEQ<="10100";ENDIF;WHENst2=>IFDATAIN='1'THENQ<="10101";ELSEQ<="10011";ENDIF;WHENst3=>IFDATAIN='0'THENQ<="11011";ELSEQ<="01001";ENDIF;WHENst4=>IFDATAIN='1'THENQ<="11101";ELSEQ<="01101";ENDIF;WHENOTHERS=>Q<="00000";ENDCASE;ENDPROCESSCOM1;ENDbehav;
第六十二页,共八十九页,2022年,8月28日【例13.7】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'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;ENDCASE;(接下页)
第六十三页,共八十九页,2022年,8月28日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;
第六十四页,共八十九页,2022年,8月28日图13.13例13.6状态机工作时序图
第六十五页,共八十九页,2022年,8月28日图13.14例13.7状态机工作时序图
第六十六页,共八十九页,2022年,8月28日表13.1
控制信号状态编码表
状态
状
态
编
码STARTALEOELOCKB功
能
说
明ST000000初始态ST111000启动转换ST200001若测得EOC=1时,转下一状态ST3ST300100输出转换好的数据ST400110利用LOCK的上升沿将转换好的数据锁存四、状态编码1、直接输出型编码第六十七页,共八十九页,2022年,8月28日5.4状态编码5.4.1直接输出型编码【例13.8】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--规定各状态转换方式
(接下页)第六十八页,共八十九页,2022年,8月28日5.4状态编码表5-1控制信号状态编码表
5.4.1直接输出型编码CASEcurrent_stateISWHENst0=>next_state<=st1;--0809初始化WHENst1=>next_state<=st2;--启动采样WHENst2=>IF(EOC='1')THENnext_state<=st3;--EOC=1表明转换结束 ELSEnext_state<=st2;--转换未结束,继续等待ENDIF;WHENst3=>next_state<=st4;--开启OE,输出转换好的数据WHENst4=>next_state<=st0;WHENOTHERS=>next_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;
第六十九页,共八十九页,2022年,8月28日图13.15例13.8状态机工作时序图
第七十页,共八十九页,2022年,8月28日表13.2
编码方式
状
态顺序编码一位热码编码STATE0000100000STATE1001010000STATE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 漳浦招聘考试题库及答案
- 香港 英语测试题及答案
- 2025年计算机网络管理与安全考试题
- 软件设计师考试中常见编程语言试题及答案
- 项目实施过程中的客户关系管理方法试题及答案
- 新兴技术对政策的挑战试题及答案
- 深度周刊信息系统项目管理师试题及答案
- 西方国家的减贫与政治制度试题及答案
- 软件设计师考试的新思维试题与答案
- 西方国家的选举模式比较试题及答案
- 个人商业计划书范文5篇
- 2025年反恐与公共安全管理职业资格考试试卷及答案
- 2025高考语文押题作文10篇
- 福建卷-2025届高考化学全真模拟卷
- 2022隧道顺光照明技术指南
- 2025年广东省广州市增城区中考一模化学试题(含答案)
- 2025高考英语作文考前背诵(应用文+读后续写)
- 河北开放大学2025年《西方行政制度》形成性考核3答案
- 人教版九年级语文中考真题汇编 《水浒传》(2022-2024)全国中考语文真题
- 2025年铁路列车员(初级)职业技能鉴定参考试题库(含答案)
- 浙江省杭州市2025届高三下学期二模试题 数学 含答案
评论
0/150
提交评论