综合性实验五、有限状态机的硬件描述语言设计方法

电子设计自动化实验 实验五

EDA


一.实验名称:综合性实验五、有限状态机的硬件描述语言设计方法

二.实验目的:

1、 熟悉用硬件描述语言(VHDL)设计一般状态机所包含的几个基本部分;
2、 掌握用硬件描述语言(VHDL)设计 Moore 型和 Mealy 型有限状态机的方法; 
3、 了解状态机在信号输出方式、结构方式、状态表达方式和编码方式的差异。 
4、 学习用状态机实现序列检测器的设计,并对其进行仿真和硬件测试; 

三.实验内容:

1、 说明附件中例 5-11 的代码表达的是什么类型的状态机,它的优点是什么?** 
2、 利用 QuartusII 对例 5-11 进行文本编辑输入、仿真测试并给出仿真波形,了解控制信 号的时序;** 
3、 对例 5-11 进行引脚锁定并用实验箱完成硬件验证实验,采用 NO.8 电路结构;** 
4、 根据例 5-11 写出由两个主控进程构成的相同功能的符号化 Moore 型有限状态机,画 出状态图,并给出其仿真测试波形**。 
5、 将 8 位待检测序列数作为外部输入信号,即可随时改变序列检测器的检测序列数。写 出此功能的符号化有限状态机,并用你学号末两位的十进制码进行验证。** 

四.例5-11

LIBRARY IEEE; 
USE IEEE.STD_LOGIC_1164.ALL; 
ENTITY SCHK IS 
  PORT(DIN,CLK,CLR : IN STD_LOGIC;     
     AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); 
END SCHK; 

ARCHITECTURE BEHAV OF SCHK IS  
    SIGNAL Q : INTEGER RANGE 0 TO 8;  
        SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);
  BEGIN   D<="11100101";  
       PROCESS(CLK,CLR)   
       BEGIN   
          IF CLR = '1' THEN Q<=0;   ELSIF CLK'EVENT AND CLK='1' THEN  
             CASE Q IS       
               WHEN 0=> IF DIN=D(7) THEN Q<=1; ELSE Q<=0; END IF;
               WHEN 1=> IF DIN=D(6) THEN Q<=2; ELSE Q<=0; END IF;
               WHEN 2=> IF DIN=D(5) THEN Q<=3; ELSE Q<=0; END IF;
               WHEN 3=> IF DIN=D(4) THEN Q<=4; ELSE Q<=0; END IF; 
               WHEN 4=> IF DIN=D(3) THEN Q<=5; ELSE Q<=0; END IF;  
               WHEN 5=> IF DIN=D(2) THEN Q<=6; ELSE Q<=0; END IF;    
               WHEN 6=> IF DIN=D(1) THEN Q<=7; ELSE Q<=0; END IF;
               WHEN 7=> IF DIN=D(0) THEN Q<=8; ELSE Q<=0; END IF; 
               WHEN OTHERS => Q<=0;   
            END CASE;  
           END IF;   
       END PROCESS;  
       PROCESS(Q) 
    BEGIN  
   IF Q=8 THEN AB<="1010";   
    ELSE AB<="1011";  
    END IF;  
 END PROCESS; 
 END BEHAV;

五.设计原理:

1.例子5-11
  1. 分析5-11代码可知,该段代码的功能是,检测一段由8位数字构成的序列。当完整输入该序列时,输出结果“1010”;反之则输出“1011”。在VHDL实体描述部分用作电路模块端口的有四个,下面分析其功能:
CLK:用作时钟,当检测到上升沿到来时,读入由DIN输入的数据。
CLR:用作清零信号,当为高电平时,将系统状态清零,即从Q<=0开始。
DIN:用于输入01组成的序列
AB: 用于输出一个4位的数,即"1010""1011"

同时,在结构体说明部分定义了两个信号,下面分析其功能:

Q:定义了从08的整数,共9个。用于描述状态。
D:定义了被检测序列,用于和由DIN输入的序列做对比。

2.波形仿真
SCHK仿真
由功能仿真图可以看出,由DIN输入数据,当CLK的上升沿到来时DIN数据,当检测出这个序列式,输出AB从”1011”变为”1010”。

3.硬件实现
在进行硬件实现时,根据具体的硬件,可将单个输入均接到三个按键上,如下图中的键6~8;输出可接一个带译码器的数码管,如下图译码器6。
这里写图片描述
在输入数据时,可将DIN所绑定引脚(如键8)置为1,此时CLK按键每按下一次代表一个时钟上升沿,便读入一个1;同理,将DIN置为0时,便可读入一个0。
按下CLR(如键7)时,系统状态清零,不管已输入多少,均清零重新检测。
这里写图片描述
由于数码管有译码功能,所以在显示时,读入数据或者检测不到正确的数列时显示为’b’(“1011”),检测到正确的数列时即变为’A’(“1010”)。

