EDA课程设计计步器_第1页
EDA课程设计计步器_第2页
EDA课程设计计步器_第3页
EDA课程设计计步器_第4页
EDA课程设计计步器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息科学与技术学院EDA技术使用教程课程设计报告题目名称: 计步器设计 学生姓名: 卢 霞 学 号: 2012508179 专业年级: 电信2012级 2班 指导教师: 张锐敏老师 时 间: 2015年1月3日 目录三、设计内容33.1系统分析33.2方案设计43.3电路模块选择4检测上升沿模块5计数模块6扫描输出模块7输入输出信号模块9四、程序设计9五、仿真结果145.1仿真截图145.2结果分析15六、遇到的问题15七、设计心得16八、参考文献18计步器的设置一、 设计背景从我国的电子计步器市场发展来看,近几年随着行业需求市场的进一步增长,电子计步器呈现良好的发展态势。而随着人民生活水平的

2、逐步提高,大家更加注重身体健康,锻炼在日常生活中显得尤为重要,而计步器就成为了大家比较青睐的锻炼伙伴。此次交计步器的设计采用基于Verilog HDL语言和FPGA的方法来实现所要求的功能。基于FPGA的计步器设计方法具有设计的灵活性,易于修改,设计周期短等纵多优点。随着设计语言、电子设计自动化和FPGA期间的不断发展,基于FPGA期间的不断完善和发展。在不远的将来。由FPGA设计的产品将越来越普遍。二、 设计要求通过对设计的模块划分,以及各模块功能的定义,以FPGA为核心器件,用VHDL设计手段制作、用硬件描述性语言编写程序实现设计中各个模块的基本功能,完成其功能仿真和编译并生成底层模块,在

3、Quartus中完成顶层设计并编译通过,完成设计下载并调试电路。1)系统时钟1MHz;2)拥有计步、暂停、清零(复位)功能;3)输入端每进入一个计步脉冲(可能存在抖动),步数计数+1,计步结果以十进制数显示在数码管上;4)点下暂停键,计数停止,并有信号控制指示灯闪烁,闪烁周期1s;再次点击暂停键,继续计数,指示灯停止闪烁;5)点下清零键,计数归零;6)要求能够对计步脉冲和按键的抖动进行正确处理,2ms以内的变化忽略不计;7)持续10s无计数脉冲后,自动转入暂停状态,计数停止,并有信号控制指示灯闪烁,闪烁周期1s;再次点击暂停键,继续计数,指示灯停止闪烁;三、 设计内容3.1系统分析本实验设计完

4、成一个电路来检测目标运动的次数,并在数码管上显示。用传感器检测抖动信号,采集到的信号经过放大器放大 ,将信号转变成方波,编程将信号在 FPGA 方式处理,并将结果送数码管显示。3.2方案设计 根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的计步器系统框图,及为设计的总体方案,框图如下图所示3.3电路模块选择本设计因为各个模块功能简单,故直接用内部信号线连接起来形成一个整体,但是各模块功能简单介绍如下:3.3.1检测上升沿模块DIN为实际检测到的抖动信号,通过和D触发器的配合形成计数模块的使能端信号控制计数器的计数过程。library ieee;use ieee.st

