第13章数字系统设计基础.ppt

上传人:sccc 文档编号:6110920 上传时间:2023-09-25 格式:PPT 页数:89 大小:1.02MB
返回 下载 相关 举报
第13章数字系统设计基础.ppt_第1页
第1页 / 共89页
第13章数字系统设计基础.ppt_第2页
第2页 / 共89页
第13章数字系统设计基础.ppt_第3页
第3页 / 共89页
第13章数字系统设计基础.ppt_第4页
第4页 / 共89页
第13章数字系统设计基础.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《第13章数字系统设计基础.ppt》由会员分享,可在线阅读,更多相关《第13章数字系统设计基础.ppt(89页珍藏版)》请在三一办公上搜索。

1、第13章数字系统设计基础,第 13 章数字系统设计基础,数字系统的设计模型,数字系统的设计方法,数字系统的设计准则,数字系统的设计步骤,本章小结,数字系统设计举例,VHDL状态机,13.1数字系统的设计模型,数字系统指的是交互式的、以离散形式表示的,具有存储、传输、信息处理能力的逻辑子系统的集合。用于描述数字系统的模型有多种,各种模型描述数字系统的侧重点不同。图13.1介绍了一种普遍采用的模型。这种模型根据数字系统的定义,将整个系统划分为两个模块或两个子系统:数据处理子系统和控制子系统。,图13.1 数字系统的设计模型,数据处理子系统主要完成数据的采集、存储、运算和传输。,数据处理子系统主要由

2、存储器、运算器、数据选择器等功能电路组成。,数据处理子系统与外界进行数据交换,在控制子系统(或称控制器)发出的控制信号作用下,数据处理子系统将进行数据的存储和运算等操作。,控制子系统是执行数字系统算法的核心,具有记忆功能,因此控制子系统是时序系统。控制子系统由组合逻辑电路和触发器组成,与数据处理子系统共用时钟。,把数字系统划分为控制子系统和数据处理子系统两个主要部分,使设计者面对的电路规模减小,二者可以分别设计;,采用该模型的优点,由于数字系统中控制子系统的逻辑关系比较复杂,将其独立划分出来后,可突出设计重点和分散设计难点;,当数字系统划分为控制子系统和数据处理子系统后,逻辑分工清楚,各自的任

3、务。,13.2数字系统的设计方法,数字系统设计有多种方法,如模块设计法、自顶向下设计法和自底向上设计法等。数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方法。,一、自底向上的设计方法,传统的电子设计流程通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系统的要求。以此流程,逐步向上递推,直至完成整个目标系统的设计。,系统测试与性能分析,完整系统,功能模块,基本元器件,缺点:1、设计过程依赖现有的通用元器件、手工及经验;2、设计后期的仿真和调试3、自下而上思想的局限性4、设计周期长、灵活性

4、差、效率低,传统电路设计方法:自下而上(Bottom-Up)的设计方法,二、自顶向下的设计方法,将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模快,层层分解,直至整个系统中各个子系统关系合理,并便于逻辑电路级的设计和实现为止。自上而下设计中可逐层描述,逐层仿真,保证满足系统指标。,自顶向下设计方法是一种模块化设计方法。对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯;,优点,针对具体的设计,实施自顶向下的设计方法的形式会有所不同,但均需遵循以下两条原则:逐层分解功能和分层次进行设计。同时,应在各个设计层次上,考虑相应的仿真验证

5、问题。,适合多个设计者同时进行设计。随着技术的不断进步,许多设计由一个设计者已无法完成,由多个设计者分工协作完成一项设计的情况越来越多;,13.3数字系统的设计准则,进行数字系统设计时,通常需要考虑多方面的条件和要求,如设计的功能和性能要求,元器件的资源分配和设计工具的可实现性,系统的开发费用和成本等。虽然具体设计的条件和要求千差万别,实现的方法也各不相同,但数字系统设计还是具备一些共同的方法和准则的。,一、分割准则,自顶向下的设计方法或其他层次化的设计方法,需要对系统功能进行分割,然后用逻辑语言进行描述。分割过程中,若分割过粗,则不易用逻辑语言表达;分割过细,则带来不必要的重复和繁琐。,二、