2.MOORE型有限状态机

将上述例子所实现的功能用由两个主控进程构成的MOORE型有限状态机来设计。
1.代码如下:

LIBRARY IEEE; 
USE IEEE.STD_LOGIC_1164.ALL; 
ENTITY MOORE_SCHK IS 
  PORT(DIN,CLK,CLR : IN STD_LOGIC;     
        AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); 
END MOORE_SCHK; 

ARCHITECTURE BEHAV OF MOORE_SCHK IS
  TYPE states IS (s0,s1,s2,s3,s4,s5,s6,s7,s8);  --定义各状态
  SIGNAL ST, NST : states :=s0;  --设定现态变量和次态变量
  SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);

 BEGIN   
  COM: PROCESS(ST,DIN)   BEGIN --组合进程,规定各状态的转换方式
  D<="11100101";  
 CASE ST IS       --11100101
   WHEN s0=> IF DIN=D(7) THEN NST<=s1; ELSE NST<=s0; END IF;
   WHEN s1=> IF DIN=D(6) THEN NST<=s2; ELSE NST<=s0; END IF;
   WHEN s2=> IF DIN=D(5) THEN NST<=s3; ELSE NST<=s0; END IF;
   WHEN s3=> IF DIN=D(4) THEN NST<=s4; ELSE NST<=s0; END IF; 
   WHEN s4=> IF DIN=D(3) THEN NST<=s5; ELSE NST<=s0; END IF;  
   WHEN s5=> IF DIN=D(2) THEN NST<=s6; ELSE NST<=s0; END IF;    
   WHEN s6=> IF DIN=D(1) THEN NST<=s7; ELSE NST<=s0; END IF;
   WHEN s7=> IF DIN=D(0) THEN NST<=s8; ELSE NST<=s0; END IF;
   WHEN s8=> IF DIN=D(0) THEN NST<=s2; ELSE NST<=s0; END IF;
   WHEN OTHERS => NST<=s0;   
 END CASE;  
 END PROCESS;  

 REG:PROCESS (CLK,CLR)   BEGIN  --时序进程
   IF CLR = '1' THEN ST<=s0;   
      ELSIF CLK'EVENT AND CLK='1' THEN ST<=NST;
   END IF;
 END PROCESS REG;   
  AB <= "1010" WHEN ST=s8 ELSE "1011";
END BEHAV;

当有正确序列进入时,变为状态s8,输出序列AB变为”1010”,而当下一位数据为1时,即DIN=1,进入状态s2。这是因为测出的数据11恰好与原序列数的前两位相同。

波形仿真和硬件仿真均与上例没有区别。

3.具有”记忆”性的序列检测器

在上面两例中,检测器均不具有记忆功能,即若该输入数与检测序列不同时,状态就会被清零,不管前面已输入哪些数。例如上例中,第四位为’0’,而此时如果再输入一个’1’,状态就会被清零,重新开始检测。如果来’1’,状态不清零,而是保持在原状态,等待下一个’0’来进入下一个状态的话。因此,系统便具有”记忆“功能。
要实现以上功能,只需修改一句代码,即为”1”不清零,维持原状态。用例5-11举例。

WHEN 3=> IF DIN=D(4) THEN Q<=4; ELSE Q<=3; END IF; 
4.可随时改变检测序列数的检测器

以上三个例子中,检测的数列是固定在程序内部的,无法随时更改。要实现可随时更改待检测的序列,要将固定在程序内部的序列改为由外部输入,将SIGNAL D改为一个输入端口PORT,即在实体定义时加入D的输入端口,同时删除SIGNAL D。
1.代码如下:

ENTITY MOORE_SCHK IS 
  PORT(DIN,CLK,CLR : IN STD_LOGIC;     
       D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);      
       AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); 
END MOORE_SCHK; 

2.波形仿真:
这里写图片描述
举个例子,输入的待检测序列为’3’(即00000011B)
由图片可以看出,当清零信号为’0’后开始检测序列,当连续输入六个’0’和一个’1’后,系统输入AB从’11’(即1011B)变为’10’(即1010B)。

3.硬件实现:
在硬件实现时,可将外部输入D(8位)绑定到键3和键4,一个按键控制4位。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值