《数字系统设计基础幻灯片.ppt》由会员分享,可在线阅读,更多相关《数字系统设计基础幻灯片.ppt(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数字系统设计基础第1页,共89页,编辑于2022年,星期六第第 13 章数字系统设计基础章数字系统设计基础数字系统的设计模型数字系统的设计模型数字系统的设计方法数字系统的设计方法 数字系统的设计准则数字系统的设计准则 数字系统的设计步骤数字系统的设计步骤本章小结本章小结数字系统设计举例数字系统设计举例VHDLVHDL状态机状态机第2页,共89页,编辑于2022年,星期六13.1数字系统的设计模型数字系统的设计模型 数字系统指的是交互式的、以离散形式表示的,具有存数字系统指的是交互式的、以离散形式表示的,具有存储、传输、信息处理能力的逻辑子系统的集合。用于描述储、传输、信息处理能力的逻辑子系统的
2、集合。用于描述数字系统的模型有多种,各种模型描述数字系统的侧重点数字系统的模型有多种,各种模型描述数字系统的侧重点不同。图不同。图13.1介绍了一种普遍采用的模型。这种模型根据数介绍了一种普遍采用的模型。这种模型根据数字系统的定义,将整个系统划分为两个模块或两个子系统:字系统的定义,将整个系统划分为两个模块或两个子系统:数据处理子系统和控制子系统。数据处理子系统和控制子系统。第3页,共89页,编辑于2022年,星期六图13.1 数字系统的设计模型第4页,共89页,编辑于2022年,星期六 数据处理子系统主要完成数据的采集、存储、运算和传数据处理子系统主要完成数据的采集、存储、运算和传输。输。数
3、据处理子系统主要由存储器、运算器、数据选择器数据处理子系统主要由存储器、运算器、数据选择器等功能电路组成。等功能电路组成。数据处理子系统与外界进行数据交换,在控制子系统数据处理子系统与外界进行数据交换,在控制子系统(或称或称控制器控制器)发出的控制信号作用下,数据处理子系统将进行数据的存发出的控制信号作用下,数据处理子系统将进行数据的存储和运算等操作。储和运算等操作。控制子系统是执行数字系统算法的核心,具有记忆控制子系统是执行数字系统算法的核心,具有记忆功能,因此控制子系统是时序系统。控制子系统由组合逻功能,因此控制子系统是时序系统。控制子系统由组合逻辑电路和触发器组成,与数据处理子系统共用时
4、钟。辑电路和触发器组成,与数据处理子系统共用时钟。第5页,共89页,编辑于2022年,星期六 把数字系统划分为控制子系统和数据处理子系统两个把数字系统划分为控制子系统和数据处理子系统两个主要部分,使设计者面对的电路规模减小,二者可以分别主要部分,使设计者面对的电路规模减小,二者可以分别设计设计;由于数字系统中控制子系统的逻辑关系比较复杂,将其由于数字系统中控制子系统的逻辑关系比较复杂,将其独立划分出来后,可突出设计重点和分散设计难点;独立划分出来后,可突出设计重点和分散设计难点;当数字系统划分为控制子系统和数据处理子系统后,逻辑分当数字系统划分为控制子系统和数据处理子系统后,逻辑分工清楚,各自
5、的任务。工清楚,各自的任务。第6页,共89页,编辑于2022年,星期六13.2数字系统的设计方法数字系统的设计方法 数字系统设计有多种方法,如模块设计法、自顶数字系统设计有多种方法,如模块设计法、自顶向下设计法和自底向上设计法等。数字系统的设计一向下设计法和自底向上设计法等。数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方法。般采用自顶向下、由粗到细、逐步求精的方法。第7页,共89页,编辑于2022年,星期六一、自底向上的设计方法一、自底向上的设计方法 传统的电子设计流程通常是传统的电子设计流程通常是自底向上自底向上的,即首先确定的,即首先确定构成系统的最底层的电路模块或元件的结构和功能
6、,构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的然后根据主系统的功能要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系统的要求。功能块,使它们的结构和功能满足高层系统的要求。以此流程,逐步向上递推,直至完成整个目标系统以此流程,逐步向上递推,直至完成整个目标系统的设计。的设计。第8页,共89页,编辑于2022年,星期六系统测试与性能分析完整系统功能模块基本元器件 缺点:缺点:1、设计过程依赖现有的通、设计过程依赖现有的通用元器件、手工及经验;用元器件、手工及经验;2、设计后期的仿真和调试、设计后期的仿真和调试3、自下而上思想的局限性、自下而
7、上思想的局限性4、设计周期长、灵活性差、设计周期长、灵活性差、效率低效率低传统电路设计方法:传统电路设计方法:自下而上(自下而上(Bottom-Up)的设计方法)的设计方法第9页,共89页,编辑于2022年,星期六二、自顶向下的设计方法二、自顶向下的设计方法 将数字系统的整体逐步分解为各个子系统和模块,将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模快,层层分解,直至整个系统中各个小的子系统和模快,层层分解,直至整个系统中各个子系统关系合理,并便于逻辑电路级的设计和实现为子系统关系合理,并便于
8、逻辑电路级的设计和实现为止。自上而下设计中可逐层描述,逐层仿真,保证满止。自上而下设计中可逐层描述,逐层仿真,保证满足系统指标。足系统指标。第10页,共89页,编辑于2022年,星期六 自顶向下设计方法是一种模块化设计方法。对设计的描自顶向下设计方法是一种模块化设计方法。对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯;述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯;针对具体的设计,实施自顶向下的设计方法的形式会有所针对具体的设计,实施自顶向下的设计方法的形式会有所不同,但均需遵循以下两条原则:逐层分解功能和分层次进行不同,但均需遵循以下两条原则:逐层分解功能和分层次进行设计。
9、同时,应在各个设计层次上,考虑相应的仿真验证问题。设计。同时,应在各个设计层次上,考虑相应的仿真验证问题。适合多个设计者同时进行设计。随着技术的不断进步,适合多个设计者同时进行设计。随着技术的不断进步,许多设计由一个设计者已无法完成,由多个设计者分工协作许多设计由一个设计者已无法完成,由多个设计者分工协作完成一项设计的情况越来越多完成一项设计的情况越来越多;第11页,共89页,编辑于2022年,星期六13.3数字系统的设计准则数字系统的设计准则 进行数字系统设计时,通常需要考虑多方面的条件和进行数字系统设计时,通常需要考虑多方面的条件和要求,如设计的功能和性能要求,元器件的资源分配和设要求,如
10、设计的功能和性能要求,元器件的资源分配和设计工具的可实现性,系统的开发费用和成本等。虽然具体计工具的可实现性,系统的开发费用和成本等。虽然具体设计的条件和要求千差万别,实现的方法也各不相同,但设计的条件和要求千差万别,实现的方法也各不相同,但数字系统设计还是具备一些共同的方法和准则的。数字系统设计还是具备一些共同的方法和准则的。第12页,共89页,编辑于2022年,星期六一、分割准则一、分割准则 自顶向下的设计方法或其他层次化的设计方法,自顶向下的设计方法或其他层次化的设计方法,需要对系统功能进行分割,然后用逻辑语言进行描需要对系统功能进行分割,然后用逻辑语言进行描述。分割过程中,若分割过粗,
11、则不易用逻辑语言述。分割过程中,若分割过粗,则不易用逻辑语言表达;分割过细,则带来不必要的重复和繁琐。表达;分割过细,则带来不必要的重复和繁琐。二、系统的可观测性二、系统的可观测性 在系统设计中,应该同时考虑功能检查和性能的测试,在系统设计中,应该同时考虑功能检查和性能的测试,即系统观测性的问题。一些有经验的设计者会自觉地在即系统观测性的问题。一些有经验的设计者会自觉地在设计系统的同时设计观测电路,即观测器,指示系统内设计系统的同时设计观测电路,即观测器,指示系统内部的工作状态。部的工作状态。第13页,共89页,编辑于2022年,星期六三、同步和异步电路三、同步和异步电路 异步电路会造成较大延
12、时和逻辑竞争,容易引起系异步电路会造成较大延时和逻辑竞争,容易引起系统的不稳定,而同步电路则是按照统一的时钟工作,统的不稳定,而同步电路则是按照统一的时钟工作,稳定性好。因此,在设计时应尽可能采用同步电路进稳定性好。因此,在设计时应尽可能采用同步电路进行设计,避免使用异步电路。在必须使用异步电路时,行设计,避免使用异步电路。在必须使用异步电路时,应采取措施来避免竞争和增加稳定性。应采取措施来避免竞争和增加稳定性。四、最优化设计四、最优化设计 由于可编程器件的逻辑资源、连接资源和由于可编程器件的逻辑资源、连接资源和I/O资源有资源有限,器件的速度和性能也是有限的,用器件设计系统的限,器件的速度和
13、性能也是有限的,用器件设计系统的过程相当于求最优解的过程,因此,需要给定两个约束过程相当于求最优解的过程,因此,需要给定两个约束条件:边界条件和最优化目标。条件:边界条件和最优化目标。第14页,共89页,编辑于2022年,星期六五、系统设计的艺术五、系统设计的艺术 一个系统的设计,通常需要经过反复的修改、优化一个系统的设计,通常需要经过反复的修改、优化才能达到设计的要求。一个好的设计,应该满足才能达到设计的要求。一个好的设计,应该满足“和和谐谐”的基本特征,对数字系统可以根据以下几点做出的基本特征,对数字系统可以根据以下几点做出判断:设计是否总体上流畅,无拖泥带水的感觉;资判断:设计是否总体上
14、流畅,无拖泥带水的感觉;资源分配、源分配、I/O分配是否合理,设计上和性能上是否有瓶分配是否合理,设计上和性能上是否有瓶颈,系统结构是否协调;是否具有良好的可观测性;颈,系统结构是否协调;是否具有良好的可观测性;是否易于修改和移植;器件的特点是否能得到充分的是否易于修改和移植;器件的特点是否能得到充分的发挥。发挥。第15页,共89页,编辑于2022年,星期六 数字系统设计中的第一步是明确系统的任务。在设计数字系统设计中的第一步是明确系统的任务。在设计任务书中,可用各种方式提出对整个数字系统的逻辑要求,任务书中,可用各种方式提出对整个数字系统的逻辑要求,常用的方式有自然语言、逻辑流程图、时序图或
15、几种方法常用的方式有自然语言、逻辑流程图、时序图或几种方法的结合。当系统较大或逻辑关系较复杂时,系统任务的结合。当系统较大或逻辑关系较复杂时,系统任务(逻辑逻辑要求要求)逻辑的表述和理解都不是一件容易的工作。所以,分逻辑的表述和理解都不是一件容易的工作。所以,分析系统的任务必须细致、全面,不能有理解上的偏差和疏析系统的任务必须细致、全面,不能有理解上的偏差和疏漏。漏。一、系统任务分析一、系统任务分析13.4数字系统的设计步骤数字系统的设计步骤第16页,共89页,编辑于2022年,星期六二、确定逻辑算法二、确定逻辑算法 实现系统逻辑运算的方法称为逻辑算法,也简称为算法。实现系统逻辑运算的方法称为
16、逻辑算法,也简称为算法。一个数字系统的逻辑运算往往有多种算法,设计者的任务一个数字系统的逻辑运算往往有多种算法,设计者的任务不但是要找出各种算法,还必须比较优劣,取长补短,从不但是要找出各种算法,还必须比较优劣,取长补短,从中确定最合理的一种。数字系统的算法是逻辑设计的基础,中确定最合理的一种。数字系统的算法是逻辑设计的基础,算法不同,则系统的结构也不同,算法的合理与否直接影算法不同,则系统的结构也不同,算法的合理与否直接影响系统结构的合理性。确定算法是数字系统设计中最具创响系统结构的合理性。确定算法是数字系统设计中最具创造性的一环,也是最难的一步。造性的一环,也是最难的一步。第17页,共89
17、页,编辑于2022年,星期六三、建立系统及子系统模型三、建立系统及子系统模型 当算法明确后,应根据算法构造系统的硬件框架当算法明确后,应根据算法构造系统的硬件框架(也称为系统框图也称为系统框图),将系统划分为若干个部分,各,将系统划分为若干个部分,各部分分别承担算法中不同的逻辑操作功能。如果某部分分别承担算法中不同的逻辑操作功能。如果某一部分的规模仍嫌大,则需进一步划分。划分后的一部分的规模仍嫌大,则需进一步划分。划分后的各个部分应逻辑功能清楚,规模大小合适,便于进各个部分应逻辑功能清楚,规模大小合适,便于进行电路级的设计。行电路级的设计。第18页,共89页,编辑于2022年,星期六四、系统(
18、或模块)逻辑描述四、系统(或模块)逻辑描述 当系统中各个子系统当系统中各个子系统(指最低层子系统指最低层子系统)和模块的逻和模块的逻辑功能和结构确定后,则需采用比较规范的形式来描辑功能和结构确定后,则需采用比较规范的形式来描述系统的逻辑功能。设计方案的描述方法可以有多种,述系统的逻辑功能。设计方案的描述方法可以有多种,常用的有方框图、流程图和描述语言等。常用的有方框图、流程图和描述语言等。对系统的逻辑描述可先采用较粗略的逻辑流程图,再将对系统的逻辑描述可先采用较粗略的逻辑流程图,再将逻辑流程图逐步细化为详细逻辑流程图,最后将详细逻辑逻辑流程图逐步细化为详细逻辑流程图,最后将详细逻辑流程图表示成
19、与硬件有对应关系的形式,为下一步的电路流程图表示成与硬件有对应关系的形式,为下一步的电路级设计提供依据。级设计提供依据。第19页,共89页,编辑于2022年,星期六五、逻辑电路级设计及系统仿真五、逻辑电路级设计及系统仿真 电路级设计是指选择合理的器件和连接关系以实现系电路级设计是指选择合理的器件和连接关系以实现系统逻辑要求。电路级设计的结果常采用两种方式来表达:统逻辑要求。电路级设计的结果常采用两种方式来表达:电路图方式和硬件描述语言方式。电路图方式和硬件描述语言方式。EDA软件允许以这两种软件允许以这两种方式输入,以便作后续的处理。方式输入,以便作后续的处理。第20页,共89页,编辑于202
20、2年,星期六六、系统的物理实现六、系统的物理实现 物理实现是指用实际的器件实现数字系统的设计,物理实现是指用实际的器件实现数字系统的设计,用仪表测量设计的电路是否符合设计要求。现在的数用仪表测量设计的电路是否符合设计要求。现在的数字系统往往采用大规模和超大规模集成电路,由于器字系统往往采用大规模和超大规模集成电路,由于器件集成度高、导线密集,故一般在电路设计完成后即件集成度高、导线密集,故一般在电路设计完成后即设计印刷电路板,在印刷电路板上组装电路进行测试。设计印刷电路板,在印刷电路板上组装电路进行测试。需要注意的是,印刷电路板本身的物理特性也会影响需要注意的是,印刷电路板本身的物理特性也会影
21、响电路的逻辑关系。电路的逻辑关系。第21页,共89页,编辑于2022年,星期六13.5数字系统的设计举例数字系统的设计举例【例【例13.1】数字频率计的设计】数字频率计的设计 1.方案构思:方案构思:8位十进制数字频率计可以由一个测频控制位十进制数字频率计可以由一个测频控制信号发生器信号发生器TESTCTL、八个有时钟使能的十进、八个有时钟使能的十进制计数器制计数器CNT10、一个、一个32位锁存器位锁存器REG32B组组成。成。第22页,共89页,编辑于2022年,星期六 2.顶层电路的设计及顶层电路的设计及VHDL实现:实现:1)顶层电路逻辑图顶层电路逻辑图 图13.2 8位十进制数字频率
22、计逻辑图 第23页,共89页,编辑于2022年,星期六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 STD_LOGIC_VECTOR(31 DOWNTO 0);nEND ENTITY FREQ;nARCHITECTURE ART OF FREQ IS第24页,共89页,编辑于2022年,星期六nCOMPONENT CNT10 IS n -待调用的有时钟使能的十进制计数器端口定义n
23、 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 -待调用的测频控制信号发生器端口定义第25页,共89页,编辑于2022年,星期六n nSIGNAL SE,SC,SL:STD_LOGIC;nSIGNAL S1,S2,S3,S4,S5,S6,S7,S7,S8:STD_LOGIC;nSIGNA
24、L 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 -名字关联第26页,共89页,编辑于2022年,星期六nU2:CNT10 PORT MAP(CLK=S1,CLR=SC,ENA=SE,CQ=SD(7 DOWNTO 4),CARRY_OUT=S2);nU3:CNT10 PORT MAP(S2,SC,SE
25、,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 DOWNTO 24),S7);nU8:CNT10 PORT MAP(S7,SC,SE,SD(31 DOWNTO 28),S8);nU9:REG32B PORT MAP(LOAD=SL,D
26、IN=SD(31 DOWNTO 0),DOUT=DOUT);nEND ARCHITECTURE ART;第27页,共89页,编辑于2022年,星期六 3.次级模块电路的分析与设计:次级模块电路的分析与设计:1)32位锁存器位锁存器REG32B的设计的设计 设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。第28页,共89页,编辑于2022年,星期六2)32位锁存器的位锁存器的VHDL源程序源程序nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;nENTITY REG32B IS n PORT(LOAD:IN STD_LOGIC;n DI
27、N:IN STD_LOGIC_VECTOR(31 DOWNTO 0);n DOUT:OUT STD_LOGEC_VECTOR(31 DOWNTO 0);nEND ENTITY REG32B;第29页,共89页,编辑于2022年,星期六nARCHITECTURE ART OF REG32B IS nBEGINnPROCESS(LOAD,DIN)ISnBEGINnIF LOAD EVENT AND LOAD=1 THEN DOUT=DIN;-锁存输入数据n END IF;nEND PROCESS;nEND ARCHITECTURE ART;第30页,共89页,编辑于2022年,星期六3)十进制计数
28、器十进制计数器CNT10的设计的设计n 此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时计数禁止。第31页,共89页,编辑于2022年,星期六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
29、位计数结果输出n CARRY_OUT:OUT STD_LOGIC);-计数进位第32页,共89页,编辑于2022年,星期六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 第33页,共89页,编辑于2022年,星期六n IF CQI9 THEN CQI=CQI+1
30、;n ELSE CQI=0;END IF-等于9,则计数器清零n END 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;第34页,共89页,编辑于2022年,星期六4、测频控制信号发生器设计测频控制信号发生器设计 频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。测频控制信号发生器的工作时序如图13.3所示。为了产生这个时序图,需首先建
31、立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。第35页,共89页,编辑于2022年,星期六图13.3 测频控制信号发生器工作时序第36页,共89页,编辑于2022年,星期六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
32、_LOGIC;-计数器清零n LOAD:OUT STD_LOGIC);-输出锁存信号第37页,共89页,编辑于2022年,星期六nEND ENTITY TESTCTL;nARCHITECTURE ART OF TESTCTL IS nSIGNAL DIV2CLK:STD_LOGIC;nBEGINnPROCESS(CLK)ISn BEGINnIF CLKEVENT AND CLK=1 THEN -1 HZ时钟二分频nDIV2CLK=NOT DIV2CLK;nEND IF;第38页,共89页,编辑于2022年,星期六nEND PROCESS;nPROCESS(CLK,DIV2CLK)ISnBEGI
33、N 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;TSTEN=DIV2CLK;nEND ARCHITECTURE ART;第39页,共89页,编辑于2022年,星期六13.6VHDL状态机状态机 状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;由于状态机的结构相对简单,设计方案相对固定,容由于状态机的结构相对简单,设计方案相对固定,容易构成性能良好的同步时序逻辑模块
34、;易构成性能良好的同步时序逻辑模块;在高速运算和控制方面,状态机更有其巨大的优势;在高速运算和控制方面,状态机更有其巨大的优势;高可靠性。高可靠性。与与VHDLVHDL的其他描述方式相比,状态机的的其他描述方式相比,状态机的VHDLVHDL表述丰富多样、程表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处;也有其独到的好处;第40页,共89页,编辑于2022年,星期六一、状态机设计相关语句一、状态机设计相关语句 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本
35、数据类型;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,st2,st3,st4,st5);SIGNAL present_state,next_state :m_state ;1 1、类型定义语句类型定义语句 第41页,共89页,编辑于2022年,星期六(1).说明部分说明部分 ARCHITECTURE.IS TYPE FSM_ST IS(s0,s1,s2,s3);SI
36、GNAL current_state,next_state:FSM_ST;.2 2、状态机结构状态机结构 第42页,共89页,编辑于2022年,星期六(2).主控时序进程主控时序进程 图图13.4 13.4 一般状态机结构框图一般状态机结构框图 2 2、状态机结构状态机结构 第43页,共89页,编辑于2022年,星期六(3).主控组合进程主控组合进程(4).辅助进程辅助进程 2 2、状态机结构状态机结构 第44页,共89页,编辑于2022年,星期六【例【例13.2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS PORT
37、(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(rese
38、t,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 next_state comb_outputs=8;IF state_inputs=00 THEN next_state=s1;ELSE next_state comb_outputs=12;IF state_inputs=11 THEN n
39、ext_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;第46页,共89页,编辑于2022年,星期六图图13.5 13.5 例例13.213.2状态机的工作时序状态机的工作时序 第47页,共89页,编辑于2022年,星期六3 3、状态机类型状态机类型 从状态机的信号输出方式上分,有从状态机的信号输出方式上分,有MooreMoore型和型和MealyMealy型两类状态机。型两
40、类状态机。从输出时序上看,从输出时序上看,MealyMealy型属于异步输出状态机,其输型属于异步输出状态机,其输出是当前状态和所有输入信号的函数,它的输出是在输入变出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。化后立即发生的,不依赖时钟的同步。Moore Moore型属于同步输型属于同步输出状态机,其输出仅为当前状态的函数,这类状态机在输入出状态机,其输出仅为当前状态的函数,这类状态机在输入发生变化时必须等待时钟的到来,时钟使状态发生变化时才发生变化时必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。导致输出的变化。第48页,共89页,编辑于2
41、022年,星期六图图13.613.6 ADC0809工作时序工作时序 二、二、Moore状态机状态机1 1、多进程状态机多进程状态机 第49页,共89页,编辑于2022年,星期六图图13.7 13.7 控制控制ADC0809采样状态图采样状态图 第50页,共89页,编辑于2022年,星期六5.2.1 5.2.1 多进程状态机多进程状态机 图图13.813.8 采样状态机结构框图采样状态机结构框图 第51页,共89页,编辑于2022年,星期六【例【例13.313.3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D
42、: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 STD_LOGIC;-信号通道最低位控制信号信号通道最低位控
43、制信号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 LOCK :STD_LOGIC;-转换后数据
44、输出锁存时钟信号转换后数据输出锁存时钟信号 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表明转换结束表明转换结束 ELSE next_state ALE=0;START=0;LOCK=0;OE=1;next_sta
45、te 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将当前状态值带出此进程将当前状态值带出此进程:REG LATCH1:PROCESS(LOCK)-此进程中,在此进程中,在LOCK的上升沿,将转换好的数据锁入的上升沿,将转换好的数据锁入 BEGIN IF L
46、OCK=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;LOCK=0;OEALE=0;START=0;LOCK=1;OE ALE=0;START=0;LOCK=0;END CASE;END PROCESS COM2;第55页,共8
47、9页,编辑于2022年,星期六【例【例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 MOORE1 IS TYPE ST_TYPE IS(ST0,ST1,ST2,ST3,ST4);SIGNAL C_ST:ST_TYPE;BEGIN PROCESS
48、(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;END 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;E
49、ND CASE;END IF;END PROCESS;END behav;第57页,共89页,编辑于2022年,星期六图图13.1013.10 例例13.5状态机综合后的部分主要状态机综合后的部分主要RTL电路模块(电路模块(Synplify综合)综合)第58页,共89页,编辑于2022年,星期六图图13.1113.11 例例13.5单进程状态机工作时序单进程状态机工作时序 第59页,共89页,编辑于2022年,星期六图图13.1213.12 对应例对应例13.513.5的二进程状态机工作时序图的二进程状态机工作时序图 第60页,共89页,编辑于2022年,星期六【例【例13.613.6】LI
50、BRARY 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 ;BEGIN COMREG:PROCESS(CLK,RESET)BEGIN-决定转换状态的进程决定转换状态的进程 IF RESET=1 THEN STX