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

文章目录


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

一共有四个状态

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

B:出现一个1的状态

C:出现两个1的状态

D:出现三个1的状态

状态图如下:
序列检测器电路的设计(1111序列检测VHDL描述)

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序列检测VHDL描述)
序列检测器电路的设计(1111序列检测VHDL描述)

三、思考

以代码描述的是输入序列可重叠的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 )

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

上一篇:Risc-V常见指令


下一篇:2020-12-02