欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-30 19:33:12
...


一、“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 )

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