第6章有限状态机设计_第1页
第6章有限状态机设计_第2页
第6章有限状态机设计_第3页
第6章有限状态机设计_第4页
第6章有限状态机设计_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第章有限状态机设计 VHDL综合器易于优化 易构成性能良好的时序逻辑模块 结构模式简单、层次分明、易读易懂、易排错 运行模式类似于CPU,易于进行顺序控制 利用同步时序和全局时钟线可实现高速FSM 高可靠性,非法状态易控制 一、概述(4)辅助进程 用于配合状态机工作的组合进程或时序进程,例如为了完成某种算法的进程;或用于配合状态机工作的其他时序进程,例如为了稳定输出设置的数据锁存器等。 二、一般有限状态机的设计1、一般有限状态机的组成 ()说明部分 说明部分中使用TYPE语句定义新的数据类型,此数据类型一般为枚举类型 例如:TYPE state_type IS (start_state,run

2、_state,error_state);SIGNAL state:state_type; 说明部分一般放在结构体的ARCHITECTURE和BEGIN之间。()时序进程时序进程是指负责状态机运转和在时钟驱动下负责状态转换的进程。作为状态机的“驱动泵”。(3)组合进程组合进程的任务是根据外部输入的控制信号,和当前状态的状态值确定下一状态的去向,以及确定对外输出或对内部其他组合或时序进程输出控制信号的内容。【例6-1】-一般状态机描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS PORT(clk,reset:IN STD_

3、LOGIC; state_inputs:IN STD_LOGIC_VECTOR(0 TO 1); comb_outputs:OUT STD_LOGIC_VECTOR(0 TO 1);END s_machine;ARCHITECTURE behave OF s_machine IS TYPE states IS(st0,st1,st2,st3); -定义states为枚举型数据类型 SIGNAL current_state,next_state:states; BEGINREG:PROCESS(reset,clk) -时序逻辑进程 BEGIN IF reset=1 THEN -异步复位 curr

4、ent_state=st0; ELSIF(clk=1AND clkEVENT)THEN current_statecomb_outputs=00; -初始态译码输出 IF state_inputs=00 THEN -根据外部的状态控制输入“00” next_state=st0; -在下一时钟后,进程REG的状态维持为st0 ELSE next_statecomb_outputs=01; -对应st1的译码输出“01” IF state_inputs=00 THEN -根据外部的状态控制输入“00” next_state=st1; -在下一时钟后,进程REG的状态将维持为st1 ELSE nex

5、t_statecomb_outputs=10; -以下依次类推 IF state_inputs=11 THEN next_state=st2; ELSE next_statecomb_outputs=11; IF state_inputs=11 THEN next_state=st3; ELSE next_state CS=1; A0=0; RC=0; LOCK=0; next_state CS=0; A0=0; RC=0; LOCK=0; next_state CS=0; A0=0; RC=0; LOCK=0; IF (STATUS=1) THEN next_state = st2;ELSE

6、 next_state CS=0; A0=0; RC=1; LOCK=0; next_state CS=0; A0=1; RC=1; LOCK=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; LATCH: PROCESS (LOCK) BEGIN IF LOCK=1 AND LOCKEVENT THEN REG

7、L = D ; END IF; END PROCESS ; Q = REGL; END behav; 状态机状态机VHDL源程序源程序状态机工作时序图状态状态2:等待:等待四、Mealy型有限状态机的设计 组合逻辑寄存器inputsclkreset当前状态outputsMealy状态机的框图 【例6-4】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;ENTITY mealy1 IS PORT(clk,datain,reset:IN std_logic;q:OUT std_logic_vector(4 DOWNTO 0);END mealy1;ARCHITEC

8、TURE behave OF mealy1 IST Y P E s t a t e s I S (st0,st1,st2,st3,st4);SIGNAL stx: states;BEGINcomreg: PROCESS(clk,reset) -决定转换状态的进程BEGINIF reset =1 THENstxIF datain=1 THEN stxIF datain=0 THEN stxIF datain=1 THEN stxIF datain=0 THEN stxIF datain=1 THEN stxstxIF datain =1 THEN q=10000;ELSE qIF datain

9、=0 THEN q=10111;ELSE qIF datain =1 THEN q=10101;ELSE qIF datain =0 THEN q=11011;ELSE qIF datain =1 THEN q=11101;ELSE qqnext_state next next next =st0; VHDL基本语法小结基本语法小结 6 状态编码符号化,用户数据类型和子类型定义: TYPE,SUBTYPE定义FSM的现态和次态:current_state , next_state 可设置多个进程:至少含一个主控时序进程和一个主控组合进程 主控时序进程作为FSM的驱动泵;主控组合进程控制FSM的

10、工作顺序 组合进程中使用 CASE 语句 其它辅助进程可以有时序和组合进程 配合FSM主机工作 可以有多个FSM并行工作 对于多个FSM,采用单一时钟同步时序 容易协调控制所有FSM的工作EDAEDA技术技术及应用及应用第第7章章 数字电子系统设计实践数字电子系统设计实践EDA应用示例介绍一、移位相加8位硬件乘法器电路设计 l硬件乘法器的功能硬件乘法器的功能 -实现两个实现两个8位二进制数的乘法运算位二进制数的乘法运算 l硬件乘法器的设计思路硬件乘法器的设计思路硬件乘法器的乘法运算可以通过逐项移位相加原理来硬件乘法器的乘法运算可以通过逐项移位相加原理来实现,从被乘数的最低位开始,若为实现,从被

11、乘数的最低位开始,若为1,则乘数左,则乘数左移后与上一次的和相加;若为移后与上一次的和相加;若为0,左移后以全零相,左移后以全零相加,直至被乘数的最高位。加,直至被乘数的最高位。 硬件乘法器的设计 右移寄存器 模块设计nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;nENTITY sreg8b IS -8位右移寄存器位右移寄存器n PORT ( clk : IN STD_LOGIC; LOAD : IN STD_LOGIC;n din : IN STD_LOGIC_VECTOR(7 DOWNTO 0);n qb : OUT STD_LOGIC );nEND

12、 sreg8b;nARCHITECTURE behave OF sreg8b ISn SIGNAL reg8 : STD_LOGIC_VECTOR(7 DOWNTO 0);nBEGINn PROCESS (clk, load)n BEGINn IF load = 1 THEN reg8 = din; -装载新数据装载新数据n ELSIF CLKEVENT AND CLK = 1 THENn reg8(6 DOWNTO 0) = reg8(7 DOWNTO 1); -数据右移数据右移n END IF;n END PROCESS;n qb = reg8(0); -输出最低位输出最低位nEND be

13、have;8位加法器模块设计nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;nUSE IEEE.STD_LOGIC_UNSIGNED.ALL;nENTITY adder8 ISn PORT(b, a : IN STD_LOGIC_VECTOR(7 DOWNTO 0);n s : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) );nEND adder8;nARCHITECTURE behav OF adder8 ISn BEGINn s = 0&a + b ;nEND behave; 选通与门模块设计nLIBRARY IEEE;

14、nUSE IEEE.STD_LOGIC_1164.ALL;nENTITY andarith IS n PORT ( abin : IN STD_LOGIC;n din : IN STD_LOGIC_VECTOR(7 DOWNTO 0);n dout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );nEND andarith;nARCHITECTURE behave OF andarith ISnBEGINn PROCESS(abin, din)n BEGINn FOR I IN 0 TO 7 LOOP - 循环,完成循环,完成8位与位与1位运算位运算n DOUT(I)

15、 = DIN(I) AND ABIN;n END LOOP;n END PROCESS;nEND behave; 16位锁存器模块设计nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;nENTITY reg16b IS n PORT ( clk,clr : IN STD_LOGIC;n d : IN STD_LOGIC_VECTOR(8 DOWNTO 0);n q : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) );nEND reg16b;nARCHITECTURE behave OF reg16b ISn SIGNAL R16S :

