当前位置:文档之家› 第8章 基本逻辑电路设计_有限状态机

第8章 基本逻辑电路设计_有限状态机


IF RD = '0' THEN C_S <= S0; ELSIF CLK'EVENT AND CLK = '1' THEN C_S <= N_S; END IF; END PROCESS; --以下为组合逻辑进程,实现状态转移逻辑和输出逻辑 PROCESS(DIN,C_S) BEGIN CASE C_S IS WHEN S0 => --状态S0 IF DIN = '0' THEN N_S <= S0; --DIN=’0’时,次状态为S0 ELSE N_S <= S1; --否则次状态为S1 END IF; DOUT <= ‘0’; --状态S0时输出’0’ WHEN S1 => IF DIN = '0' THEN N_S <= S1; ELSE N_S <= S2; END IF; DOUT <= '0'; --状态S0时输出’0’
工作过程:
READY有效 控制器开始工作并在下一个时钟 周期到来时判断本次工作是读还是写操作(若 READ_WRITE高电平为读,低电平为写) 控制器 的输出写使能信号 WE 在写操作中有效,而读使能信 号RE在读操作中有效。 读写完毕后READY无效标 示本次处理任务完成,回到空闲状态。
设计步骤
END example;
实例:一个MOORE型有限状根据微处理 器的读周期或者写周期,分别对存储器输出写使能信 号WE和读使能信号RE。该控制器的输入信号有三个: 微处理的准备就绪信号 READY ,微处理的读写信号 READ_WRITE和时钟信号CLK。
BEGIN PROCESS(CLK,RD) --寄存器进程,上升沿跳转 BEGIN IF RD='0' THEN C_S<=S0; ELSIF CLK'EVENT AND CLK='1' THEN C_S<=N_S; END IF; END PROCESS;
PROCESS(DIN,C_S) --状态逻辑及输出逻辑 BEGIN CASE C_S IS WHEN S0=> --状态S0 IF DIN='0' THEN --DIN为‘0’时 N_S<=S0; --次状态为S0 DOUT<='0'; --DOUT为‘0’ 输出跟当前状态和 ELSE --DIN为‘1’时, 输入的DIN都有关 N_S<=S1; --次状态为S1 DOUT<='1'; --DOUT为‘1’
If(cnt = 0 OR Subway=‘0’)
交通灯作业
1、用VHDL语言设计实现上述交通灯,用实验板模拟: (1)实验板上一个按钮开关模拟次干道是否有车等待,例如,按钮按下表 示次干道有车等待通过,松开则表示无车等待通过。 (2)“红”、“绿”、“黄”灯的状态可组合为3位二进制表示,如红灯亮 表示为:“100”,黄灯亮:“010”,绿灯亮:“001”(十进制分别为 “4”、“2”、“1”),可以用一个数码管显示。 (3)上述主干道和次干道的信号灯状态分别用一个数码管显示,计时则用 另两个数码管显示。 上交形式: (1)word文档编排好程序(附调试结果照片,其中至少要有一张是有学生 证摆在一起照的,要求能清晰分辨姓名、学号),并转换为pdf格式,上传 到课程邮箱的“交通灯作业 ”文件夹。文档命名格式为“姓名_学号_交通 灯作业” 。 (注意:附件只能是pdf文档,不能压缩打包,以方便浏览)。
else
next_state<=read;
end if; when write=>we<=‘1’;re<=‘0’; if (ready=‘0’) then next_state<=idle; else next_state<=write; end if; end case; End process;
WHEN S3=> --状态S3 IF DIN='0' THEN --DIN为‘0’时, N_S<=S3; --次状态为S3 DOUT<='0'; --DOUT为‘1 ELSE --DIN为‘1’时, N_S<=S1; --次状态为S1 DOUT<='1'; --DOUT为‘1’ END IF; END CASE; END PROCESS;
有限状态机分为两类: Moore型----输出信号仅与当前状态有关
Mealy型----输出信号不仅与当前状态有关,还与输入信号有关
Moore 状态机(例)
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY moore IS PORT( CLK,RD,DIN: IN STD_LOGIC; DOUT: OUT STD_LOGIC ); END MOORE; ARCHITECTURE example OF MOORE IS TYPE S_M IS (S0,S1,S2,S3); --定义枚举类型,4种状态 SIGNAL C_S: S_M; --定义当前状态信号 SIGNAL N_S: S_M; --定义次状态信号 BEGIN PROCESS(CLK,RD) –状态寄存器进程,上升沿跳转 BEGIN --在每个上升沿将次态赋给当前状态
主干道
次干道
MGSR If (Subway=‘1’ AND cnt = 0) If (cnt = 0) cnt <= 5 MYSR MRSY cnt <=25 cnt <= 5 MRSG If (cnt = 0) 状态含义:
cnt <= 45
M:主干道
S:次干道 G:绿灯亮
Y:黄灯亮
R:红灯亮 如: “MGSR”表 示主干道绿灯亮, 次干道红灯亮
第八章 基本逻辑电路设计 之有限状态机
有限状态机
finite-state machine, FSM,又称有限状态自动机,简称状 态机,是表示有限个状态以及在这些状态之间的转移和动 作等行为的数学模型。 在数字电路系统中,是一种输出取决于过去输入部分和 当前输入部分的时序逻辑电路。
下图示意了有限状态机的状态转移图。
状态转移图表明了有限状态机的状态和转移条件。
Ready=‘0’
idle
Ready=‘1’
decision
Read_write=‘1’ Read_write=‘0’
read
Ready=‘1’
write
Ready=‘1’
3.状态机的输出逻辑 所处状态 idle decision read write re 0 0 1 0 we 0 0 0 1
可见:Moore状态机的-输出信号仅与当前状态有关, 与输入信号无关。
Mealy 状态机(例)
LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; --USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MEALY IS -- 实体声明 PORT( CLK:IN STD_LOGIC; --输入时钟信号 RD:IN STD_LOGIC; --异步复位信号 DIN:IN STD_LOGIC; --输入信号 DOUT:OUT STD_LOGIC --输出信号 ); END MEALY; ARCHITECTURE example OF MEALY IS --结构体声明 TYPE S_M IS (S0,S1,S2,S3); --定义枚举类型 SIGNAL C_S:S_M; --定义当前状态信号 SIGNAL N_S:S_M; --定义次状态信号 BEGIN
END IF; WHEN S1=> --状态S1 IF DIN='0' THEN --DIN为‘0’时, N_S<=S0; --次状态为S0 DOUT<='0'; --DOUT为‘0’ ELSE --DIN为‘1’时, N_S<=S2; --次状态为S2 DOUT<='0'; --DOUT为‘0’ END IF; WHEN S2=> --状态S2 IF DIN='0' THEN --DIN为‘0’时, N_S<=S2; --次状态为S2 DOUT<='1'; --DOUT为‘1’ ELSE --DIN为‘1’时, N_S<=S3; --次状态为S3 DOUT<='0'; --DOUT为‘0’ END IF;
4.用VHDL语言进行描述
Library ieee; Use ieee.std_logic_1164.all; 枚举类型数据 Entity store_controller is 的定义,定义 port ( ready : in std_logic; 了 一 个 叫 clk : in std_logic; state_type 的数 read_write : in std_logic; 据类型 we, re : out std_loigc); End store_controller; Architecture state_machine of store_controller is type state_type is ( idle, decision, read, write ); 定义了两个 signal present_state, next_state : state_type; 个中间状态 Begin 信号,是 State_transfer: state_type 的 process( prestent_state, ready, read_write ) 数据类型 begin
S/DOUT DIN=‘0’
S0/0
DIN=‘0’
S3/1
相关主题