课程设计------序列检测器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子课程设计
------序列检测器
学院:
专业班级:
姓名:
学号:
指导老师:
2012年12月
目录
一、设计任务与要求 (1)
二、总体框图 (1)
三、选择器件 (1)
四、功能模块 (1)
1、脉冲发生器 (1)
2、序列检测器 (2)
3、分频器 (3)
五、总体设计电路图 (5)
1、总体电路原理图 (5)
2、Q UARATU SII的仿真结果图与分析 (5)
3、管脚分配 (6)
4、E DA实验箱验证 (6)
序列检测器
一、任务与要求
设计一个序列检测器,在上升沿的作用下,输入一组二进制码,与预先设置的吗“11100101”一致时,输出A,不同时则输出B,(在检测过程中,任何一位不相等都将回到初始状态重新开始检测。)
二、总体框图
脉冲发生器:为检测器提供脉冲。
检测器:具有存储功能。
数码显示器:显示输出A或B
方案:设计手动的脉冲发生器为检测器提供脉冲,使其正常工作,然后设计检测器存储的数字为“11100101”再用译码器使其显示在数码管上,这就要求检测器必须记住前一次的正确吗及正确序列,直到在连续的检测中所收到的每一位吗与预置数的对应码相同,否则重新开始检测。
三、选择器件
芯片:EDA实验箱中EP1C12核心板;七段数码管等。
外围电路:将IO_CLK用导线连接到IO3上,将IO9,IO10用导线连接到两个LED灯上,接上电源下载完成即可验证。
四、功能模块
1.脉冲发生器
VHDL程序:
LIBRARY ieee;
use ieee.std_logic_1164.all;
entity pulse is
port(pul,M: in std_logic;
nq,q: out std_logic
--VGA:out std_logic_vector(3 downto 0)
);
end pulse;
architecture a of pulse is
signal temp: std_logic;
begin
--VGA <= "0001";'
q<=temp;
nq<=not temp;
process(m)
begin
if rising_edge(m) then
if pul='0' then
temp<='1';
else
temp<='0';
end if;
end if;
end process;
end a;
生成模块:
图1
仿真结果及分析
图2
分析:作用是为序列检测器提供合适的脉冲,手按按钮PB(3),Q输出一个脉冲给下个模块的CLK。当pul为1时q输出0;当pul为0时q输出为1.
2、序列检测器
VHDL语言
library ieee;
use ieee.std_logic_1164.all;
entity CHK is
port(din, clk, clr :in std_logic;
ab : out std_logic_vector(3 downto 0));
end CHK;
architecture behav of CHK is
signal q : integer range 0 to 8;
signal d : std_logic_vector(7 downto 0);
begin
d <= "11100101" ;
process( clk, clr )
begin
if clr = '1' then q<= 0 ;
elsif clk'event and clk='1' then
case q is
when 0=> if din = d(7)then q<=1;else q<= 0; end if ;
when 1=> if din = d(6)then q<=2;else q<= 0; end if ;
when 2=> if din = d(5)then q<=3;else q<= 0; end if ;
when 3=> if din = d(4)then q<=4;else q<= 0; end if ;
when 4=> if din = d(3)then q<=5;else q<= 0; end if ;
when 5=> if din = d(2)then q<=6;else q<= 0; end if ;
when 6=> if din = d(1)then q<=7;else q<= 0; end if ;
when 7=> if din = d(0)then q<=8;else q<= 0; end if ;
when others => q <= 0;
end case ;
end if ;
end process ;
process ( q )
begin
if q = 8 then ab <= "1010" ;
else ab <= "1011" ;
end if ;
end process ;
end behav ;
生成模块
图3
仿真结果及分析
图4
分析:此模块是一个对序列“11100101”的检测,当输入端DIN在八个脉冲的作用下分别输入11100101时Q端输出B,否则输出A。
3分频器
VHDL语言
LIBRARY ieee;
use ieee.std_logic_1164.all;
entity deled is
port(ab: in std_logic_vector(3 downto 0);