数字系统设计基础.ppt

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

《数字系统设计基础.ppt》由会员分享,可在线阅读,更多相关《数字系统设计基础.ppt(89页珍藏版)》请在金锄头文库上搜索。

1、第第1313章数字系统章数字系统设计基础设计基础第第 13 章数字系统设计基础章数字系统设计基础数字系统的设计模型数字系统的设计模型数字系统的设计方法数字系统的设计方法 数字系统的设计准则数字系统的设计准则 数字系统的设计步骤数字系统的设计步骤本章小结本章小结数字系统设计举例数字系统设计举例VHDLVHDL状态机状态机13.1数字系统的设计模型数字系统的设计模型 数字系统指的是交互式的、以离散形式表示的,数字系统指的是交互式的、以离散形式表示的,具有存储、传输、信息处理能力的逻辑子系统的集具有存储、传输、信息处理能力的逻辑子系统的集合。用于描述数字系统的模型有多种,各种模型描合。用于描述数字系

2、统的模型有多种,各种模型描述数字系统的侧重点不同。图述数字系统的侧重点不同。图13.1介绍了一种普遍介绍了一种普遍采用的模型。这种模型根据数字系统的定义,将整采用的模型。这种模型根据数字系统的定义,将整个系统划分为两个模块或两个子系统:数据处理子个系统划分为两个模块或两个子系统:数据处理子系统和控制子系统。系统和控制子系统。图13.1 数字系统的设计模型 数据处理子系统主要完成数据的采集、存储、运数据处理子系统主要完成数据的采集、存储、运算和传输。算和传输。 数据处理子系统主要由存储器、运算器、数据选数据处理子系统主要由存储器、运算器、数据选择器等功能电路组成。择器等功能电路组成。 数据处理子

3、系统与外界进行数据交换,在控制子数据处理子系统与外界进行数据交换,在控制子系统系统( (或称控制器或称控制器) )发出的控制信号作用下,数据处理子发出的控制信号作用下,数据处理子系统将进行数据的存储和运算等操作。系统将进行数据的存储和运算等操作。 控制子系统是执行数字系统算法的核心,具有记控制子系统是执行数字系统算法的核心,具有记忆功能,因此控制子系统是时序系统。控制子系统由组忆功能,因此控制子系统是时序系统。控制子系统由组合逻辑电路和触发器组成,与数据处理子系统共用时钟。合逻辑电路和触发器组成,与数据处理子系统共用时钟。 把数字系统划分为控制子系统和数据处理子系统两把数字系统划分为控制子系统

4、和数据处理子系统两个主要部分,使设计者面对的电路规模减小,二者可以个主要部分,使设计者面对的电路规模减小,二者可以分别设计分别设计 ; 由于数字系统中控制子系统的逻辑关系比较复杂,由于数字系统中控制子系统的逻辑关系比较复杂,将其独立划分出来后,可突出设计重点和分散设计难点;将其独立划分出来后,可突出设计重点和分散设计难点; 当数字系统划分为控制子系统和数据处理子系统后,当数字系统划分为控制子系统和数据处理子系统后,逻辑分工清楚,各自的任务。逻辑分工清楚,各自的任务。 13.2数字系统的设计方法数字系统的设计方法 数字系统设计有多种方法,如模块设计法、自数字系统设计有多种方法,如模块设计法、自顶

5、向下设计法和自底向上设计法等。数字系统的设顶向下设计法和自底向上设计法等。数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方法。计一般采用自顶向下、由粗到细、逐步求精的方法。 一、自底向上的设计方法一、自底向上的设计方法 传统的电子设计流程通常是传统的电子设计流程通常是自底向上自底向上的,即首的,即首先确定构成系统的最底层的电路模块或元件的结构先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合和功能,然后根据主系统的功能要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系成更大的功能块,使它们的结构和功能满足高层系统的要求。以此流程,逐步向上递

