八位序列检测器设计.docx

上传人:b****7 文档编号:26538643 上传时间:2023-06-20 格式:DOCX 页数:8 大小:79.65KB
下载 相关 举报
八位序列检测器设计.docx_第1页
第1页 / 共8页
八位序列检测器设计.docx_第2页
第2页 / 共8页
八位序列检测器设计.docx_第3页
第3页 / 共8页
八位序列检测器设计.docx_第4页
第4页 / 共8页
八位序列检测器设计.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

八位序列检测器设计.docx

《八位序列检测器设计.docx》由会员分享,可在线阅读,更多相关《八位序列检测器设计.docx(8页珍藏版)》请在冰豆网上搜索。

八位序列检测器设计.docx

八位序列检测器设计

八位序列检测器设计

 

班级:

1302012

学号:

姓名:

郭春晖

 

1、设计说明

使用quartus软件进行仿真和验证,并且还可以检测其他的序列,只需要修改一部分代码就可以实现。

二、方案

工作原理:

基于FPGA的多路脉冲序列检测器的设计方案,使用VHDL语言设计时序逻辑电路,先设计序列发生器产生序列:

01010;再设计序列检测器,检测序列发生器产生序列,若检测到信号与预置待测信号相同,则输出“1”,否则输出“0”,并且将检测到的信号的显示出来。

三、单元模块设计

1、序列信号发生器

序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。

利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。

REG

s0

s1

s2

s3

s4

s5

s6

s7

Q

1

0

1

1

0

1

0

0

REG

s8

s9

s10

s11

s12

s13

s14

s15

Q

0

1

1

0

1

0

1

0

序列信号发生器的代码如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYSHKIS

PORT(CLK,RST:

INSTD_LOGIC;CO:

OUTSTD_LOGIC);

ENDSHK;

ARCHITECTUREbehavOFSHKIS

TYPEFSM_STIS(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);

SIGNALREG:

FSM_ST;

SIGNALQ:

STD_LOGIC;

BEGIN

PROCESS(CLK,RST)

BEGIN

IFRST='1'THENREG<=s0;Q<='0';

ELSIFCLK'EVENTANDCLK='1'THEN

CASEREGIS

WHENs0=>Q<='1';REG<=s1;WHENs1=>Q<='0';REG<=s2;

WHENs2=>Q<='1';REG<=s3;WHENs3=>Q<='1';REG<=s4;

WHENs4=>Q<='0';REG<=s5;WHENs5=>Q<='1';REG<=s6;

WHENs6=>Q<='0';REG<=s7;WHENs7=>Q<='0';REG<=s8;

WHENs8=>Q<='0';REG<=s9;WHENs9=>Q<='1';REG<=s10;

WHENs10=>Q<='1';REG<=s11;WHENs11=>Q<='0';REG<=s12;

WHENs12=>Q<='1';REG<=s13;WHENs13=>Q<='0';REG<=s14;

WHENs14=>Q<='1';REG<=s15;WHENs15=>Q<='0';REG<=s0;

WHENOTHERS=>REG<=s0;Q<='0';

ENDCASE;

ENDIF;

ENDPROCESS;CO<=Q;

ENDbehav;

转化成可调用的元件:

波形仿真如下:

2、序列检测器

脉冲序列检测起可用于检测一组或多组二进制码组成的脉冲序列信号,当序列检测器连续接收到一组穿行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。

由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确的序列,直到连续的检测中所收到的每一位码都与预置数的对应码相同。

在检测过程中,任何一位不相等将回到初始状态重新开始检测。

序列检测器的代码如下:

libraryieee;

useieee.std_logic_1164.all;

entitySCHK1is

port(datain,clk:

instd_logic;

t:

instd_logic_vector(4downto0);

q:

outstd_logic;

cq:

outstd_logic_vector(4downto0));

endSCHK1;

architecturert1ofSCHK1is

signalreg:

std_logic_vector(4downto0);

begin

process(clk)

variablet1:

std_logic_vector(4downto0);

begin

ifclk'eventandclk='1'then

reg(0)<=datain;

reg(4downto1)<=reg(3downto0);

endif;

t1:

=t;

ifreg=t1thenq<='1';elseq<='0';

cq<=reg;

endif;

endprocess;

endrt1;

可调用的元件:

图3.3

波形仿真如下:

3、计数器

利用序列检测器产生的信号(1和0)作为计数器模块的时钟信号,产生的信号0、1变化,形成类似的CLK信号,实现计数器计数。

计数器的代码如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCOUNTIS

PORT(CLK,EN,RST:

INSTD_LOGIC;Q1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

Q2:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:

OUTSTD_LOGIC);

ENDENTITYCOUNT;

ARCHITECTUREONEOFCOUNTISBEGIN

PROCESS(CLK,EN,RST)

VARIABLECQI:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFRST='1'THENCQI:

=(OTHERS=>'0');

ELSIFCLK'EVENTANDCLK='1'THEN

IFEN='1'THEN

IFCQI<153THEN

IFCQI(3DOWNTO0)=9THENCQI:

=CQI+7;--高位进位

ELSECQI:

=CQI+1;

ENDIF;

ELSECQI:

=(OTHERS=>'0');

ENDIF;

ENDIF;

ENDIF;

IFCQI=153THENCOUT<='1';

ELSECOUT<='0';

ENDIF;

Q1<=CQI(3DOWNTO0);Q2<=CQI(7DOWNTO4);

ENDPROCESSCOUNT;ENDARCHITECTUREONE;

可调用的元件:

波形仿真如下:

4、顶层文件设计

通过前面的准备,我们得到了3个模块,即序列信号发生器、序列检测器、计数器。

在此,我们运用原理图法来生成顶层实体。

即将上述3个模块,通过我们的设计软件,生成可以移植,调用的原理图文件,在将其在顶层设计中直接调用即可。

本次设计生成的顶层实体如下图所示:

 

四波形仿真与验证

1、时序仿真

置入待检测序列:

仿真结果:

2、管脚连接

NodeName

Location

1

count[3]

PIN_J2

2

count[2]

PIN_J3

3

count[1]

PIN_H1

4

count[0]

PIN_F2

5

date[7]

PIN_J6

6

date[6]

PIN_H5

7

date[5]

PIN_H6

8

date[4]

PIN_G4

9

date[3]

PIN_G5

10

date[2]

PIN_J7

11

date[1]

PIN_H7

12

date[0]

PIN_E3

13

error

PIN_J1

3、结果分析:

输入待测序列若有检测的序列则会加一,之后继续检测。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1