16、 STD_LOGIC_VECTOR(15 DOWNTO 0);nBEGINn PROCESS(clk, clr)n BEGINn IF clr = 1 THEN R16S 0) ; - 清零信号清零信号n ELSIF CLKEVENT AND CLK = 1 THEN -时钟到来时,锁存输入值,时钟到来时,锁存输入值,-并右移低并右移低8位位n R16S(6 DOWNTO 0) = R16S(7 DOWNTO 1); - 右移低右移低8位位n R16S(15 DOWNTO 7) = D; - 将输入锁到高将输入锁到高8位位n END IF;n END PROCESS;nq = R16S;nEN

17、D behave; 波形仿真 交通管理器的功能二、十字路口交通管理器设计交通管理器的设计思路交通管理器的设计控制器模块设计nLIBRARY IEEE; LIBRARY IEEE; nUSE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;nENTITY traffic_control ISENTITY traffic_control ISn PORT( PORT(n clk:IN STD_LOGIC; clk:IN STD_LOGIC;n c1,c2,c3:OUT STD_LOGIC;- c1,c2,c3:OUT STD_LOGIC;-各

18、定时计数器的使能信号各定时计数器的使能信号n w1,w2,w3:IN STD_LOGIC;-w1,w2,w3:IN STD_LOGIC;-各定时计数器的工作信号各定时计数器的工作信号n r1,r2:OUT STD_LOGIC;-r1,r2:OUT STD_LOGIC;-两个方向的红灯信号两个方向的红灯信号n y1,y2:OUT STD_LOGIC; -y1,y2:OUT STD_LOGIC; -两个方向的黄灯信号两个方向的黄灯信号n g1,g2:OUT STD_LOGIC;-g1,g2:OUT STD_LOGIC;-两个方向的绿灯信号两个方向的绿灯信号n reset:IN STD_LOGIC)

19、;-reset:IN STD_LOGIC);-复位信号复位信号nEND traffic_control;END traffic_control;nARCHITECTURE behave OF ARCHITECTURE behave OF traffic_controltraffic_control IS ISn TYPE state_space IS (s0,s1,s2,s3); TYPE state_space IS (s0,s1,s2,s3);n SIGNAL state:state_space; SIGNAL state:state_space;nBEGINBEGINnPROCESS(c

20、lk)PROCESS(clk)n BEGIN BEGINn IF reset=1 THEN IF reset=1 THENn state=s0; stateIF w1=1 THEN- WHEN s0=IF w1=1 THEN-条件信号赋值语句条件信号赋值语句n state=s1;stateIF w2=1 THEN WHEN s1=IF w2=1 THENn state=s2; stateIF w3=1 THEN WHEN s2=IF w3=1 THENn state=s3; stateIF w2=1 THEN WHEN s3=IF w2=1 THENn state=s0; state=s0;n