6、推,直至完成整统的要求。以此流程,逐步向上递推,直至完成整个目标系统的设计。个目标系统的设计。 系统测试与性能分析完整系统功能模块基本元器件 缺点:缺点:1、设计过程依赖现有的通、设计过程依赖现有的通用元器件、手工及经验;用元器件、手工及经验;2、设计后期的仿真和调试、设计后期的仿真和调试3、自下而上思想的局限性、自下而上思想的局限性4、设计周期长、灵活性差、设计周期长、灵活性差、效率低效率低传统电路设计方法:传统电路设计方法: 自下而上(自下而上(Bottom-Up)的设计方法)的设计方法二、自顶向下的设计方法二、自顶向下的设计方法 将数字系统的整体逐步分解为各个子系统和模将数字系统的整体逐

7、步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模快,层层分解,直至整个系解为更小的子系统和模快,层层分解,直至整个系统中各个子系统关系合理,并便于逻辑电路级的设统中各个子系统关系合理,并便于逻辑电路级的设计和实现为止。自上而下设计中可逐层描述,逐层计和实现为止。自上而下设计中可逐层描述,逐层仿真,保证满足系统指标。仿真,保证满足系统指标。 自顶向下设计方法是一种模块化设计方法。对设计自顶向下设计方法是一种模块化设计方法。对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思的描述从上到下逐步由粗略到详细,符合常规

8、的逻辑思维习惯;维习惯; 针对具体的设计,实施自顶向下的设计方法的形式针对具体的设计,实施自顶向下的设计方法的形式会有所不同,但均需遵循以下两条原则:逐层分解功能会有所不同,但均需遵循以下两条原则:逐层分解功能和分层次进行设计。同时,应在各个设计层次上,考虑和分层次进行设计。同时,应在各个设计层次上,考虑相应的仿真验证问题。相应的仿真验证问题。 适合多个设计者同时进行设计。随着技术的不断进适合多个设计者同时进行设计。随着技术的不断进步,许多设计由一个设计者已无法完成,由多个设计者步,许多设计由一个设计者已无法完成,由多个设计者分工协作完成一项设计的情况越来越多分工协作完成一项设计的情况越来越多

9、;13.3数字系统的设计准则数字系统的设计准则 进行数字系统设计时,通常需要考虑多方面的进行数字系统设计时,通常需要考虑多方面的条件和要求,如设计的功能和性能要求,元器件的条件和要求,如设计的功能和性能要求,元器件的资源分配和设计工具的可实现性,系统的开发费用资源分配和设计工具的可实现性,系统的开发费用和成本等。虽然具体设计的条件和要求千差万别,和成本等。虽然具体设计的条件和要求千差万别,实现的方法也各不相同,但数字系统设计还是具备实现的方法也各不相同,但数字系统设计还是具备一些共同的方法和准则的。一些共同的方法和准则的。一、分割准则一、分割准则 自顶向下的设计方法或其他层次化的设计方法,自顶

10、向下的设计方法或其他层次化的设计方法,需要对系统功能进行分割,然后用逻辑语言进行描需要对系统功能进行分割,然后用逻辑语言进行描述。分割过程中,若分割过粗,则不易用逻辑语言述。分割过程中,若分割过粗,则不易用逻辑语言表达;分割过细,则带来不必要的重复和繁琐。表达;分割过细,则带来不必要的重复和繁琐。 二、系统的可观测性二、系统的可观测性 在系统设计中,应该同时考虑功能检查和性能在系统设计中,应该同时考虑功能检查和性能的测试,即系统观测性的问题。一些有经验的设计的测试,即系统观测性的问题。一些有经验的设计者会自觉地在设计系统的同时设计观测电路,即观者会自觉地在设计系统的同时设计观测电路,即观测器,

11、指示系统内部的工作状态。测器,指示系统内部的工作状态。三、同步和异步电路三、同步和异步电路 异步电路会造成较大延时和逻辑竞争,容易引异步电路会造成较大延时和逻辑竞争,容易引起系统的不稳定,而同步电路则是按照统一的时钟起系统的不稳定,而同步电路则是按照统一的时钟工作,稳定性好。因此,在设计时应尽可能采用同工作,稳定性好。因此,在设计时应尽可能采用同步电路进行设计,避免使用异步电路。在必须使用步电路进行设计,避免使用异步电路。在必须使用异步电路时,应采取措施来避免竞争和增加稳定性。异步电路时,应采取措施来避免竞争和增加稳定性。四、最优化设计四、最优化设计 由于可编程器件的逻辑资源、连接资源和由于可

