EDA课程设计-计步器

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

信息科学与技术学院《EDA技术使用教程》

课程设计报告

题目名称:计步器设计

****:**

学号:**********

专业年级:电信2012级2班

指导教师:张锐敏老师

时间:2015年1月3日

目录

三、设计内容 (4)

3.1系统分析 (4)

3.2方案设计 (5)

3.3电路模块选择 (5)

3.3.1检测上升沿模块 (6)

3.3.2计数模块 (7)

3.3.3扫描输出模块 (8)

3.3.4输入输出信号模块 (10)

四、程序设计 (10)

五、仿真结果 (15)

5.1仿真截图 (15)

5.2结果分析 (17)

六、遇到的问题 (17)

七、设计心得 (18)

八、参考文献 (20)

计步器的设置

一、设计背景

从我国的电子计步器市场发展来看,近几年随着行业需求市场的进一步增长,电子计步器呈现良好的发展态势。而随着人民生活水平的逐步提高,大家更加注重身体健康,锻炼在日常生活中显得尤为重要,而计步器就成为了大家比较青睐的锻炼伙伴。

此次交计步器的设计采用基于Verilog HDL语言和FPGA的方法来实现所要求的功能。基于FPGA的计步器设计方法具有设计的灵活性,易于修改,设计周期短等纵多优点。随着设计语言、电子设计自动化和FPGA期间的不断发展,基于FPGA期间的不断完善和发展。在不远的将来。由FPGA设计的产品将越来越普遍。

二、设计要求

通过对设计的模块划分,以及各模块功能的定义,以FPGA为核心器件,用VHDL设计手段制作、用硬件描述性语言编写程序实

现设计中各个模块的基本功能,完成其功能仿真和编译并生成底层模块,在Quartus中完成顶层设计并编译通过,完成设计下载并调试电路。

1)系统时钟1MHz;

2)拥有计步、暂停、清零(复位)功能;

3)输入端每进入一个计步脉冲(可能存在抖动),步数

计数+1,计步结果以十进制数显示在数码管上;

4)点下暂停键,计数停止,并有信号控制指示灯闪烁,

闪烁周期1s;再次点击暂停键,继续计数,指示灯停止闪

烁;

5)点下清零键,计数归零;

6)要求能够对计步脉冲和按键的抖动进行正确处理,2ms

以内的变化忽略不计;

7)持续10s无计数脉冲后,自动转入暂停状态,计数停

止,并有信号控制指示灯闪烁,闪烁周期1s;再次点击暂

停键,继续计数,指示灯停止闪烁;

三、设计内容

3.1系统分析

本实验设计完成一个电路来检测目标运动的次数,并在数码管

上显示。用传感器检测抖动信号,采集到的信号经过放大器放大,将信号转变成方波,编程将信号在 FPGA 方式处理,并将结果送数码管显示。

3.2方案设计

根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的计步器系统框图,及为设计的总体方案,框图如下图所示

3.3电路模块选择

本设计因为各个模块功能简单,故直接用内部信号线连接起来形

成一个整体,但是各模块功能简单介绍如下:

3.3.1检测上升沿模块

DIN为实际检测到的抖动信号,通过和D触发器的配合形成计数模块的使能端信号控制计数器的计数过程。

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_UNSIGNED.all;

entity jibuqi is

port (din : in std_logic;

clk : in std_logic;

reset: in std_logic;

light:out std_logic_vector(7 downto 0);

en_out:out std_logic_vector(7 downto 0));

end jibuqi;

part1:process(clk,reset)---------D 触发器

begin

if (reset='0') then

b1<='0';

elsif (clk'event and clk='1') then

b1<=din;

end process ;

3.3.2计数模块

当使能信号EN为1时,通过检测上升沿信号实现计数,并将计数信息保存在b5,b6变量内,b5为计数个位值,b6为计数十位值。part3: process(clk,reset,b4)-------- 计数器模块

begin

if (reset='0') then

b5<=(others=>'0') ;

b6<=(others=>'0');

elsif (clk'event and clk='1') then

if (b4='1') then

if (b5<"1001")then b5<=b5+'1';

elsif (b5>"1000") then b5<=(others=>'0');

if (b6<"1001")then b6<=b6+'1';

elsif (b6>"1000")then b6<=(others=>'0');

end if;

end if;

elsif (b4='0') then

b5<=b5;

相关文档
最新文档