当前位置:文档之家› 课程设计------序列检测器

课程设计------序列检测器

电子课程设计------序列检测器学院:专业班级:姓名:学号:指导老师: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 isport(pul,M: in std_logic;nq,q: out std_logic--VGA:out std_logic_vector(3 downto 0));end pulse;architecture a of pulse issignal temp: std_logic;begin--VGA <= "0001";'q<=temp;nq<=not temp;process(m)beginif rising_edge(m) thenif pul='0' thentemp<='1';elsetemp<='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 isport(din, clk, clr :in std_logic;ab : out std_logic_vector(3 downto 0));end CHK;architecture behav of CHK issignal q : integer range 0 to 8;signal d : std_logic_vector(7 downto 0);begind <= "11100101" ;process( clk, clr )beginif clr = '1' then q<= 0 ;elsif clk'event and clk='1' thencase q iswhen 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 )beginif 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 isport(ab: in std_logic_vector(3 downto 0);--sel: in std_logic;led: out std_logic_vector(6 downto 0) );end deled;architecture a of deled is--signal temp: std_logic;beginled <= "1111110" when ab= "0000" else"0110000" when ab= "0001" else"1101101" when ab= "0010" else"1111001" when ab= "0011" else"0110011" when ab= "0100" else"1011011" when ab= "0101" else"1011111" when ab= "0110" else"1110000" when ab= "0111" else"1111111" when ab= "1000" else"1111011" when ab= "1001" else"1110111" when ab= "1010" else"0011111" when ab= "1011" else"1001110" when ab= "1100" else"0111101" when ab= "1101" else"1001111" when ab= "1110" else"1000111" when ab= "1111" ;END a;生成模块图5仿真结果及分析图6图7分析:此模块的作用是将输出显示到数码管上。

当ab输入为1010时led输出为1110111(如图6);当ab输入为1011时led输出为0011111(如图7)。

五、总体设计电路图1、总体电路原理图该程序是在连续脉冲的作用下检测序列“11100101”当输入完全符合时数码管显示B,当其中有一个出错时或序列不对时数码管显示A。

图82、QUARATU SII的仿真结果图与分析清零端是高电平有效,首先设清零端为高电平使之清零,然后在八个有效脉冲的作用下DIN输入“11100101”且顺序一致,此时数码管显示为“1110111”其它情况为“111100”。

仿真结果如下图:图93、管脚分配如下图图104、EDA实验箱验证(如图)将IO_CLK用导线连接到IO3上,将IO9,IO10用导线连接到两个LED灯上,打开电源并下载之后,手动按钮输入脉冲的作用下在EPIC12板上4位拨码键的SW【0】。

分别拨到“11100101”,其中“1”为高电位,“0”为低电位。

重复上述几次,多输几个输入,观察数码管的输出情况,经观察只有输入为“11100101”时数码管显示“A”(如图11)它情况显示“B”(如图12)。

图11图12。

相关主题