山东大学电子设计自动化(EDA)硬件实验-实验9 巴克码发生器设计和巴克码检测器设计

一:实验目的

  1. 实现一个在通信领域中经常使用的巴克码发生器。
  2. 掌握用大规模可编程逻辑器件实现时序电路的方法。
  3. 了解通信领域中经常使用的巴克码检测器的设计方法。
  4. 掌握使用状态机设计时序电路的方法。

二:  实验仪器与器材

1.EDA 开发软件

2.微机

3.实验开发系统

4.打印机

5.其他器件与材料

三:  实验说明

巴克码发生器在数据通信、雷达和遥控领域有相当广泛的应用。它能自动产生 周期性的序列码。本实验要求产生的序列码信号为{1110010},可以用寄存器或同步 时序电路实现。为了能够通过实验开发系统验证实验结果,可以使用两个输出端, 其中一个输出端同时输出巴克码,另一个输出端输出节拍。巴克码发生器的功能框 图见图 8.4 所示。

巴克码检测在数据通信、雷达和遥控等领域中用于检测同步识别标志,它是一 种用来检测一组或多组序列信号的电路。本实验中的巴克码检测器可使用多种方法 实现,为了更好地掌握 HDL 的使用方法,建议同学们使用状态机进行设计,实验中 检测的串行码组可用脉冲按键输入,输出的检测结果由发光二极管或数码管指示, 巴克码检测器示意图如图 8.5 所示。

四: 实验要求

使用设计的分频器的输出信号作为计数器的时钟输入,再利用实验二中设计的七段显示译码器显示计数值。

五:实验内容:

1.源文件

巴克码发生器:

library ieee;
use ieee.std_logic_1164.all;

entity bakemafasheng is
port(clk:in bit;
	 cnt:out bit;
	 y:out std_logic);
end entity;

architecture info of bakemafasheng is
type state_type is(st0,st1,st2,st3,st4,st5,st6,st7);
signal p_state,n_state:state_type;
begin 
	reg:process(clk)
	begin 
	if (clk'event and clk='1') then p_state<=n_state;
	end if;
	cnt<=clk;
	end process;
	
	com:process(p_state)
	begin 
	case p_state is
		when st0=>y<='1';
		n_state<=st1;
		when st1=>y<='1';
		n_state<=st2;
		when st2=>y<='1';
		n_state<=st3;
		when st3=>y<='0';
		n_state<=st4;
		when st4=>y<='0';
		n_state<=st5;
		when st5=>y<='1';
		n_state<=st6;
		when st6=>y<='0';
		n_state<=st7;
		when st7=>y<='1';
		n_state<=st1;
	end case;
	end process;
end info;

巴克码检测器:

library ieee;
use ieee.std_logic_1164.all;

entity bakemajiance is
port(clk:in std_logic;
	 d:in std_logic;
	 y:out std_logic;
	 cnt:out std_logic);
end entity;

architecture info of bakemajiance is
type state_type is(st0,st1,st2,st3,st4,st5,st6,st7);
signal p_state,n_state:state_type;
begin
	 reg:process(clk)
	 begin
	 if(clk'event and clk='1') then p_state<=n_state;
	 end if;
	 cnt<=clk;
	 end process;
	 
	 com:process(p_state,d)
	 begin
	 case p_state is
	 when st0=>y<='0';
	 if(d='1') then n_state<=st1;
	 else n_state<=st0;
	 end if;

	 when st1=>y<='0';
	 if(d='1') then n_state<=st2;
	 else n_state<=st0;
	 end if;

	 when st2=>y<='0';
	 if(d='1') then n_state<=st3;
	 else n_state<=st0;
	 end if;
	 
	 when st3=>y<='0';
	 if(d='1') then n_state<=st3;
	 else n_state<=st4;
	 end if;

	 when st4=>y<='0';
	 if(d='1') then n_state<=st1;
	 else n_state<=st5;
	 end if;

	 when st5=>y<='0';
	 if(d='1') then n_state<=st6;
	 else n_state<=st0;
	 end if;

	 when st6=>y<='0';
	 if(d='1') then n_state<=st2;
	 else n_state<=st7;
	 end if;

	 when st7=>y<='1';
	 if(d='1') then n_state<=st1;
	 else n_state<=st0;
	 end if;
	 end case;
end process;
end architecture;

2.编译情况

巴克码发生器:

巴克码检测器:

3.引脚配置:

巴克码发生器:

巴克码检测器:

4.仿真波形图:

巴克码发生器:

巴克码检测器:

© 版权声明
THE END
喜欢就支持以下吧
点赞1赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容