6、系统的可观测性,在系统设计中,应该同时考虑功能检查和性能的测试,即系统观测性的问题。一些有经验的设计者会自觉地在设计系统的同时设计观测电路,即观测器,指示系统内部的工作状态。,三、同步和异步电路,异步电路会造成较大延时和逻辑竞争,容易引起系统的不稳定,而同步电路则是按照统一的时钟工作,稳定性好。因此,在设计时应尽可能采用同步电路进行设计,避免使用异步电路。在必须使用异步电路时,应采取措施来避免竞争和增加稳定性。,四、最优化设计,由于可编程器件的逻辑资源、连接资源和I/O资源有限,器件的速度和性能也是有限的,用器件设计系统的过程相当于求最优解的过程,因此,需要给定两个约束条件:边界条件和最优化目

7、标。,五、系统设计的艺术,一个系统的设计,通常需要经过反复的修改、优化才能达到设计的要求。一个好的设计,应该满足“和谐”的基本特征,对数字系统可以根据以下几点做出判断:设计是否总体上流畅,无拖泥带水的感觉;资源分配、I/O分配是否合理,设计上和性能上是否有瓶颈,系统结构是否协调;是否具有良好的可观测性;是否易于修改和移植;器件的特点是否能得到充分的发挥。,数字系统设计中的第一步是明确系统的任务。在设计任务书中,可用各种方式提出对整个数字系统的逻辑要求,常用的方式有自然语言、逻辑流程图、时序图或几种方法的结合。当系统较大或逻辑关系较复杂时,系统任务(逻辑要求)逻辑的表述和理解都不是一件容易的工作

8、。所以,分析系统的任务必须细致、全面,不能有理解上的偏差和疏漏。,一、系统任务分析,13.4数字系统的设计步骤,二、确定逻辑算法,实现系统逻辑运算的方法称为逻辑算法,也简称为算法。一个数字系统的逻辑运算往往有多种算法,设计者的任务不但是要找出各种算法,还必须比较优劣,取长补短,从中确定最合理的一种。数字系统的算法是逻辑设计的基础,算法不同,则系统的结构也不同,算法的合理与否直接影响系统结构的合理性。确定算法是数字系统设计中最具创造性的一环,也是最难的一步。,三、建立系统及子系统模型,当算法明确后,应根据算法构造系统的硬件框架(也称为系统框图),将系统划分为若干个部分,各部分分别承担算法中不同的

9、逻辑操作功能。如果某一部分的规模仍嫌大,则需进一步划分。划分后的各个部分应逻辑功能清楚,规模大小合适,便于进行电路级的设计。,四、系统(或模块)逻辑描述,当系统中各个子系统(指最低层子系统)和模块的逻辑功能和结构确定后,则需采用比较规范的形式来描述系统的逻辑功能。设计方案的描述方法可以有多种,常用的有方框图、流程图和描述语言等。,对系统的逻辑描述可先采用较粗略的逻辑流程图,再将逻辑流程图逐步细化为详细逻辑流程图,最后将详细逻辑流程图表示成与硬件有对应关系的形式,为下一步的电路级设计提供依据。,五、逻辑电路级设计及系统仿真,电路级设计是指选择合理的器件和连接关系以实现系统逻辑要求。电路级设计的结

10、果常采用两种方式来表达:电路图方式和硬件描述语言方式。EDA软件允许以这两种方式输入,以便作后续的处理。,六、系统的物理实现,物理实现是指用实际的器件实现数字系统的设计,用仪表测量设计的电路是否符合设计要求。现在的数字系统往往采用大规模和超大规模集成电路,由于器件集成度高、导线密集,故一般在电路设计完成后即设计印刷电路板,在印刷电路板上组装电路进行测试。需要注意的是,印刷电路板本身的物理特性也会影响电路的逻辑关系。,13.5数字系统的设计举例,【例13.1】数字频率计的设计,1.方案构思:8位十进制数字频率计可以由一个测频控制信号发生器TESTCTL、八个有时钟使能的十进制计数器CNT10、一