12、编程器件的逻辑资源、连接资源和I/O资资源有限,器件的速度和性能也是有限的,用器件设源有限,器件的速度和性能也是有限的,用器件设计系统的过程相当于求最优解的过程,因此,需要计系统的过程相当于求最优解的过程,因此,需要给定两个约束条件:边界条件和最优化目标。给定两个约束条件:边界条件和最优化目标。 五、系统设计的艺术五、系统设计的艺术 一个系统的设计,通常需要经过反复的修改、一个系统的设计,通常需要经过反复的修改、优化才能达到设计的要求。一个好的设计,应该满优化才能达到设计的要求。一个好的设计,应该满足足“和谐和谐”的基本特征,对数字系统可以根据以下的基本特征,对数字系统可以根据以下几点做出判断

13、:设计是否总体上流畅,无拖泥带水几点做出判断:设计是否总体上流畅,无拖泥带水的感觉;资源分配、的感觉;资源分配、I/O分配是否合理,设计上和分配是否合理,设计上和性能上是否有瓶颈,系统结构是否协调;是否具有性能上是否有瓶颈,系统结构是否协调;是否具有良好的可观测性;是否易于修改和移植;器件的特良好的可观测性;是否易于修改和移植;器件的特点是否能得到充分的发挥。点是否能得到充分的发挥。 数字系统设计中的第一步是明确系统的任务。数字系统设计中的第一步是明确系统的任务。在设计任务书中,可用各种方式提出对整个数字系在设计任务书中,可用各种方式提出对整个数字系统的逻辑要求,常用的方式有自然语言、逻辑流程

14、统的逻辑要求,常用的方式有自然语言、逻辑流程图、时序图或几种方法的结合。当系统较大或逻辑图、时序图或几种方法的结合。当系统较大或逻辑关系较复杂时,系统任务关系较复杂时,系统任务(逻辑要求逻辑要求)逻辑的表述和逻辑的表述和理解都不是一件容易的工作。所以,分析系统的任理解都不是一件容易的工作。所以,分析系统的任务必须细致、全面,不能有理解上的偏差和疏漏。务必须细致、全面,不能有理解上的偏差和疏漏。 一、系统任务分析一、系统任务分析13.4数字系统的设计步骤数字系统的设计步骤二、确定逻辑算法二、确定逻辑算法 实现系统逻辑运算的方法称为逻辑算法,也简实现系统逻辑运算的方法称为逻辑算法,也简称为算法。一

15、个数字系统的逻辑运算往往有多种算称为算法。一个数字系统的逻辑运算往往有多种算法,设计者的任务不但是要找出各种算法,还必须法,设计者的任务不但是要找出各种算法,还必须比较优劣,取长补短,从中确定最合理的一种。数比较优劣,取长补短,从中确定最合理的一种。数字系统的算法是逻辑设计的基础,算法不同,则系字系统的算法是逻辑设计的基础,算法不同,则系统的结构也不同,算法的合理与否直接影响系统结统的结构也不同,算法的合理与否直接影响系统结构的合理性。确定算法是数字系统设计中最具创造构的合理性。确定算法是数字系统设计中最具创造性的一环,也是最难的一步。性的一环,也是最难的一步。三、建立系统及子系统模型三、建立

