- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
序列检测器设计
实验目的
了解序列检测器的工作原理,学习使用有限状态机设计序列检测器。
实验内容
建立工程,使用有限状态机的VHDL编写方法编写序列“1110”的检测器,并通过数码管显示状态机当前所在状态,然后把每个简单的VHDL程序(Create Symbol Files For Current File)作为一个模块,在原理图输入中引入,最后把原理图设置成顶层文件,下载到FPGA芯片中,最后在实验箱上进行硬件测试。
实验原理
实验程序用VHDL语言编写,利用开发软件Quartus II完成编译,完成本实验,主要有4部分参考程序,分别是状态机主程序(s_machine.vhd)、并串转换器(CtoP.vhd),按键防抖器(steady.vhd)和led控制器(led_c.vhd)。
状态机主程序主要实现“1110”序列的检测。在程序中,自定义数据类型sta,分别代表了在不同情况下状态机对应的状态,由于输出为4位比特,所以状态机总共需要5个状态,具体的状态转换图如下图所示:
并串转换器的主要功能是并行输入转为串行输出,主要使用的是带预置数功能的移位寄存器,它具有置数管脚,当该管脚为0时,并行的输入将存入移位寄存器当中,随着时钟的输入使得数据串行输出,作为状态机的数据输入。
按键消抖器的主要功能是消除按键的抖动,由于按键被按下的时候总伴有抖动,所以有必要对按键进行消抖。延时的原理是当按键按下时首先延时一段时间,然后再次检测按键,若此时按键仍为按下,则为有效的按键。按键主要为状态机提供时钟。
led控制器的主要功能是对序列检测的结果进行显示。若成功检测到序列,则核心板上的led灯亮,若没检测到,则led等熄灭。
实验步骤
打开Quartus II软件并建立工程
在Windows桌面上选择“开始”→“程序”→“Altera”→Quartus II 9.0,打开Quartus II 9.0软件,软件界面如图1所示。
图1 Quartus II软件界面
在图1中选择File → New Project Wizard来新建一项工程。
单击Next进入如图2所示对话框。图2中的第一栏用于指定工程所在的工作库文件夹;第二栏用于指定工程名;第三栏用于指定顶层文件的实体名。本次实验工程的路径为E:\EDA\muchine_1110,工程名与顶层文件的实体名同为s_muchine。
单击Next进如图3所示对话框。由于是新建工程,暂无输入文件。
单击Next,进入图4所示对话框。在该对话框中指定目标器件,这里我们选择的是QuikSOPC核心板上用的Cyclone系列的EP1C12Q240C8。
图2 新建工程向导说明对话框
在图4所示的对话框中点击Finish完成新建工程的建立。
图3 新建工程添加文件对话框
图4 新建工程器件选择对话框
建立图形设计文件
在Quartus II主界面中,选择File → New打开如图5所示对话框。
在图5所示对话框中选择Block Diagram/Schematic Files,单击OK建立一个空的图形设计文件,默认名为Block1.bdf。
图5 新建文件对话框
在Quartus II主界面中,选择File → Save As打开将bdf文件存盘的对话框。将bdf命名为machine_1110.bdf,并选中Add File to current project 选项,以使该文件添加到工程中。
建立文本编辑文件
在Quartus II主界面中选择File → New打开新建文件对话框,如图5所示,在该对话框中选择VHDL File,单击OK建立一个空的VHDL文件,默认名为Vhd1.vhd。在Quartus II主界面中选择File → Save As改名为s_machine.vhd并保存。随后建立CtoP.vhd,steady.vhd和led_c.vhd。
Quartus II工程设计
在第1步中已经建立好了Quartus II工程文件,现在要对Quartus II工程进行编程设计。
在新建VHDL源程序文件中输入程序代码并保存。
s_machine程序代码如下所示:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY s_machine IS
PORT( clk : IN STD_LOGIC;
input : IN STD_LOGIC;
res : IN STD_LOGIC;
output : OUT STD_LOGIC;
led7s : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
sel : out STD_LOGIC);
文档评论(0)