序列检测器电路的设计(1111序列检测VHDL描述)


一、“1111序列检测”怎么设计呢?

一共有四个状态

A:没有出现1之前的状态

B:出现一个1的状态

C:出现两个1的状态

D:出现三个1的状态

状态图如下:
在这里插入图片描述

RD:回到起始状态

x:输入序列

当RD为0时回到起始状态A;

将RD输入1,输入序列,连续输入4个1时,输出1,可重叠,当输入0时,就回到起始状态A。

二、如何用VHDL语言描述?

1.设计实体(输入输出信号)

代码如下(示例):

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity text1111 is
  port(                           --熟练自己使用缩进是好习惯
     clk,x,RD:in std_logic;
	  z:out std_logic
	  );
end text1111;

2.结构体的行为描述方式

代码如下(示例):

architecture behavior of text1111 is
 type state_type is (A,B,C,D);
 signal state:state_type;
 begin
   process(clk,RD)
	 begin
	  if RD='0' then
	  state<=A;
	  elsif clk'event and clk='0' then
	  case state is
	    when A=>
		   if x='1' then
			state<=B;
			end if;
		 when B=>
		   if x='1'then
			state<=C;
			else
			state<=A;
			end if;
		 when C=>
		   if x='1'then
			state<=D;
			else 
			state<=A;
			end if;
		 when D=>
		   if x='0' then
			state<=A;
			end if;
		end case;
	end if;
 end process;
 outout_p:process(state)
  begin
   case state is
	 when D=>
	  if x='1' then
	  z<='1';
	  else 
	  z<='0';
	  end if;
	  when others=>
	   z<='0';
	end case;
 end process;
end behavior;

3.管脚锁定方式及波形仿真图

管脚锁定图
波形仿真图

三、思考

以代码描述的是输入序列可重叠的1111 序列检测器,假如输入的序列不可重叠,那么应该如何改进代码呢?

architecture behavior of text1111 is
 type state_type is (A,B,C,D);
 signal state:state_type;
 begin
   process(clk,RD)
	 begin
	  if RD='0' then
	  state<=A;
	  elsif clk'event and clk='0' then
	  case state is
	    when A=>
		   if x='1' then
			state<=B;
			end if;
		 when B=>
		   if x='1'then
			state<=C;
			else
			state<=A;
			end if;
		 when C=>
		   if x='1'then
			state<=D;
			else 
			state<=A;
			end if;
		 when D=>
		   if x='0' then
			state<=A;
			else        --仅需这样修改即可
			state<=A;  --仅需修改此两处即可
			end if;
		end case;
	end if;
 end process;
 outout_p:process(state)
  begin
   case state is
	 when D=>
	  if x='1' then
	  z<='1';
	  else 
	  z<='0';
	  end if;
	  when others=>
	   z<='0';
	end case;
 end process;
end behavior;

总结

同步时序电路的输出仅与现态有关,则这种电路是Moore电路。

同步时序电路的输出不仅与现态有关,还与输入有关,则这种电路是Mealy电路。

时序电路按其工作方式可分为同步时序电路、异步时序电路。

同步时序电路在形式上分 Mealy、Moore。

在完成11111序列检测器,需要画出它的状态图,根据状态图的变化来写代码就非常简单。

仿真步骤:

1.建立仿真波形文件(file/new/vector waveform file)
2.插入仿真节点并赋值,保存波形文件。
3. 仿真 (processing/simulator )