16、系统及子系统模型 当算法明确后,应根据算法构造系统的硬件框当算法明确后,应根据算法构造系统的硬件框架架(也称为系统框图也称为系统框图),将系统划分为若干个部分,将系统划分为若干个部分,各部分分别承担算法中不同的逻辑操作功能。如果各部分分别承担算法中不同的逻辑操作功能。如果某一部分的规模仍嫌大,则需进一步划分。划分后某一部分的规模仍嫌大,则需进一步划分。划分后的各个部分应逻辑功能清楚,规模大小合适,便于的各个部分应逻辑功能清楚,规模大小合适,便于进行电路级的设计。进行电路级的设计。四、系统(或模块)逻辑描述四、系统(或模块)逻辑描述 当系统中各个子系统当系统中各个子系统(指最低层子系统指最低层子

17、系统)和模块和模块的逻辑功能和结构确定后,则需采用比较规范的形的逻辑功能和结构确定后,则需采用比较规范的形式来描述系统的逻辑功能。设计方案的描述方法可式来描述系统的逻辑功能。设计方案的描述方法可以有多种,常用的有方框图、流程图和描述语言等。以有多种,常用的有方框图、流程图和描述语言等。 对系统的逻辑描述可先采用较粗略的逻辑流程对系统的逻辑描述可先采用较粗略的逻辑流程图,再将逻辑流程图逐步细化为详细逻辑流程图,图,再将逻辑流程图逐步细化为详细逻辑流程图,最后将详细逻辑流程图表示成与硬件有对应关系的最后将详细逻辑流程图表示成与硬件有对应关系的形式,为下一步的电路级设计提供依据。形式,为下一步的电路

18、级设计提供依据。五、逻辑电路级设计及系统仿真五、逻辑电路级设计及系统仿真 电路级设计是指选择合理的器件和连接关系以电路级设计是指选择合理的器件和连接关系以实现系统逻辑要求。电路级设计的结果常采用两种实现系统逻辑要求。电路级设计的结果常采用两种方式来表达:电路图方式和硬件描述语言方式。方式来表达:电路图方式和硬件描述语言方式。EDA软件允许以这两种方式输入,以便作后续的处软件允许以这两种方式输入,以便作后续的处理。理。六、系统的物理实现六、系统的物理实现 物理实现是指用实际的器件实现数字系统的设物理实现是指用实际的器件实现数字系统的设计,用仪表测量设计的电路是否符合设计要求。现计,用仪表测量设计

19、的电路是否符合设计要求。现在的数字系统往往采用大规模和超大规模集成电路,在的数字系统往往采用大规模和超大规模集成电路,由于器件集成度高、导线密集,故一般在电路设计由于器件集成度高、导线密集,故一般在电路设计完成后即设计印刷电路板,在印刷电路板上组装电完成后即设计印刷电路板,在印刷电路板上组装电路进行测试。需要注意的是,印刷电路板本身的物路进行测试。需要注意的是,印刷电路板本身的物理特性也会影响电路的逻辑关系。理特性也会影响电路的逻辑关系。13.5数字系统的设计举例数字系统的设计举例【例例13.1】数字频率计的设计数字频率计的设计 1. 方案构思:方案构思: 8位十进制数字频率计可以由一个测频位

20、十进制数字频率计可以由一个测频控制信号发生器控制信号发生器TESTCTL、八个有时钟使、八个有时钟使能的十进制计数器能的十进制计数器CNT10、一个一个32位锁存位锁存器器REG32B组成。组成。 2. 顶层电路的设计及顶层电路的设计及VHDL实现:实现: 1) 顶层电路逻辑图顶层电路逻辑图 图13.2 8位十进制数字频率计逻辑图 n2) 顶层的顶层的VHDL源程序源程序nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;nENTITY FREQ ISn PORT(FSIN:IN STD_LOGIC;n CLK:IN STD_LOGIC;n DOUT: OUT

21、 STD_LOGIC_VECTOR(31 DOWNTO 0);nEND ENTITY FREQ;nARCHITECTURE ART OF FREQ ISnCOMPONENT CNT10 IS n -待调用的有时钟使能的十进制计数器端口定义n PORT(CLK,CLR,ENA:IN STD_LOGIC;n CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);n CARRY_OUT:OUT STD_LOGIC);nEND COMPONENT CNT10;nCOMPONENT REG32B ISn -待调用的32位锁存器端口定义n nCOMPONENT TESTCTL IS n

