实验六 序列信号检测器的VHDL设计

摘要:
最后进行引脚锁定并进行测试,硬件验证设计电路对给定序列的检测功能。进程Com1:实现序列的检测进程Com2:实现检测结果的输出②程序设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSCHKISPORT;--检测结果输出ENDSCHK;ARCHITECTUREbehavOFSCHKISSIGNALQ:INTEGERRANGE0TO8;SIGNALD:STD_LOGIC_VECTOR;--8位待检测预置数BEGIND˂="11100101";--8位待检测预置数:密码:E5HCom1:PROCESSBEGINIFCLR='1'THENQIFDIN=DTHENQ˂=1;ELSEQIFDIN=DTHENQ˂=2;ELSEQIFDIN=DTHENQ˂=3;ELSEQIFDIN=DTHENQ˂=4;ELSEQIFDIN=DTHENQ˂=5;ELSEQIFDIN=DTHENQ˂=6;ELSEQIFDIN=DTHENQ˂=7;ELSEQIFDIN=DTHENQ˂=8;ELSEQQ˂=0;ENDCASE;ENDIF;ENDPROCESS;Com2:PROCESS--检测结果判断输出BEGINIFQ=8THENAB˂="0001";--序列数检测正确,输出"1"ELSEAB˂="0011";--序列数检测错误,输出"3"ENDIF;ENDPROCESS;ENDbehav;③仿真分析图6-1仿真波形图仿真预测:当输入的结果是预置序列的时候,输出0001;反之,输出0011。其中预置数序列的长度与BIT_COUNT相关。

一、实验目的

1)进一步熟悉Quartus II软件和GW48-PK2S实验系统的使用方法;

2)用状态机实现序列检测器的设计,了解一般状态机的设计与应用

二、实验内容

1. 基本命题

利用Quartus II实现一个8位的序列检测器设计;给出仿真波形。最后进行引脚锁定并进行测试,硬件验证设计电路对给定序列的检测功能。

2. 扩展命题

在上述设计基础上,通过修改设计,实现以最简便的预置方法,获得n位序列检测器的功能。

三、实验仪器与器材

计算机1台,GW48-PK2S实验箱1台,Quartus6.0 1套。

四、实验

1. 基本命题

总体设计

设计两个进程。

进程Com1:实现序列的检测

进程Com2:实现检测结果的输出

程序设计

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITY SCHK IS

PORT(DIN, CLK, CLR:INSTD_LOGIC;--串行输入数据位/工作时钟/复位信号

AB :OUTSTD_LOGIC_VECTOR(3DOWNTO0));--检测结果输出

END SCHK;

ARCHITECTURE behav OF SCHK IS

SIGNAL Q :INTEGERRANGE0TO8;

SIGNAL D :STD_LOGIC_VECTOR(7DOWNTO0);--8位待检测预置数

BEGIN

D <="11100101";--8位待检测预置数:密码:E5H

Com1:PROCESS( CLK, CLR )

BEGIN

IF CLR = '1' THENQ <=0;

ELSIFCLK'EVENTAND CLK='1' THEN--时钟到来时,判断并处理当前输入的位

CASE Q IS

WHEN0=>IF DIN = D(7)THEN Q <=1;ELSE Q <=0;ENDIF;

WHEN1=>IF DIN = D(6)THEN Q <=2;ELSE Q <=0;ENDIF;

WHEN2=>IF DIN = D(5)THEN Q <=3;ELSE Q <=0;ENDIF;

WHEN3=>IF DIN = D(4)THEN Q <=4;ELSE Q <=0;ENDIF;

WHEN4=>IF DIN = D(3)THEN Q <=5;ELSE Q <=0;ENDIF;

WHEN5=>IF DIN = D(2)THEN Q <=6;ELSE Q <=0;ENDIF;

WHEN6=>IF DIN = D(1)THEN Q <=7;ELSE Q <=0;ENDIF;

WHEN7=>IF DIN = D(0)THEN Q <=8;ELSE Q <=0;ENDIF;

WHENOTHERS=>Q <=0;

ENDCASE;

ENDIF;

ENDPROCESS;

Com2:PROCESS( Q )--检测结果判断输出

BEGIN

IF Q =8THENAB <="0001";--序列数检测正确,输出"1"

ELSEAB <="0011";--序列数检测错误,输出"3"