11、个32位锁存器REG32B组成。,2.顶层电路的设计及VHDL实现:1)顶层电路逻辑图,图13.2 8位十进制数字频率计逻辑图,2)顶层的VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQ IS PORT(FSIN:IN STD_LOGIC;CLK:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END ENTITY FREQ;ARCHITECTURE ART OF FREQ IS,COMPONENT CNT10 IS-待调用的有时钟使能的十进制计数器端口定义 PORT(

12、CLK,CLR,ENA:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT:OUT STD_LOGIC);END COMPONENT CNT10;COMPONENT REG32B IS-待调用的32位锁存器端口定义 COMPONENT TESTCTL IS-待调用的测频控制信号发生器端口定义,SIGNAL SE,SC,SL:STD_LOGIC;SIGNAL S1,S2,S3,S4,S5,S6,S7,S7,S8:STD_LOGIC;SIGNAL SD:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINU0:TE

13、STCTL PORT MAP(CLK=CLK,TSTEN=SE,CLR_CNT=SC,LOAD=SL);U1:CNT10 PORT MAP(CLK=FSIN,CLR=SC,ENA=SE,CQ=SD(3 DOWNTO 0),ARRY_OUT=S1);-名字关联,U2:CNT10 PORT MAP(CLK=S1,CLR=SC,ENA=SE,CQ=SD(7 DOWNTO 4),CARRY_OUT=S2);U3:CNT10 PORT MAP(S2,SC,SE,SD(11 DOWNTO 8),S3);-位置关联U4:CNT10 PORT MAP(S3,SC,SE,SD(15 DOWNTO 12),S4)

14、;U5:CNT10 PORT MAP(S4,SC,SE,SD(19 DOWNTO 16),S5);U6:CNT10 PORT MAP(S5,SC,SE,SD(23 DOWNTO 20),S6);U7:CNT10 PORT MAP(S6,SC,SE,SD(27 DOWNTO 24),S7);U8:CNT10 PORT MAP(S7,SC,SE,SD(31 DOWNTO 28),S8);U9:REG32B PORT MAP(LOAD=SL,DIN=SD(31 DOWNTO 0),DOUT=DOUT);END ARCHITECTURE ART;,3.次级模块电路的分析与设计:1)32位锁存器REG3

15、2B的设计 设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。,2)32位锁存器的VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT(LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT:OUT STD_LOGEC_VECTOR(31 DOWNTO 0);END ENTITY REG32B;,ARCHITECTURE ART OF REG32B IS BEGINPROCESS(LOAD,DIN)ISBEGINIF LOA

16、D EVENT AND LOAD=1 THEN DOUT=DIN;-锁存输入数据 END IF;END PROCESS;END ARCHITECTURE ART;,3)十进制计数器CNT10的设计 此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时计数禁止。,4)十进制计数器CNT10的VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 IS PORT(CLK:IN STD_LOGIC;-计数时钟信号 CLR:IN STD_LOGIC;-清零信号 ENA:IN STD_LOGI

17、C;-计数使能信号 CQ:OUT INTEGER RANGE 0 TO 15;-4位计数结果输出 CARRY_OUT:OUT STD_LOGIC);-计数进位,END ENTITY CNT10;ARCHITECTURE ART OF CNT10 IS SIGNAL CQI:INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,CLR,ENA)ISBEGINIF CLR=1 THEN CQI=0;-计数器异步清零ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN,IF CQI9 THEN CQI=CQI+1;ELSE CQI=0;END

18、 IF-等于9,则计数器清零 END IF;END IF;END PROCESS;PROCESS(CQI)IS BEGIN IF CQI=9 THEN CARRY_OUT=1;-进位输出 ELSE CARRY_OUT=0;END IF;END PROCESS;CQ=CQI;END ARCHITECTURE ART;,4、测频控制信号发生器设计 频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。测频控制信号发生器的工作时序如图13.3所示。为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。,图13.3 测频控制信号发生器工作时序,测频控制信号发生器

19、的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY TESTCTL IS PORT(CLK:IN STD_LOGIC;-1 Hz测频控制时钟 TSTEN:OUT STD_LOGIC;-计数器时钟使能 CLR_CNT:OUT STD_LOGIC;-计数器清零 LOAD:OUT STD_LOGIC);-输出锁存信号,END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL IS SIGNAL DIV2CLK:STD_LOGIC;BEGINPROCES

20、S(CLK)IS BEGINIF CLKEVENT AND CLK=1 THEN-1 HZ时钟二分频DIV2CLK=NOT DIV2CLK;END IF;,END PROCESS;PROCESS(CLK,DIV2CLK)ISBEGIN IF CLK=0 AND DIV2CLK=0 THEN-产生计数器清零信号 CLR_CNT=1;ELSE CLR_CNT=0;END IF;END PROCESS;LOAD=NOT DIV2CLK;TSTEN=DIV2CLK;END ARCHITECTURE ART;,13.6VHDL状态机,状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;,优势,由于状态机