22、-待调用的测频控制信号发生器端口定义n nSIGNAL SE,SC,SL:STD_LOGIC;nSIGNAL S1,S2,S3,S4,S5,S6,S7,S7,S8:STD_LOGIC;nSIGNAL SD:STD_LOGIC_VECTOR(31 DOWNTO 0);nBEGINnU0:TESTCTL PORT MAP(CLK=CLK,TSTEN=SE, CLR_CNT=SC,LOAD=SL);nU1:CNT10 PORT MAP(CLK=FSIN,CLR=SC,ENA=SE,CQ=SD (3 DOWNTO 0),ARRY_OUT=S1); n -名字关联nU2: CNT10 PORT MAP(

23、CLK=S1, CLR=SC, ENA=SE,CQ=SD (7 DOWNTO 4),CARRY_OUT=S2);nU3:CNT10 PORT MAP(S2,SC,SE,SD (11 DOWNTO 8 ),S3);-位置关联nU4:CNT10 PORT MAP(S3,SC,SE,SD (15 DOWNTO 12),S4);nU5:CNT10 PORT MAP(S4,SC,SE,SD (19 DOWNTO 16),S5);nU6:CNT10 PORT MAP(S5,SC,SE,SD (23 DOWNTO 20),S6);nU7:CNT10 PORT MAP(S6,SC,SE,SD (27 DOWN

24、TO 24),S7);nU8:CNT10 PORT MAP(S7,SC,SE,SD (31 DOWNTO 28),S8);nU9:REG32B PORT MAP(LOAD=SL,DIN=SD(31 DOWNTO 0),DOUT=DOUT);nEND ARCHITECTURE ART; 3. 次级模块电路的分析与设计:次级模块电路的分析与设计: 1) 32位锁存器位锁存器REG32B的设计的设计 设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。 2) 32位锁存器的位锁存器的VHDL源程序源程序nLIBRARY IEEE; nUSE IEEE.STD_LOGIC_1164

25、.ALL;nENTITY REG32B IS n PORT(LOAD:IN STD_LOGIC;n DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);n DOUT:OUT STD_LOGEC_VECTOR(31 DOWNTO 0);nEND ENTITY REG32B;nARCHITECTURE ART OF REG32B IS nBEGINnPROCESS ( LOAD, DIN ) ISnBEGINnIF LOAD EVENT AND LOAD= 1 THEN DOUT=DIN; -锁存输入数据n END IF;nEND PROCESS;nEND ARCHITEC

26、TURE ART;3) 十进制计数器十进制计数器CNT10的设计的设计n 此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时计数禁止。4) 十进制计数器十进制计数器CNT10的的VHDL源程序源程序nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL; nENTITY CNT10 ISn PORT (CLK:IN STD_LOGIC;-计数时钟信号n CLR:IN STD_LOGIC; -清零信号n ENA:IN STD_LOGIC; -计数使能信号n CQ:OUT INTEGER RANGE 0 TO 15;-4

27、位计数结果输出n CARRY_OUT: OUT STD_LOGIC); -计数进位nEND ENTITY CNT10;nARCHITECTURE ART OF CNT10 IS nSIGNAL CQI :INTEGER RANGE 0 TO 15;nBEGINnPROCESS(CLK,CLR,ENA) ISnBEGINnIF CLR= 1 THEN CQI= 0; -计数器异步清零nELSIF CLKEVENT AND CLK= 1 THEN n IF ENA= 1 THEN n IF CQI9 THEN CQI=CQI+1;n ELSE CQI=0;END IF-等于9,则计数器清零n EN

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

29、作时序n测频控制信号发生器的源程序测频控制信号发生器的源程序nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL; nUSE IEEE.STD_LOGIC_UNSIGNED.ALLnENTITY TESTCTL IS n PORT (CLK:IN STD_LOGIC; -1 Hz测频控制时钟n TSTEN:OUT STD_LOGIC; -计数器时钟使能n CLR_CNT:OUT STD_LOGIC;-计数器清零n LOAD:OUT STD_LOGIC); -输出锁存信号nEND ENTITY TESTCTL;nARCHITECTURE ART OF TESTCT

