10位序列检测器

  • 格式:doc
  • 大小:76.00 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FPGA嵌入式系统设计专题实践题目:10位序列检测器设计

专业:

班级:

姓名:

学号:

一、设计题目:10位序列检测器设计

二、设计目标:

1.掌握序列检测器的工作原理

2. 利用有限状态机实现一般时序逻辑分析的方法,了解一般状态机的设计与应用。

三、设计原理:

本系统采用实验箱的48MHz时钟作为输入时钟,将其分频得到计数器计数频率和序列检测器检测序列频率,分析题目要求显示“RIGHT”或者“ERROR”,需要五个数码管,所以设计5进制计数器之后再加一个选通器直接连实验箱上数码管的位选;KEY3为待检测序列输入端,KEY4为清零端,序列检测结果有两个,检测正确为‘1111’,检测错误为‘0000’,送到译码端可译出“RIGHT”或“ERROR”相应的段选码。

四、设计内容

1、VHDL描述

(1)分频器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity pulse1 is

port(clk: in std_logic;

Fout:out std_logic);

end;

architecture one of pulse1 is

signal full:std_logic;

begin

p_reg:process(clk)

variable cnt8:integer range 48000000 downto 0;

begin

if clk'event and clk='1' then

if cnt8=100 then

cnt8:=0;

full<='1';

else cnt8:=cnt8+1;

full<='0';

end if;

end if;

end process p_reg;

p_div:process (full)

variable cnt2:std_logic;

begin

if full'event and full='1' then

cnt2:=not cnt2;

If cnt2='1'then fout<='1';

else fout<='0';

end if;

end if;

end process p_div;

end;

(2)序列检测器

LIBRARY IEEE;

USE IEEE.STD_logic_1164.all;

Entity SCHK IS

PORT(DIN,CLK,CLR:IN STD_LOGIC;

AB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END;

ARCHITECTURE BEHA V OF SCHK IS

SIGNAL Q:INTEGER RANGE 0 TO 10;

SIGNAL D:STD_LOGIC_VECTOR(9 DOWNTO 0);

BEGIN

D<="1111111111";

PROCESS(CLK,CLR)

BEGIN

IF CLR='0' THEN Q<=0;

ELSIF CLK'EVENT AND CLK='1' THEN

CASE Q IS

WHEN 0=>IF DIN=D(9) THEN Q<=1 ;ELSE Q<=0;END IF;

WHEN 1=>IF DIN=D(8) THEN Q<=2 ;ELSE Q<=0;END IF;

WHEN 2=>IF DIN=D(7) THEN Q<=3 ;ELSE Q<=0;END IF;

WHEN 3=>IF DIN=D(6) THEN Q<=4 ;ELSE Q<=0;END IF;

WHEN 4=>IF DIN=D(5) THEN Q<=5 ;ELSE Q<=0;END IF;

WHEN 5=>IF DIN=D(4) THEN Q<=6 ;ELSE Q<=0;END IF;

WHEN 6=>IF DIN=D(3) THEN Q<=7 ;ELSE Q<=0;END IF;

WHEN 7=>IF DIN=D(2) THEN Q<=8 ;ELSE Q<=0;END IF;

WHEN 8=>IF DIN=D(1) THEN Q<=9 ;ELSE Q<=0;END IF;

WHEN 9=>IF DIN=D(0) THEN Q<=10 ;ELSE Q<=0;END IF;

WHEN OTHERS=>Q<=0;

END CASE; END IF; END PROCESS;

PROCESS(Q)

BEGIN

IF Q=10 THEN AB<="1111"; ELSE AB<="0000";END IF;

END PROCESS;

END BEHA V;

(3)五进制计数器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity CNT5 is

port( clk:in std_logic;

COUT:OUT std_logic_vector(2 downto 0));

end;

architecture one of CNT5 is

signal CNT:std_logic_vector(2 downto 0);