ENDIF;

ENDPROCESS;

END behav ;

仿真分析

clip_image002

6-1 仿真波形图

仿真预测:当输入的结果是预置序列的时候,输出0001;反之,输出0011

硬件测试

1-1SCHKGWAC6板上目标芯片EP1C6Q240C8的引脚锁定信息

端口名称

端口符号

GWAC6板输入输出元件

GWAC6板接口

目标器件引脚

备注

输入引脚D

DIN

按键1

PIO1

233

模式No.5

清零端

CLR

按键2

PIO2

234

主频率

CLK

按键3

PIO3

235

4位数字量输出引脚

AB

数码管7

PIO40~47

161-164

clip_image004

6-2引脚的配置

2. 扩展命题

总体设计

本命题通过改写case判断语句,将要检测的序列和序列的位数关联,通过IF语句对状态进行判断。

程序设计

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITY SCHK IS

PORT(DIN, CLK, CLR ,BIT_COUNT :INSTD_LOGIC;--串行输入数据位/工作时钟/复位信号/要检测的位数标识码

AB :OUTSTD_LOGIC_VECTOR(3DOWNTO0));--检测结果输出

END SCHK;

ARCHITECTURE behav OF SCHK IS

SIGNAL Q :INTEGERRANGE0TO8;

SIGNAL D :STD_LOGIC_VECTOR(7DOWNTO0);--8位待检测预置数

SIGNAL Count:INTEGERRANGE0TO8;--要检测的位数(最多支持8)

BEGIN

D <="11100000";--8位待检测预置数:--11100000

Com1:PROCESS( CLK, CLR )

BEGIN

IF BIT_COUNT='0' THEN Count<=3;--判断要检测多少位

ELSE Count<=4;ENDIF;

IF CLR = '1' THENQ <=0;

ELSIFCLK'EVENTAND CLK='1' THEN--时钟到来时,判断并处理当前输入的位

if Q=(Count+1)THEN Q<=0;ENDIF;--开始新的一轮的检测

if(DIN = D(7-Q))THEN Q<=Q+1;ELSE Q<=0;ENDIF;--进行状态的检测

ENDIF;

ENDPROCESS;

Com2:PROCESS( Q )--检测结果判断输出

BEGIN

IF Q =(Count+1)THENAB <="0001";--序列数检测正确,输出"1"

ELSEAB <="0011";--序列数检测错误,输出"3"

ENDIF;

ENDPROCESS;

END behav ;

仿真分析

BIT_COUNT为低电平的时候,实现4位序列检测器的功能;当BIT_COUNT为高电平的时候,实现5位序列检测器的功能。设待检测的序列为“11100000”。

clip_image006

6-3 5位序列检测器波形图

硬件测试

1-2SCHKGWAC6板上目标芯片EP1C6Q240C8的引脚锁定信息

端口名称

端口符号

GWAC6板输入输出元件

GWAC6板接口

目标器件引脚

备注

输入引脚D

DIN

按键1

PIO1

233

模式No.5

清零端

CLR

按键2

PIO2

234

主频率

CLK

按键3

PIO3

235

检测位数标识

BIT_COUNT

按键4

PIO4

236

4位数字量输出引脚

AB

数码管7

PIO40~47

161-164

clip_image008

6-4 引脚的配置

五、实验思考题

如果带检测预置数必须以右移方式进入序列检测器,那么该程序该做如何修改?

总体设计

同序列检测中数据右移输入的思路,但是我们这次不进行检测,收到什么就将其存入程序中的预置数变量中。我们需要额外设置一个输入变量,变量ISE用来标示是否进行预置数序列的输入,当ISE=1,输入口DIN用来输入预置数序列的;ISE=0,输入口DIN用来输入要检测的序列。其中预置数序列的长度BIT_COUNT相关。

程序设计

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITY SCHK IS

PORT(DIN, CLK, CLR ,BIT_COUNT,ISE :INSTD_LOGIC;--串行输入数据位/工作时钟/复位信号/要检测的位数标识码/预置数序列的输入使能

AB :OUTSTD_LOGIC_VECTOR(3DOWNTO0));--检测结果输出

END SCHK;

ARCHITECTURE behav OF SCHK IS

SIGNAL Q :INTEGERRANGE0TO8;