30、L IS nSIGNAL DIV2CLK :STD_LOGIC;nBEGINnPROCESS ( CLK ) ISn BEGINnIF CLKEVENT AND CLK= 1 THEN -1 HZ时钟二分频nDIV2CLK=NOT DIV2CLK;nEND IF ;nEND PROCESS;nPROCESS ( CLK,DIV2CLK ) ISnBEGIN n IF CLK= 0 AND DIV2CLK = 0 THEN n -产生计数器清零信号n CLR_CNT= 1;n ELSE CLR_CNT= 0 ; END IF;n END PROCESS;n LOAD=NOT DIV2CLK; T

31、STEN=DIV2CLK;nEND ARCHITECTURE ART;13.6VHDL状态机状态机 状态机克服了纯硬件数字系统顺序方式控制不灵活状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;的缺点; 由于状态机的结构相对简单,设计方案相对固定,由于状态机的结构相对简单,设计方案相对固定,容易构成性能良好的同步时序逻辑模块;容易构成性能良好的同步时序逻辑模块; 在高速运算和控制方面,状态机更有其巨大的优势;在高速运算和控制方面,状态机更有其巨大的优势; 高可靠性。高可靠性。 与与VHDLVHDL的其他描述方式相比,状态机的的其他描述方式相比,状态机的VHDLVHDL表述丰表述丰富多样、程序

32、层次分明,结构清晰,易读易懂;在排错、富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处;修改和模块移植方面也有其独到的好处;一、状态机设计相关语句一、状态机设计相关语句 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 ( st0,st1

33、,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ; 1 1、 类型定义语句类型定义语句 (1). 说明部分说明部分 ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; . 2 2、 状态机结构状态机结构 (2). 主控时序进程主控时序进程 图图13.4 13.4 一般状态机结构框图一般状态机结构框图 2 2、 状态机结构状态机结构 (3). 主控组合进程主控组合进程 (4). 辅助进程辅助进程

34、 2 2、 状态机结构状态机结构 【例例13.2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine 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); -数据类型定义,状态符号

35、化数据类型定义,状态符号化 SIGNAL current_state, next_state: FSM_ST;-将现态和次态定义为新将现态和次态定义为新的数据类型的数据类型BEGIN REG: PROCESS (reset,clk) -主控时序进程主控时序进程 BEGIN IF reset = 1 THEN current_state = s0;-检测异步复位信号检测异步复位信号 ELSIF clk=1 AND clkEVENT THEN current_state comb_outputs= 5; IF state_inputs = 00 THEN next_state=s0; ELSE n

36、ext_state comb_outputs= 8; IF state_inputs = 00 THEN next_state=s1; ELSE next_state comb_outputs= 12; IF state_inputs = 11 THEN next_state = s0; ELSE next_state comb_outputs = 14; IF state_inputs = 11 THEN next_state = s3; ELSE next_state = s0; END IF; END case; END PROCESS; END behv; 图图13.5 13.5 例例

37、13.213.2状态机的工作时序状态机的工作时序 3 3、 状态机类型状态机类型 从状态机的信号输出方式上分,有从状态机的信号输出方式上分,有MooreMoore型和型和MealyMealy型型两类状态机。两类状态机。 从输出时序上看,从输出时序上看,MealyMealy型属于异步输出状态机,其型属于异步输出状态机,其输出是当前状态和所有输入信号的函数,它的输出是在输输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。入变化后立即发生的,不依赖时钟的同步。 MooreMoore型属于型属于同步输出状态机,其输出仅为当前状态的函数,这类状态同步输出状态机,其输

38、出仅为当前状态的函数,这类状态机在输入发生变化时必须等待时钟的到来,时钟使状态发机在输入发生变化时必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。生变化时才导致输出的变化。图图13.613.6 ADC0809工作时序工作时序 二、二、Moore状态机状态机1 1、 多进程状态机多进程状态机 图图13.7 13.7 控制控制ADC0809采样状态图采样状态图 5.2.1 5.2.1 多进程状态机多进程状态机 图图13.813.8 采样状态机结构框图采样状态机结构框图 【例例13.313.3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY

