一:实验目的
- 实现一个在通信领域中经常使用的巴克码发生器。
- 掌握用大规模可编程逻辑器件实现时序电路的方法。
- 了解通信领域中经常使用的巴克码检测器的设计方法。
- 掌握使用状态机设计时序电路的方法。
二: 实验仪器与器材
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
暂无评论内容