




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、可编程逻辑器件电路设计课程设计报告1/100s计时器的FPGA实现姓 名: 陆韩林 张伟槟 程科杰 班 级: 电信3 电信1 学 号: 201231190117 201231190425 201231190104 指导老师: 吕石磊、陈楚 日期: 2015.12.222015.12.29 华南农业大学电子工程学院01/100计时器的FPGA实现摘 要高精度计时器常用于体育竞赛及各种要求有较精确定时的技术领域。通常,采用中规模集成电路即可实现高精度计时器的设计。本项研究将基于新一代硬件描述语言(HDL)、采取ASIC(专用集成电路)设计方法,实现1/100s计时器的前端设计。本计时器包括5个模块
2、:消抖模块、时钟分频模块、开关及控制模块、时钟定时模块、 显示模块,以完成1/100s计时器所界定的功能。在消抖模块中,将产生消除抖动后的RST0(复位脉冲输出)和EN0(启/停脉冲输出)。时钟分频子模块。clk_div实际上是一个用计数器进行分频的分频电路,得到用于计时的100Hz脉冲信号和消除抖动的25Hz脉冲信号。控制子模块是根据计时器的工作状态,控制是否输出计数允许信号enable,它用于控制计数子模块的计数工作。计时子模块是一个定时计数器,用来产生要显示的5位计时信息,当使能信号enable有效时计数器使能或暂停。计时器显示模块的输入信号为计时模块输出的计时信息;它的输出信号是WEI
3、和DIG,驱动用于计时显示的5个LED七段显示数码管。在输出信号中,由于六进制计数器循环计数,LED四段显示数码管循环点亮来显示计时器的计时输出。对各个功能模块进行硬件描述以后,然后采用新一代可编程逻辑器件开发软件平台Quartus II,进行逻辑功能仿真与时序验证,并在FPGA开发板上进行了综合和适配。关键词:计数器 HDL 集成电路设计 仿真2目 录1.方案选择41/100s计时器的功能描述32.底层文件仿真与分析7 2.1 底层文件简介7 2.2 底层文件仿真与分析82.2.1计时模块的时序仿真82.2.2 控制模块的时序仿真83.顶层文件仿真与分析113.1使用Quartus II 9
4、.0自带仿真器对设计进行仿真113.1.1 计时器的顶层设计113.1.2 顶层模块的时序仿真与分析114.课程设计心得12Abstract20参考文献13附录(源代码)141/100计时器的FPGA实现1.方案选择1/100s计时器的功能描述1. 这里将要讨论的计时器的工作流程如下图所示,功能描述如下:图1-1计时器的工作流程图(1)要求设置复位开关。当按下复位开关时,计时器清零并做好计时准备。在任何情况下只要按下复位开关,计时器都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。(2)要求设置启/停开关。实际上启/停开关的使用方法与传统的机械式计时器完全相同:当按下启/停
5、开关后,将启动计时器并开始计时;当再次按下启/停开关时,将终止计时器的计时操作。(3)要求计时精度大于0.01s。在体育竞赛中运动员的成绩计时是以0.01s为最小单位的,因此要求设计的计时器能够显示0.01s的时间。(4) 计时器的最长计时时间为2分钟,需要一个5位的显示器,显示的最长时间为1分59.99秒(5)要求有电源复位信号的系统上电复位电路。2. 根据上面对计时器的功能描述,可以对该计时器的输入和输出电路进行以下推理。首先来对计时器的输入电路进行描述:(1)首先要按下复位开关RST进行计时器的复位清零操作,使计时器作好计时准备。(2)当做好计时准备后按下计时器的启/停开关EN,计时器开
6、始计时,计时器的最小计时单位是0.01s;计时完毕后再按一下计时器的启/停开关EN,这时将终止计时器的计时操作。(3)由于计时器的计时精度为0.01s,所以提供给计时器内部定时的时钟信号频率应该大于100Hz。这里取20MHz,所以该计时器还应该有一个100Hz的时钟输入信号clk。3. 计时器的输出电路可以描述为:(1)由于计时器的最长计时时间为1分59.99秒,因此需要一个5位的显示器。这样,在设计中就需要一个五条输出线,用来选通指定的一位LED七段显示数码管。(2)显示器的每一位都采用LED七段显示数码管进行显示,因此输出电路要有七条输出线连接在LED七段显示数码管上。4. 对计时器的输
7、入和输出电路进行推理以后,就可以很容易地给出计时器的输入和输出信号。首先给出计时器的输入信号:(1)外部时钟信号clk;(2)复位开关信号RST:用于对计时器进行清零并做好计时准备;(3)启/停开关信号。EN按下启/停开关后,将启动计时器并开始计时;当再次按下启/停开关时,将终止计时器的计时操作; 5. 输出信号的描述为:(1)LED七段显示数码管的选通信号WEI5:0:用于时器的6个LED七段显示数码管进行选通;(2)LED七段显示数码管的输出信号DIG7:0:用于控制LED七段显示数码管的显示操作。确定了计时器的输入输出信号以后,就可以给出该计时器的结构框图了。计时器的系统结构框图如图1-
8、1所示,它说明了整个数字系统的外部输入和输出情况。abc defg 7 6 5 4 3 2 1 0 DIG WEIRST ENCLK图1-2 计时器的结构框图6. 综上所述,可以确定计时器的基本方案如下:1.方案一:如图 1-2所示,本方案分为时钟分频模块、按键输入模块、功能控制模块、计时模块和显示控制模块。其中时钟分频模块对系统时钟信号作适当分频后向按键输入模块、功能控制模块、计时模块提供必要的时钟控制信号;按键输入模块则实现按键信号的实时检测与消除抖动功能,为功能控制模块提供及时稳定的按键输入信号。功能控制模块则根据按键输入状态实现复位、启动/停止计数的外部操作功能;计时模块根据功能控制模
9、块的控制信号实现要求的计时功能,然后把当前计时值输送到显示模块进行显示;显示控制模块采用静态驱动数码管的显示方式,显示实时计时值。图 1-2方案一计时器的模块结构图方案二:通过分频器得到1hz和100hz的时钟信号,按分、秒、毫秒分别计数然后通过器输出到数码管。为兼顾开发周期和系统资源的合理分配,本系统采方案二实现1/100计时器的功能。2.底层文件仿真与分析2.1 底层文件简介在任何自顶向下的VHDL设计描述中,设计人员常常将整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述,本设计亦是如此。现在根据前面描述的结构功能,来确定计时器数字系统需要使用哪些模块以及这些模块之间的
10、关系。由于计时器的复位开关和启/停开关采用按键的输入方式,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片反弹引起的电平抖动现象,因此必须在每个开关后面安排一个消抖和同步化电路模块,以保证系统能捕捉到输入脉冲,并保证每按一键,只形成一个宽度为系统时钟周期的脉冲。同步电路的方案很多,图2-1是一种既有消抖功能又有同步功能的电路,应用得非常广泛。 (1)时钟分频模块(fenpin):时钟分频模块分为两部分,分别使用子模块将外部20MHz的时信号分频为占空比为50的时钟信号CLK_250HZ和CLK_100HZ。其中,CLK_250HZ作为消除抖动和提供显示的扫描时钟,CLK_100HZ作为
11、定时计数的脉冲信号。由此可知,fenpin子模块实际上是一个用计数器进行分频的分频电路,其结构和输入输出信号关系如图2-4所示。为实现严格的同步,该模块采用同步计数电路。图2-4 时钟产生子模块结构和输入输出信号关系(2)控制模块(ctrl):控制子模块的输入信号是消抖子模块输出的启/停控制脉冲EN0和复位脉冲信号RST0。其输出信号是计数允许信号EN和复位脉冲信号RST,它用于控制计数子模块的计数工作。计时器工作时,EN端输出高电平,计时器停止工作时EN端输出低电平。由此可见,控制子模块是根据计时器的工作状态,控制是否输出计数允许脉冲的电路。(3)计时模块(count):计时模块的输入信号为
12、:去除抖动后的复位信号 RST0;系统电源复位信号RST0;计时器的内部计时时钟信号CLK_100HZ;计时模块的输出信号为:分个位信号F_Q;秒十位信号MIAO_Q2;秒个位信号MIAO_Q1;0.1s位信号XIAO_Q2;0.01s位信号MIAO_Q1。该模块是一个定时计数器,用来产生要显示的5位计时信息。 (4)显示模块(display):显示子模块的输入信号来自定时计数子模块的输出,它们是PFC,F_Q,MIAO_Q2,MIAO_Q1,XIAO_Q2,MIAO_Q1。输出信号是。WEI和DIG,用来驱动6个7段LED数码显示管。CLK是六进制计数器的计数脉冲,在该计数脉冲驱动下,六进制
13、计数器的6个状态000B101B按顺序循环变化,其输出经译码电路显示位选择译码器译码产生选通6位数码管之一的WEI信号。与此同时,CLK还作为计时位选择电路的选择信号,选择对应位的数据。首先通过信号。WEI5:0来进行6个LED七段显示数码管的选择,然后将输出信号DIG6:0送到相应的LED七段显示数码管上以完成计时器计时的显示。由于六进制计数器循环计数,因此每个位的显示时间约为0.006ms,刷新频率为150Hz。这样在6个7段LED数码管上就可以看到一个稳定的数字时间显示。7段显示关系表如表2-5所示。表 2-5 7段显示关系表 段数字hgfedcba0110000001111110012
14、10100100310110000410011001510010010610000010711111000810000000910010000R10001000E10000110C11000110通过上面的模块划分,可以设计出如图2-6所示的计时器模块结构原理图以及模块之间的连接关系。图2-6 计时器的模块划分2.2 底层文件仿真与分析2.2.1计时模块的时序仿真仿真结果如图3-1所示。图 3-1 计时模块仿真波形图由仿真波形图可以看出,当系统电源复位信号RST为低电平时,若使能信号EN有效则计数器开始有效计数。图中显示出out_min, out_10s,out_1s,out_10ms,out
15、_100ms的进位情况。10ms,100ms与1s位由0到9,图中显示为0000到1001;10s位由0到6,min由0到1。En为控制器信号。2.2.2 控制模块的时序仿真图 2-2 控制模块仿真波形图stst是启动/暂停按键,程序逻辑如图:当接收到脉冲信号,en会改变高地电平,计数器接收到高/低电平,实现继续、停止计数,计算机仿真速度较快显示信号有延迟,但符合要求。3.顶层文件仿真与分析3.1使用Quartus II 9.0自带仿真器对设计进行仿真3.1.1 计时器的顶层设计前面己经详细地讨论了计时器中各个模块的设计细节以及相应的VHDL描述。最后把这些模块组装起来,以形成计时器数字系统的
16、完整设计。下面根据图2-6所示的计时器各个模块的连接关系,给出计时器的顶层设计的VHDL描述,其中5个模块单元是以元件的形式给出的。计时器的顶层设计的VHDL描述如“附录:1 1/100s计时器FPGA实现顶层模块”所示。3.1.2 顶层模块的时序仿真与分析图3-6 顶层模块仿真波形图在波形图中,外部时钟信号CLK为频率20MHz的方波时钟脉冲信号,EN为外部启/停开关信号,RST为整体复位开关信号。有仿真结果可以得出当系统通过完全复位以后,打开EN开关以后计数器正常计数,并输出到显示模块中去。显示模块中WEI为“00000001”时XIAO_Q1被选通,并输出“0000110”即在LED七段
17、数码管中显示为“1”其他各个LED七段数码管均输出“0111111”即显示为“0”。仿真结果满足设计要求。4.课程设计心得本课程设计基于VHDL语言,按照自顶向下的现代ASIC设计方法,提出了一个高精度的数字计时器的设计方案。本计时器包括5个模块:消抖输入模块、时钟分频模块、控制模块、计时模块、 扫描模块,以完成1/100s计时器所界定的功能。在键输入模块中,将产生消除抖动后的RST0(复位脉冲输出)和EN(启/停脉冲输出)。时钟分频子模块。fenpin实际上是一个用计数器进行分频的分频电路,得到用于计时的100Hz脉冲信号和消除抖动的25Hz脉冲信号。控制子模块是根据计时器的工作状态,控制是
18、否输出计数允许信号EN,它用于控制计数子模块的计数工作。计时子模块是一个定时计数器,用来产生要显示的8位计时信息,当使能信号EN有效时计数器开始有效计数。计时器显示模块的输入信号为计时模块输出的计时信息;它的输出信号是WEI和DIG,驱动用于计时显示的6个LED七段显示数码管。在输出信号中,由于六进制计数器循环计数,LED七段显示数码管循环点亮来显示计时器的计时输出。在完成对每个模块的VHDL描述以后,实现了逻辑功能仿真与时序验证,修改与优化电路,进一步提高电路的性能。使用Quartus II自带仿真器对各模块进行仿真。选用Altera公司的新一代可编程逻辑器件开发软件平台Quartus II
19、。对该设计进行硬件验证分析,运用该软件生成相应的门级网表。在具体的FPGA器件上进行了综合和适配,按照设计要求对该设计进行了相应的操作。根据操作结果的验证,该设计完全达到了设计要求。本设计具有较强的实用性和可操作性。参 考 文 献1.潘松,黄继业.EDA技术实用教程.科学出版社.2005.2:145156.2.候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.西安电子科技大学.2004.11:4548.3.赵艳华 基于Quartus II的FPGA/CPLD设计与应用 电子工业出版社 2009附录(源代码)1.分频模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_116
20、4.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TIMER ISPORT(CLK:IN STD_LOGIC;MSEC:OUT STD_LOGIC;SEC:OUT STD_LOGIC);END TIMER;ARCHITECTURE FZ OF TIMER ISBEGIN MSECGEN:PROCESS(CLK) VARIABLE CN:INTEGER RANGE 0 TO 9;BEGIN IF RISING_EDGE(CLK) THEN CN:=CN+1; END IF;IF CN>4 THEN MSEC<='0'ELSE M
21、SEC<='1'END IF;END PROCESS MSECGEN;SECGEN:PROCESS(CLK)VARIABLE CN:INTEGER RANGE 0 TO 99;BEGIN IF RISING_EDGE(CLK) THEN CN:=CN+1; END IF;IF CN>49 THEN SEC<='0'ELSE SEC<='1'END IF;END PROCESS SECGEN;END FZ;2.控制模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD
22、_LOGIC_UNSIGNED.ALL;ENTITY CONTROLLER ISPORT(STST,RST:IN STD_LOGIC; EN:OUT STD_LOGIC);END CONTROLLER;ARCHITECTURE CTL OF CONTROLLER ISSIGNAL P:STD_LOGIC;BEGINPROCESS(STST) BEGINIF STST='1' THEN P<=NOT P ;END IF;END PROCESS;EN<=P;END CTL;3.计时模块:3.1毫秒计时LIBRARY IEEE;USE IEEE.STD_LOGIC_116
23、4.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MSEC ISPORT(rst:IN STD_LOGIC; f10ms:IN STD_LOGIC; en:IN STD_LOGIC; out_10ms:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); out_100ms:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END MSEC;ARCHITEcTURE bhv OF MSEC ISSIGNAL cnt0,cnt1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(f10ms
24、,en,rst) VARIABLE cnt10:INTEGER RANGE 0 TO 9;BEGINIF (rst='1') THEN cnt0<="0000" cnt1<="0000" ELSIF (en='1') THENIF RISING_EDGE(f10ms) THEN IF (cnt0="1001") THEN cnt0<="0000" ELSEcnt0<=cnt0+1; END IF;IF (cnt10=9) THEN cnt10:=0;IF (c
25、nt1="1001") THEN cnt1<="0000" ELSEcnt1<=cnt1+1; END IF;ELSEcnt10:=cnt10+1;END IF;END IF;END IF;END PROCESS;out_10ms<=cnt0;out_100ms<=cnt1;END bhv;3.2 秒分计时LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MINUTE ISPORT(rst:IN STD_LOGIC; f1
26、s:IN STD_LOGIC; en:IN STD_LOGIC; out_min:OUT STD_LOGIC );END MINUTE ;ARCHITEcTURE bhv OF MINUTE ISBEGINPROCESS(f1s,en) VARIABLE cnt: INTEGER RANGE 0 TO 119;BEGINIF (rst='1') THEN cnt:=0; out_min<='0' ELSIF (en='1') THENIF RISING_EDGE(f1s) THEN cnt:=cnt+1; END IF;IF (cnt>
27、;59) THEN out_min<='1' ELSE out_min<='0' END IF;END IF;END PROCESS;END bhv;4译码显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY ISPORT(lmin,l10s,l1s,l100ms,l10ms:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); in_min:IN STD_LOGIC; in_1s:IN STD_LOGIC_
28、VECTOR(3 DOWNTO 0); in_10s:IN STD_LOGIC_VECTOR(2 DOWNTO 0); in_10ms:IN STD_LOGIC_VECTOR(3 DOWNTO 0); in_100ms:IN STD_LOGIC_VECTOR(3 DOWNTO 0);END DISPLAY ;ARCHITEcTURE bhv OF DISPLAY ISBEGIN PROCESS(in_min) BEGINCASE in_min ISWHEN '1'=>lmin<="01100000" -1WHEN OTHERS=>lmin&
29、lt;="00001000"-0END CASE;END PROCESS;PROCESS(in_10s) BEGINCASE in_10s ISWHEN "101"=>l10s<="01011101" -5WHEN "100"=>l10s<="01101001" -4WHEN "011"=>l10s<="01111100" -3WHEN "010"=>l10s<="0011111
30、0" -2WHEN "001"=>l10s<="01100000" -1WHEN OTHERS=>l10s<="00001000"-0END CASE;END PROCESS;PROCESS(in_1s) BEGINCASE in_1s ISWHEN "1001"=>l1s<="11101101" -9WHEN "1000"=>l1s<="11111111" -8WHEN "0111&qu
31、ot;=>l1s<="11100100" -7WHEN "0110"=>l1s<="11011011" -6WHEN "0101"=>l1s<="11011101" -5WHEN "0100"=>l1s<="11101001" -4WHEN "0011"=>l1s<="11111100" -3WHEN "0010"=>l1s<
32、="10111110" -2WHEN "0001"=>l1s<="11100000" -1WHEN OTHERS=>l1s<="00001000"-0END CASE;END PROCESS;PROCESS(in_100ms) BEGINCASE in_100ms ISWHEN "1001"=>l100ms<="11101101" -9WHEN "1000"=>l100ms<="11111111" -8WHEN "0111"=>l100ms<="11100100" -7WHE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁波诺丁汉大学《白描花卉临摹与写生》2023-2024学年第一学期期末试卷
- 网页设计与制作项目式教程(HTML CSS)(慕课版)-习题及答案 项目四
- 山东省昌乐县第二中学2025年高三物理试题查缺补漏试题(文理)含解析
- 内蒙古大学创业学院《口腔颌面部解剖》2023-2024学年第二学期期末试卷
- 2025年中考语文热点写作素材积累:澳门回归之盛世莲花谱写“一国两制”新篇章
- 2023年上海高考语文试卷(含答案)
- 基础梁架空施工方案
- 橡胶制品施工方案
- 2025年四爱属性测试题及答案
- 5年级下册英语外研版第一模块课文
- 第二节 物业管理服务机构设置及运作流程
- 2025年上半年江西宜春市事业单位招聘工作人员651人重点基础提升(共500题)附带答案详解
- 初三心理健康 教育课件
- UL1650标准中文版-2019便携式电缆UL中文版标准
- 高血压课件教学课件
- 起重机械的安全管理制度(4篇)
- 2024解析:第十六章电压和电阻-基础练(解析版)
- 湖北联投集团2024校园招聘【298人】管理单位遴选500模拟题附带答案详解
- 2025年中考语文专题复习:记叙文阅读提炼信息(含练习题及答案)
- DZT0203-2020矿产地质勘查规范稀有金属类
- 中学实验室安全风险分级管控制度
评论
0/150
提交评论