39、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_LOGIC; -数据输出数据输出3态控制信号态控制信号ADDA : OUT S

40、TD_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_VE

41、CTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; - 转换后数据输出锁存时钟信号转换后数据输出锁存时钟信号 BEGINADDA = 1;-当当ADDA=0,模拟信号进入通道模拟信号进入通道IN0;当;当ADDA=1,则进入通道则进入通道IN1Q = REGL; LOCK0 ALE=0;START=0;LOCK=0;OE=0; next_state ALE=1;START=1;LOCK=0;OE=0;next_state ALE=0;START=0;LOCK=0;OE=0; IF (EOC=1) THEN next_state = st3; -EOC=1表明转

42、换结束表明转换结束 ELSE next_state ALE=0;START=0;LOCK=0;OE=1; next_state ALE=0;START=0;LOCK=1;OE=1;next_state next_state = st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN current_state=next_state; END IF; END PROCESS REG ; - 由信号由信号current_state将当前状态值带出此进程将当前状态值带出此进程:RE

43、G LATCH1: PROCESS (LOCK) - 此进程中,在此进程中,在LOCK的上升沿,将转换好的数据锁入的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL next_state next_state IF (EOC=1) THEN next_state = st3; ELSE next_state next_state next_state next_state ALE=0;START=0;LOCK=0;OEALE=1;START=1;LOCK=0;OEALE=0;START=0;LOCK=0;OEALE=0;START=0;

44、LOCK=0;OEALE=0;START=0;LOCK=1;OE ALE=0;START=0;LOCK=0; END CASE ; END PROCESS COM2 ; 【例例13.513.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);END MOORE1;ARCHITECTURE behav OF MOOR

45、E1 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 IF DATAIN =10 THEN C_ST = ST1 ; ELSE C_ST = ST0 ; END IF; Q IF DATAIN =11 THEN C_ST = ST2 ; ELSE C_ST = ST1 ;END IF; Q IF DATAIN =01 THEN C_ST = ST3 ; ELSE C_ST = ST0 ;E

46、ND IF; Q IF DATAIN =00 THEN C_ST = ST4 ; ELSE C_ST = ST2 ;END IF; Q IF DATAIN =11 THEN C_ST = ST0 ; ELSE C_ST = ST3 ;END IF; Q C_ST = ST0; END CASE; END IF; END PROCESS;END behav; 图图13.1013.10 例例13.5状态机综合后的部分主要状态机综合后的部分主要RTL电路模块(电路模块(Synplify综合)综合) 图图13.1113.11 例例13.5单进程状态机工作时序单进程状态机工作时序 图图13.1213.1

47、2 对应例对应例13.513.5的二进程状态机工作时序图的二进程状态机工作时序图 【例例13.613.6】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT ( CLK ,DATAIN,RESET : IN STD_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 ; BEGI

48、N 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 DATAIN = 1 THEN STX STX IF DATAIN = 1 THEN Q = 10000 ; ELSE Q IF DATAIN = 0 THEN Q = 10111 ; ELSE Q IF DATAIN = 1 THEN Q = 10101

49、 ; ELSE Q IF DATAIN = 0 THEN Q = 11011 ; ELSE Q IF DATAIN = 1 THEN Q = 11101 ; ELSE Q Q=00000 ; END CASE ; END PROCESS COM1 ;END behav; 【例例13.713.7】LIBRARY IEEE; -MEALY 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 M

50、EALY2;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) -决定转换状态的进程决定转换状态的进程 BEGIN IF RESET =1 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATA

51、IN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN=1 THEN 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 DA