21、的结构相对简单,设计方案相对固定,容易构成性能良好的同步时序逻辑模块;,在高速运算和控制方面,状态机更有其巨大的优势;,高可靠性。,与VHDL的其他描述方式相比,状态机的VHDL表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处;,一、状态机设计相关语句,TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型;TYPE 数据类型名 IS 数据类型定义;,TYPE st1 IS ARRAY(0 TO 15)OF STD_LOGIC;TYPE week IS(sun,mon,tue,wed,thu,fri,sat);,TYPE m_state IS(s

22、t0,st1,st2,st3,st4,st5);SIGNAL present_state,next_state:m_state;,1、类型定义语句,(1).说明部分,ARCHITECTURE.IS TYPE FSM_ST IS(s0,s1,s2,s3);SIGNAL current_state,next_state:FSM_ST;.,2、状态机结构,(2).主控时序进程,图13.4 一般状态机结构框图,2、状态机结构,(3).主控组合进程,(4).辅助进程,2、状态机结构,【例13.2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_mach

23、ine IS PORT(clk,reset:IN STD_LOGIC;state_inputs:IN STD_LOGIC_VECTOR(0 TO 1);comb_outputs:OUT INTEGER RANGE 0 TO 15);END s_machine;ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS(s0,s1,s2,s3);-数据类型定义,状态符号化 SIGNAL current_state,next_state:FSM_ST;-将现态和次态定义为新的数据类型BEGIN REG:PROCESS(reset,clk)-主控时序进程 BEG

24、IN IF reset=1 THEN current_state=s0;-检测异步复位信号 ELSIF clk=1 AND clkEVENT THEN current_state=next_state;END IF;END PROCESS;COM:PROCESS(current_state,state_Inputs)-主控组合进程(接下页),BEGIN CASE current_state IS WHEN s0=comb_outputs comb_outputs comb_outputs comb_outputs=14;IF state_inputs=11 THEN next_state=s3

25、;ELSE next_state=s0;END IF;END case;END PROCESS;END behv;,图13.5 例13.2状态机的工作时序,3、状态机类型,从状态机的信号输出方式上分,有Moore型和Mealy型两类状态机。从输出时序上看,Mealy型属于异步输出状态机,其输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。Moore型属于同步输出状态机,其输出仅为当前状态的函数,这类状态机在输入发生变化时必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。,图13.6 ADC0809工作时序,二、Moore状态机,1、多进程状态机,图

26、13.7 控制ADC0809采样状态图,5.2.1 多进程状态机,图13.8 采样状态机结构框图,【例13.3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-来自0809转换好的8位数据CLK:IN STD_LOGIC;-状态机工作时钟EOC:IN STD_LOGIC;-转换状态指示,低电平表示正在转换ALE:OUT STD_LOGIC;-8个模拟信号通道地址锁存信号START:OUT STD_LOGIC;-转换开始信号OE:OUT STD_LO

27、GIC;-数据输出3态控制信号ADDA:OUT STD_LOGIC;-信号通道最低位控制信号LOCK0:OUT STD_LOGIC;-观察数据锁存时钟Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-8位数据输出END ADCINT;ARCHITECTURE behav OF ADCINT ISTYPE states IS(st0,st1,st2,st3,st4);-定义各状态子类型 SIGNAL current_state,next_state:states:=st0;SIGNAL REGL:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOC

28、K:STD_LOGIC;-转换后数据输出锁存时钟信号 BEGINADDA=1;-当ADDA=0,模拟信号进入通道IN0;当ADDA=1,则进入通道IN1Q=REGL;LOCK0=LOCK;COM:PROCESS(current_state,EOC)BEGIN-规定各状态转换方式 CASE current_state IS,(接下页),WHEN st0=ALEALE ALE ALE ALE next_state=st0;END CASE;END PROCESS COM;REG:PROCESS(CLK)BEGIN IF(CLKEVENT AND CLK=1)THEN current_state=n

29、ext_state;END IF;END PROCESS REG;-由信号current_state将当前状态值带出此进程:REG LATCH1:PROCESS(LOCK)-此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL=D;END IF;END PROCESS LATCH1;END behav;,图13.9 ADC0809采样状态机工作时序,【例13.4】COM1:PROCESS(current_state,EOC)BEGIN CASE current_state IS WHEN st0=next_state