21、 END IF; END IF;n END CASE; END CASE;n END IF; END IF;nEND PROCESS;END PROCESS;nc1=1 WHEN state=s0 ELSE0;c1=1 WHEN state=s0 ELSE0;nc2=1 WHEN state=s1 OR state=s3 ELSE0;c2=1 WHEN state=s1 OR state=s3 ELSE0;nc3=1 WHEN state=s2 ELSE0;c3=1 WHEN state=s2 ELSE0;nr1=1 WHEN state=s1 OR state=s0 ELSE0;r1=1 W

22、HEN state=s1 OR state=s0 ELSE0;ny1=1 WHEN state=s3 ELSE0;y1=1 WHEN state=s3 ELSE0;ng1=1 WHEN state=s2 ELSE0;g1=1 WHEN state=s2 ELSE0;nr2=1 WHEN state=s2 OR state=s3 ELSE0;r2=1 WHEN state=s2 OR state=s3 ELSE0;ny2=1 WHEN state=s1 ELSE0;y2=1 WHEN state=s1 ELSE0;ng2=1 WHEN state=s0 ELSE0;g2=1 WHEN state=s0 ELSE0;nEND behave;END behave; 定时器设计nLIBRARY IEEE;LIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;nENTITY count30 ISENTITY count30 ISn PORT( PORT(n clk :IN STD_LOGIC; clk :IN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论