52、TAIN=1 THEN Q2 :=11101; ELSE Q2:=01101; END IF; WHEN OTHERS = Q2:=00000 ; END CASE ; IF CLKEVENT AND CLK = 1 THEN Q1=Q2; END IF; END PROCESS COM1 ; Q = Q1 ;END behav; 图图13.1313.13 例例13.6状态机工作时序图状态机工作时序图 图图13.1413.14 例例13.7状态机工作时序图状态机工作时序图 表表13.113.1 控制信号状态编码表控制信号状态编码表 状态状态 状状 态态 编编 码码STARTALEOELOCKB

53、功功 能能 说说 明明ST0 00000初始态初始态ST111000启动转换启动转换ST200001若测得若测得EOC=1时,转下一状态时,转下一状态ST3ST300100输出转换好的数据输出转换好的数据ST400110利用利用LOCK的上升沿将转换好的数据锁存的上升沿将转换好的数据锁存四四 、状态编码、状态编码1 1、 直接输出型编码直接输出型编码5.4 5.4 状态编码状态编码 5.4.1 5.4.1 直接输出型编码直接输出型编码 【例例13.8】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS. PORT (D : IN

54、STD_LOGIC_VECTOR(7 DOWNTO 0); CLK ,EOC : IN STD_LOGIC; ALE, START, 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_

55、LOGIC_VECTOR(4 DOWNTO 0) := 00000 ; CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 11000 ; 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);

56、SIGNAL LOCK : STD_LOGIC; BEGIN ADDA = 1; Q = REGL; START=current_state(4); ALE=current_state(3); OE=current_state(2); LOCK=current_state(1);c_state next_state next_state IF (EOC=1) THEN next_state = st3; -EOC=1表明转换结束表明转换结束 ELSE next_state next_state next_state next_state = st0; END CASE ; END PROCES

57、S COM ; REG: PROCESS (CLK) BEGIN IF (CLKEVENT 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 next_state next_state next_s

58、tate = st0; END case; 【例例13.11】.alarm = (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

59、 st3 OR st4) ; 五五 、状态机举例(序列信号检测器)、状态机举例(序列信号检测器)图图13.17 13.17 序列信号检测器的状态图序列信号检测器的状态图 (QuartusII)本章小结本章小结数字系统指的是交互式的、以离散形式表示的,数字系统指的是交互式的、以离散形式表示的,具有存储、传输、信息处理能力的逻辑子系统具有存储、传输、信息处理能力的逻辑子系统的集合。用于描述数字系统的模型有多种,各的集合。用于描述数字系统的模型有多种,各种模型描述数字系统的侧重点不同。数字系统种模型描述数字系统的侧重点不同。数字系统一般划分为两个模块或两个子系统:数据处理一般划分为两个模块或两个子系

60、统:数据处理子系统和控制子系统。子系统和控制子系统。数字系统设计有多种方法,如自顶向下设计数字系统设计有多种方法,如自顶向下设计法和自底向上设计法等。数字系统的设计一法和自底向上设计法等。数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方般采用自顶向下、由粗到细、逐步求精的方法。法。 进行数字系统设计时,通常需要考虑多方面进行数字系统设计时,通常需要考虑多方面的条件和要求,实现的方法也各不相同,但的条件和要求,实现的方法也各不相同,但数字系统设计还是具备一些共同的方法和准数字系统设计还是具备一些共同的方法和准则的。则的。状态机克服了纯硬件数字系统顺序方式控制状态机克服了纯硬件数字系统顺序方

61、式控制不灵活的缺点,与不灵活的缺点,与VHDL的其他描述方式相的其他描述方式相比,状态机的比,状态机的VHDL表述丰富多样、程序层表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处。改和模块移植方面也有其独到的好处。从状态机的信号输出方式上分,有从状态机的信号输出方式上分,有Moore型型和和Mealy型两类状态机。从输出时序上看,型两类状态机。从输出时序上看,Mealy型属于异步输出状态机,其输出是当型属于异步输出状态机,其输出是当前状态和所有输入信号的函数,前状态和所有输入信号的函数,Moore型属型属于同步输出状态机,其输出仅为当前状态的于同步输出状态机,其输出仅为当前状态的函数。函数。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号