5、d_logic_1164.all;use ieee.std_logic_UNSIGNED.all;entity jibuqi isport (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 触发器beginif (reset='0') thenb1<='0'e

6、lsif (clk'event and clk='1') thenb1<=din;end if;end process ;3.3.2计数模块当使能信号EN为1时,通过检测上升沿信号实现计数,并将计数信息保存在b5,b6变量内,b5为计数个位值,b6为计数十位值。part3: process(clk,reset,b4)- 计数器模块beginif (reset='0') thenb5<=(others=>'0') ;b6<=(others=>'0');elsif (clk'event a

7、nd clk='1') thenif (b4='1') thenif (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

8、if;elsif (b4='0') thenb5<=b5;b6<=b6;end if;end if;end process;3.3.3扫描输出模块扫描输出模块主要由分频器构成,通过计数器构成的分频器控制电平翻转控制位的选择,以此确定输出十位和个位。part4:process(clk,reset)- 扫描输出模块,控制使能输出beginif (reset='0') thenb8<=(others=>'0');elsif (clk'event and clk='1') thenb8<=b8+

9、9;1'end if;end if;end if;if (b9='1') then en_out<="11111101"elsif (b9='0') then en_out<="11111110"end if;end process ;part5:process(b9,b5,b6)- 扫描输出模块,控制 LED 管beginif (b9='0') then plays<=b5;elsif (b9='1') then plays<=b6;end if;case

10、plays iswhen"0000"=>light<="11000000"when"0001"=>light<="11111001"when"0010"=>light<="10100100"when"0011"=>light<="10110000"when"0100"=>light<="10011001"when"0101&qu

11、ot;=>light<="10010010"when"0110"=>light<="10000010"when"0111"=>light<="11111000"when"1000"=>light<="10000000"when"1001"=>light<="10010000"when others=>light<="11111111&q

12、uot;end case;end process ;end Behavioral;3.3.4输入输出信号模块din,clk,Reset为输入信号,din为抖动信号,即人体运动时的计步信号,clk为时钟脉冲信号为计数器提供时钟脉冲,Reset为复位信号,实现计步器复位(清零)。En,dout(light)为输出信号,En_out为选择显示十位还是个位,dout为计数值,并编码显示在数码管上。四、 程序设计一个完整的VHDL语言程序通常包括实体(Entity)、结构体、配置、包集合(Package)和库(Library)5个部分组成。下面为此次课程设计的源代码。library ieee;use i

13、eee.std_logic_1164.all;use ieee.std_logic_UNSIGNED.all;entity jibuqi isport (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;architecture Behavioral of jibuqi issignal b1,b4,b9:std_logic;- 中间变量signal

14、b8:std_logic_vector(15 downto 0);- 分频signal b5,b6:std_logic_vector(3 downto 0);- 计数输出个位与十位signal plays:std_logic_vector(3 downto 0);- 选择十位或个位beginpart1:process(clk,reset)-D 触发器beginif (reset='0') thenb1<='0'elsif (clk'event and clk='1') thenb1<=din;end if;end proces

15、s ;part2: process(b1,din)- 比较器与门后输出beginif ( b1='0' and din='1' ) then b4<='1' ;else b4<='0'end if;end process;part3: process(clk,reset,b4)- 计数器模块beginif (reset='0') thenb5<=(others=>'0') ;b6<=(others=>'0');elsif (clk'even

16、t and clk='1') thenif (b4='1') thenif (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;e

17、nd if;elsif (b4='0') thenb5<=b5;b6<=b6;end if;end if;end process;part4:process(clk,reset)- 扫描输出模块,控制使能输出beginif (reset='0') thenb8<=(others=>'0');elsif (clk'event and clk='1') thenb8<=b8+'1'end if;end if;end if;if (b9='1') then en_ou

18、t<="11111101"elsif (b9='0') then en_out<="11111110"end if;end process ;part5:process(b9,b5,b6)- 扫描输出模块,控制 LED 管beginif (b9='0') then plays<=b5;elsif (b9='1') then plays<=b6;end if;case plays iswhen"0000"=>light<="11000000&q

19、uot;when"0001"=>light<="11111001"when"0010"=>light<="10100100"when"0011"=>light<="10110000"when"0100"=>light<="10011001"when"0101"=>light<="10010010"when"0110"=

20、>light<="10000010"when"0111"=>light<="11111000"when"1000"=>light<="10000000"when"1001"=>light<="10010000"when others=>light<="11111111"end case;end process ;end Behavioral;五、 仿真结果5.1仿真截图 利用u

21、artusII软件对本程序进行编译,生成了可以进行仿真定时分析以及下载到可编程器件的相关文件。仿真结果如图所示设置好的vwf仿真激励波形文件图仿真输出波形报告5.2结果分析通过设定Clk值以及din和Reset的初值,就可以得到如上所示的仿真波形图。由仿真波形图可以看出波形是由din初值信号触发而显示出各个状态的。Reset高电平信号输入时,对应en_out选定位选显示对应计数值。六、 遇到的问题1、 问题首先出现在Quartus软件的应用上,一开始把文件名取名为汉字名“计步器”,出现错误,后来知道,文件必须保存在英文文件夹下。2、 一开始没有注意到程序文件保存时要保存成实体名,VHD的形式,

22、在编译时出错。3、 在写程序的时候会输错部分关键字或漏掉一些小的标点之类的,导致编译不通过,需要经过反复查找,所以,觉得在输入程序时就应注意细节,提高一次正确率,避免一些不必要的小错误的发生,起到事半功倍的效果。4、 在编译过程中一定要按照步骤,细心仔细的完成每一个选项,在这个部分很容易出错。如果选项错误,那么在时序仿真是会出错。七、 设计心得通过本次EDA课程设计,由于我们去图书馆查阅了很多书籍,因此获得了很多知识,同时也发现了自己的很多不足,由于课程设计的时间紧迫,有些瑕疵和漏洞还没有进一步完善。但是通过这几天的学习,我还是发现了很多知识上的漏洞,同时也看到了自己的动手能力还是比较缺乏、独立思考的意识还不强、理论联系实际的能力还急需提高。正是这次课程设计让我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论