30、next_state IF(EOC=1)THEN next_state next_state next_state next_state ALEALEALEALEALE ALE=0;START=0;LOCK=0;END CASE;END PROCESS COM2;,【例13.5】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 IS PORT(DATAIN:IN STD_LOGIC_VECTOR(1 DOWNTO 0);CLK,RST:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);EN

31、D MOORE1;ARCHITECTURE behav OF MOORE1 IS TYPE ST_TYPE IS(ST0,ST1,ST2,ST3,ST4);SIGNAL C_ST:ST_TYPE;BEGIN PROCESS(CLK,RST)BEGIN IF RST=1 THEN C_ST=ST0;Q=0000;ELSIF CLKEVENT AND CLK=1 THEN,(接下页),2、单进程状态机,5.2 Moore状态机,5.2.2 单进程Moore状态机,CASE C_ST IS WHEN ST0=IF DATAIN=10 THEN C_ST IF DATAIN=11 THEN C_ST

32、IF DATAIN=01 THEN C_ST IF DATAIN=00 THEN C_ST IF DATAIN=11 THEN C_ST C_ST=ST0;END CASE;END IF;END PROCESS;END behav;,图13.10 例13.5状态机综合后的部分主要RTL电路模块(Synplify综合),图13.11 例13.5单进程状态机工作时序,图13.12 对应例13.5的二进程状态机工作时序图,【例13.6】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT(CLK,DATAIN,RESET:IN S

33、TD_LOGIC;Q:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY1;ARCHITECTURE behav OF MEALY1 IS TYPE states IS(st0,st1,st2,st3,st4);SIGNAL STX:states;BEGIN COMREG:PROCESS(CLK,RESET)BEGIN-决定转换状态的进程 IF RESET=1 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAI

34、N=1 THEN STX STX=st0;END CASE;(接下页),三、Mealy状态机,END IF;END PROCESS COMREG;COM1:PROCESS(STX,DATAIN)BEGIN-输出控制信号的进程 CASE STX IS WHEN st0=IF DATAIN=1 THEN Q IF DATAIN=0 THEN Q IF DATAIN=1 THEN Q IF DATAIN=0 THEN Q IF DATAIN=1 THEN Q Q=00000;END CASE;END PROCESS COM1;END behav;,【例13.7】LIBRARY IEEE;-MEALY

35、 FSMUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY2 IS PORT(CLK,DATAIN,RESET:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY2;ARCHITECTURE behav OF MEALY2 IS TYPE states IS(st0,st1,st2,st3,st4);SIGNAL STX:states;SIGNAL Q1:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN COMREG:PROCESS(CLK,RESET)-决定转换状态的进程 BEG

36、IN IF RESET=1 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAIN=1 THEN STX STX=st0;END CASE;(接下页),END IF;END PROCESS COMREG;COM1:PROCESS(STX,DATAIN,CLK)-输出控制信号的进程 VARIABLE Q2:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN CASE STX IS WHEN st0=IF DATAIN=1 THEN

37、 Q2:=10000;ELSE Q2:=01010;END IF;WHEN st1=IF DATAIN=0 THEN Q2:=10111;ELSE Q2:=10100;END IF;WHEN st2=IF DATAIN=1 THEN Q2:=10101;ELSE Q2:=10011;END IF;WHEN st3=IF DATAIN=0 THEN Q2:=11011;ELSE Q2:=01001;END IF;WHEN st4=IF DATAIN=1 THEN Q2:=11101;ELSE Q2:=01101;END IF;WHEN OTHERS=Q2:=00000;END CASE;IF C

38、LKEVENT AND CLK=1 THEN Q1=Q2;END IF;END PROCESS COM1;Q=Q1;END behav;,图13.13 例13.6状态机工作时序图,图13.14 例13.7状态机工作时序图,表13.1 控制信号状态编码表,四、状态编码,1、直接输出型编码,5.4 状态编码,5.4.1 直接输出型编码,【例13.8】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS.PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK,EOC:IN STD_LOGIC;ALE,STAR

39、T,OE,ADDA:OUT STD_LOGIC;c_state:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END AD0809;ARCHITECTURE behav OF AD0809 ISSIGNAL current_state,next_state:STD_LOGIC_VECTOR(4 DOWNTO 0);CONSTANT st0:STD_LOGIC_VECTOR(4 DOWNTO 0):=00000;CONSTANT st1:STD_LOGIC_VECTOR(4 DOWNTO 0):=11000

40、;CONSTANT st2:STD_LOGIC_VECTOR(4 DOWNTO 0):=00001;CONSTANT st3:STD_LOGIC_VECTOR(4 DOWNTO 0):=00100;CONSTANT st4:STD_LOGIC_VECTOR(4 DOWNTO 0):=00110;SIGNAL REGL:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK:STD_LOGIC;BEGIN ADDA=1;Q=REGL;START=current_state(4);ALE=current_state(3);OE=current_state(2);LOCK=

41、current_state(1);c_state=current_state;COM:PROCESS(current_state,EOC)BEGIN-规定各状态转换方式(接下页),5.4 状态编码,表5-1 控制信号状态编码表,5.4.1 直接输出型编码,CASE current_state IS WHEN st0=next_state next_state IF(EOC=1)THEN next_state next_state next_state next_state=st0;END CASE;END PROCESS COM;REG:PROCESS(CLK)BEGIN IF(CLKEVEN

42、T AND CLK=1)THEN current_state=next_state;END IF;END PROCESS REG;-由信号current_state将当前状态值带出此进程:REG LATCH1:PROCESS(LOCK)-此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL=D;END IF;END PROCESS LATCH1;END behav;,图13.15 例13.8状态机工作时序图,表13.2 编码方式,2、顺序编码,【例13.9】.SIGNAL CRURRENT_STATE,NEXT_STA

43、TE:STD_LOGIC_VECTOR(2 DOWNTO 0);CONSTANT ST0:STD_LOGIC_VECTOR(2 DOWNTO 0):=000;CONSTANT ST1:STD_LOGIC_VECTOR(2 DOWNTO 0):=001;CONSTANT ST2:STD_LOGIC_VECTOR(2 DOWNTO 0):=010;CONSTANT ST3:STD_LOGIC_VECTOR(2 DOWNTO 0):=011;CONSTANT ST4:STD_LOGIC_VECTOR(2 DOWNTO 0):=100;.,图13.16 一位热码编码方式选择对话框,3、一位热码编码,表

44、13.3 剩余状态,WHEN st_ilg1=next_state next_state=st0;,五、非法状态处理,【例13.10】.TYPE states IS(st0,st1,st2,st3,st4,st_ilg1,st_ilg2,st_ilg3);SIGNAL current_state,next_state:states;.COM:PROCESS(current_state,state_Inputs)-组合逻辑进程BEGIN CASE current_state IS-确定当前状态的状态值.WHEN OTHERS=next_state=st0;END case;,【例13.11】.a

45、larm=(st0 AND(st1 OR st2 OR st3 OR st4 OR st5)OR(st1 AND(st0 OR st2 OR st3 OR st4 OR st5)OR(st2 AND(st0 OR st1 OR st3 OR st4 OR st5)OR(st3 AND(st0 OR st1 OR st2 OR st4 OR st5)OR(st4 AND(st0 OR st1 OR st2 OR st3 OR st5)OR(st5 AND(st0 OR st1 OR st2 OR st3 OR st4);,五、状态机举例(序列信号检测器),图13.17 序列信号检测器的状态图(Q

46、uartusII),本章小结,数字系统指的是交互式的、以离散形式表示的,具有存储、传输、信息处理能力的逻辑子系统的集合。用于描述数字系统的模型有多种,各种模型描述数字系统的侧重点不同。数字系统一般划分为两个模块或两个子系统:数据处理子系统和控制子系统。,数字系统设计有多种方法,如自顶向下设计法和自底向上设计法等。数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方法。,进行数字系统设计时,通常需要考虑多方面的条件和要求,实现的方法也各不相同,但数字系统设计还是具备一些共同的方法和准则的。,状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点,与VHDL的其他描述方式相比,状态机的VHDL表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处。,从状态机的信号输出方式上分,有Moore型和Mealy型两类状态机。从输出时序上看,Mealy型属于异步输出状态机,其输出是当前状态和所有输入信号的函数,Moore型属于同步输出状态机,其输出仅为当前状态的函数。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号