SIGNAL D :STD_LOGIC_VECTOR(7DOWNTO0);--8位待检测预置数

SIGNAL Count:INTEGERRANGE0TO8;--要检测的位数(最多支持8)

BEGIN

Com1:PROCESS( CLK, CLR )

BEGIN

IF BIT_COUNT='0' THEN Count<=3;--判断要检测多少位

ELSE Count<=4;ENDIF;

IF CLR = '1' THENQ <=0;

ELSIFCLK'EVENTAND CLK='1' THEN--时钟到来时,判断并处理当前输入的位

if Q=(Count+1)THEN Q<=0;ENDIF;--开始新的一轮的检测

--ISE=1的时候,开始预置数序列的输入

if ISE='1' then D(7-Q)<=DIN;Q<=Q+1;

else

if(DIN = D(7-Q))THEN Q<=Q+1;ELSE Q<=0;ENDIF;--进行状态的检测

endif;

ENDIF;

ENDPROCESS;

Com2:PROCESS( Q )--检测结果判断输出

BEGIN

IF Q =(Count+1)AND ISE='0'THENAB <="0001";--当序列数检测正确并且预置数使能为低电平的时候,输出"1"

ELSEAB <="0011";--序列数检测错误,输出"3"

ENDIF;

ENDPROCESS;

END behav ;

仿真分析

clip_image010

6-5带有预置数功能的4位序列检测器波形图

硬件测试

1-3SCHKGWAC6板上目标芯片EP1C6Q240C8的引脚锁定信息

端口名称

端口符号

GWAC6板输入输出元件

GWAC6板接口

目标器件引脚

备注

输入引脚D

DIN

按键1

PIO1

233

模式No.5

清零端

CLR

按键2

PIO2

234

主频率

CLK

按键3

PIO3

235

检测位数标识

BIT_COUNT

按键4

PIO4

236

预置数使能

ISE

按键5

PIO5

237

4位数字量输出引脚

AB

数码管7

PIO40~47

161-164

clip_image012

6-6引脚的配置

免责声明:文章转载自《实验六 序列信号检测器的VHDL设计》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nodejs学习笔记(十二)—定时任务(node-schedule)ElasticSearch-7.10安装-2下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

免疫信息学

http://blog.sciencenet.cn/blog-204973-845856.html 第一节 免疫信息学源流 上个世纪中叶充满科学传奇。那不仅是个DNA双螺旋结构阐明、分子生物学产生与兴起的时代,也是系统论、控制论、信息论纷纷形成问世并引起全球广泛关注的时代,还是电子计算机走进人类社会并产生重要影响的时代。香农发表了《通信的数学理论》,奠定了...

SAP HANA HDB序列的使用方法及技巧(SAP HANA HDB SEQUENCE ) 沧海

创建序列: 语法:CREATE SEQUENCE <sequence_name> [<common_sequence_parameter_list>] [RESET BY <subquery>] <sequence_name> ::= <identifier> <common_seque...

iOS,QRCord(矩阵二维码)

1.二维码及其原理介绍 2.二维码生成 3.二维码解析 二维码及其原理介绍 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识...

cpu IP核下载列表 (最新全集)

IP核下载列表 (最新全集) 下载必读:- n( R7 z! h: `/ D$ l/ V8 f* J1 c7 }2 e1 v$ |1 @3 V, q; i: B- Z, K& _1 G1. 绝大部分IP来自网络,缺乏足够的测试,仅供大家学习之用。, I: D% Y1 h2 u; R2. IP原作者版权所有,严禁商用。切记!1 }/ t+ b&...

数据结构与算法80道

1. 把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。    10  /  6 14  / / 4 8 12 16  转换成双向链表 4=6=8=10=12=14=16。   首先我们定义的二元查找树 节点的数据结构如下:  struct BSTreeN...

基于分布式的短文本命题实体识别之----人名识别(python实现)

目前对中文分词精度影响最大的主要是两方面:未登录词的识别和歧义切分。 据统计:未登录词中中文姓人名在文本中一般只占2%左右,但这其中高达50%以上的人名会产生切分错误。在所有的分词错误中,与人名有关的错误占到了将近90%,这中国人名都是根据人的想法起的名字,有很大的随意性,并且数量巨大,规律也不尽相同。 1.理论简介 命名实体识别(Named Ent...