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

简介:

一、实验目的

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

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

 Com1:PROCESS( CLK, CLR )

  BEGIN

  IF CLR = '1THEN    Q <=0;

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

     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 =8  THEN  AB <="0001";     --序列数检测正确,输出 "1"

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

      ENDIF;

  ENDPROCESS;

END behav ;

 

 

③ 仿真分析

clip_image002

6-1 仿真波形图

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

④ 硬件测试

1-1  SCHKGWAC6板上目标芯片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

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

 Com1:PROCESS( CLK, CLR )

  BEGIN

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

  ELSE Count<=4;ENDIF;

  IF CLR = '1THEN    Q <=0;

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

        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)  THEN  AB <="0001";     --序列数检测正确,输出 "1"

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

      ENDIF;

  ENDPROCESS;

END behav ;

 

 

③ 仿真分析

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

clip_image006

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

 

④ 硬件测试

1-2  SCHKGWAC6板上目标芯片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='0THEN Count<=3;--判断要检测多少位

  ELSE Count<=4;ENDIF;

  IF CLR = '1THEN    Q <=0;

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

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

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

        if ISE='1then 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'  THEN  AB <="0001";     --当序列数检测正确并且预置数使能为低电平的时候,输出 "1"

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

      ENDIF;

  ENDPROCESS;

END behav ;

 

③ 仿真分析

clip_image010

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

 

④ 硬件测试

1-3  SCHKGWAC6板上目标芯片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  引脚的配置

 

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/p/3175467.html如需转载请自行联系原作者


kissazi2

相关文章
|
Web App开发 网络协议 关系型数据库
深度解析TCP协议:特点、应用场景及市面上常见软件案例
深度解析TCP协议:特点、应用场景及市面上常见软件案例
1598 1
深度解析TCP协议:特点、应用场景及市面上常见软件案例
|
Windows
该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置“页面中创建关联
【10月更文挑战第22天】当你遇到“该文件没有与之关联的应用来执行该操作”的提示时,通常是因为文件类型未关联应用或文件损坏。解决方法包括:1. 确定文件类型并安装合适的应用程序,如Microsoft Office、Adobe Acrobat Reader等;2. 如果已安装应用,进入系统设置关联文件类型;3. 检查文件完整性,重新下载或验证文件格式。
5944 1
|
6月前
|
Ubuntu Linux 数据安全/隐私保护
Windows中安装WSL 2和Ubuntu系统的教程
回看这一路,有趣吧?你已经跨界成为了一个Windows和Linux的桥梁。期待在代码的世界里,把一切玩得风生水起!
345 1
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
342 3
|
人工智能 Ubuntu Linux
安装阿里图文融合AI - AnyText心路历程(安装失败告终,心痛!)
安装阿里图文融合AI - AnyText心路历程(安装失败告终,心痛!)
|
数据可视化 Scala Python
Jupyter 在教育领域的应用与影响
【8月更文第29天】随着数字技术和互联网的发展,教育行业正在经历一场深刻的变革。传统的面对面教学模式逐渐被更加灵活和高效的方式所补充或替代。其中,Jupyter Notebook 作为一种开放源代码的 Web 应用程序,为教学提供了强大的工具,尤其是在 STEM(科学、技术、工程和数学)领域。本文将探讨 Jupyter 在教育中的应用以及它如何改变了教学方式,并提供一些实际的代码示例来展示其功能。
297 1
|
算法
字节跳动《算法中文手册》火了,完整版 PDF 开放下载!
字节跳动《算法中文手册》火了,完整版 PDF 开放下载!
3208 0
字节跳动《算法中文手册》火了,完整版 PDF 开放下载!
|
SQL 数据库 数据安全/隐私保护
攻防世界14-inget
攻防世界14-inget
|
负载均衡 数据安全/隐私保护 网络架构
理解网络交换机:L2与L3交换机的功能与区别
理解网络交换机:L2与L3交换机的功能与区别
2010 0
|
JavaScript Java 测试技术
基于springboot+vue.js的在线招投标系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的在线招投标系统附带文章和源代码设计说明文档ppt
196 0

热门文章

最新文章