绘出仿真波形后,根据波形可以分析功能。

  • 19
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
课程设计任务书 学生姓名 胡俊 学生专业班级 计 算 机0801 指导教师 王莹 学 院 名 称 计算机科学与技术学院 一、题目:“1 1 1”序列检测器。 原始条件:使用D触发器( 74 LS 74 )、“与”门 ( 74 LS 08 )、“或”门( 74 LS 32 )、非门 ( 74 LS 04 ),设计“1 1 1”序列检测器。 二、要求完成设计的主要任务如下: 1.能够运用数字逻辑的理论和方法,把时序逻辑电路设计和组合逻辑电路设计相结合,设计一个有实际应用的数字逻辑电路。 2.使用同步时序逻辑电路设计方法,设计“1 1 1”序列检测器。写出设计中的5个过程。画出课程设计图。 3.根据74 LS 74、74 LS 08、74 LS 32、74 LS 04集成电路引脚号,在设计好的“1 1 1”序列检测器电路图中标上引脚号。 4.在试验设备上,使用74 LS 74、74 LS 08、74 LS 32、74 LS 04集成电路连接、调试和测试“1 1 1”序列检测器电路。 三、实验设计过程: 第1步,画出原始状态图和状态表。 根据任务书要求,设计序列检测器有一个外部输入x和一个外部输出Z。输入和输出的逻辑关系为:当外部输入x第一个为“1”,外部输出Z为“0”;当外部输入x第二个为“1”,外部输出Z为“0”;当外部输入x第三个为“1”,外部输出Z才为“1”。假定有一个外部输入x序列以及外部输出Z为: 输入x: 0 1 0 1 1 1 0 1 1 1 1 0 1 输出Z: 0 0 0 0 0 1 0 0 0 1 1 0 0 要判别序列检测器是否连续接收了“111”,电路必须用不同的状态记载外部输入x的值。假设电路的初始状态为A,x输入第一个“1”,检测器状态由A装换到B,用状态B记载检测器接受了111序列的第一个“1”,这时外部输出Z=0;x输入第二个“1”,检测器状态由B装换到C,用状态C记载检测器接受了111序列的第二个“1”,外部输出Z=0;x输入第三个“1”,检测器状态由C装换到D,外部输出Z=1。然后再根据外部输入及其他情况时的状态转移,写出相应的输出。以上分析了序列检测器工作,由此可画出图7-1所示的原始状态图。根据原始状态图可列出原始状态表,如表7-2所示。
一、实验目的: 1、深入了解与掌握同步时序逻辑电路设计过程; 2、了解74LS74、74LS08、74LS32及74LS04芯片的功能; 3、能够根据电路图连接好实物图,并实现其功能。学会设计过程中的检验与完善。 二、实验内容描述: 题目:“1 1 1”序列检测器。 原始条件:使用D触发器( 74 LS 74 )、“与”门 ( 74 LS 08 )、“或”门( 74 LS 32 )、非门 ( 74 LS 04 ),设计“1 1 1”序列检测器。 集成电路引脚图: D触发器( 74 LS 74 ) “与”门 ( 74 LS 08 ) “或........ 三、实验设计过程: 第1步,画出原始状态图和状态表。 根据任务书要求,设计序列检测器有一个外部输入x和一个外部输出Z。输入和输出的逻辑关系为:当外部输入x第一个为“1”,外部输出Z为“0”;当外部输入x第二个为“1”,外部输出Z为“0”;当外部输入x第三个为“1”,外部输出Z才为“1”。假定有一个外部输入x序列以及外部输出Z为: 输入x: 0 1 0 1 1 1 0 1 1 1 1 0 1 输出Z: 0 0 0 0 0 1 0 0 0 1 1 0 0 要判别序列检测器是否连续接收了“111”,电路必须用不同的状态记载外部输入x的值。假设电路的初始状态为A,x输入第一个“1”,检测器状态由A装换到B,用状态B记载检测器接受了111序列的第一个“1”,这时外部输出Z=0;x输入第二个“1”,检测器状态由B装换到C,用状态C记载检测器接受了111序列的第二个“1”,外部输出Z=0;x输入第三个“1”,检测器状态由C装换到D,外部输出Z=1。然后再根据外部输入及其他情况时的状态转移,写出相应的输出。以上分析了序列检测器工作,由此可画出图7-1所示的原始状态图。根据原始状态图可列出原始状态表,如表7-2所示。 现态 次态/输出 x = 0 x = 1 A A / 0 B / 0 B A / 0 C / 0 C A / 0 D / 1 D A / 0 D / 1 (表 7-2 原始状态表) (图
序列检测器通常使用有限状态机(FSM)来实现。在VHDL中,我们可以使用行为级描述或结构级描述来实现FSM。 下面是一个基于行为级描述序列检测器设计: ```vhdl entity sequence_detector is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; input : in STD_LOGIC; output : out STD_LOGIC); end sequence_detector; architecture Behavioral of sequence_detector is type state_type is (S0, S1, S2, S3, S4, S5, S6); signal state : state_type; begin process (clk, reset) begin if reset = '1' then state <= S0; output <= '0'; elsif rising_edge(clk) then case state is when S0 => if input = '1' then state <= S1; else state <= S0; end if; when S1 => if input = '1' then state <= S1; else state <= S2; end if; when S2 => if input = '1' then state <= S1; else state <= S3; end if; when S3 => if input = '0' then state <= S4; else state <= S3; end if; when S4 => if input = '0' then state <= S5; else state <= S3; end if; when S5 => if input = '1' then state <= S6; else state <= S3; end if; when S6 => if input = '0' then state <= S4; output <= '1'; else state <= S3; end if; when others => state <= S0; end case; end if; end process; end Behavioral; ``` 在这个设计中,我们使用了一个7个状态的FSM来检测序列1110010。每个状态代表了当前接收到的输入序列的状态。 当输入序列与目标序列匹配时,我们将输出信号output设置为1。 需要注意的是,这个设计还需要一个时钟信号和一个复位信号。时钟信号用于同步状态转换和输出信号,而复位信号用于将状态重置为初始状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Best-Wishes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值