数字跑表
数字跑表要求
1.数字跑表
要求:利用8031的计数器实现数字跑表功能,利用6个LED数码管显示计时的时间,
最大计时时间为59’59”99,计时分辨率0.01秒。
控制功能:利用开关K1控制电子钟的工作方式(K1=1为正常工作方式,K1=0为清零复位方式),通过利用单脉冲发生器发出脉冲的来启动或停止计时。
使用的主要元器件:8031、6MHz的晶振、74LS373、74LS138、2764、75452、8155、
74LS240、LED数码管LC5011-11、拨动开关K1、单脉冲发生器等。
结果验证:运行程序,将拨动开关K1拨向下方(K1=0),看6个LED数码管是否显示全为0;将拨动开关K1拨向上方(K1=1),按动单脉冲发生的微动开关发出启动计时信号,看数码管上是否显示递加的计时时间;再按动单脉冲发生的微动开关发出停止计时信号,看数码管上显示的计时时间是否停止。
通过与普通跑表的比较,验证计时是否准确。
数字跑表课程设计研究内容
数字跑表课程设计研究内容一、课程目标知识目标:1. 学生能理解数字跑表的基本概念,掌握其计时原理和操作方法;2. 学生能运用所学知识,分析并解释数字跑表在实际运动中的应用;3. 学生了解数字跑表在体育赛事中的重要作用,掌握相关赛事规则。
技能目标:1. 学生能够熟练操作数字跑表,进行简单的计时和数据处理;2. 学生通过实际操作,培养观察、分析、解决问题的能力;3. 学生学会运用数字跑表进行运动训练,提高运动效果。
情感态度价值观目标:1. 学生培养对体育运动的兴趣,增强运动参与的积极性和主动性;2. 学生通过数字跑表的学习,认识到科技在体育领域的重要作用,增强科技创新意识;3. 学生在学习过程中,培养团队合作精神和公平竞争意识,树立正确的价值观。
课程性质:本课程为实践性较强的学科课程,结合理论知识与实际操作,注重培养学生的动手能力和实际应用能力。
学生特点:学生处于好奇心强、求知欲旺盛的年级,具有一定的逻辑思维能力和动手能力,但需加强对体育运动和科技知识的了解。
教学要求:教师应结合学生特点,采用启发式教学,引导学生主动探究数字跑表的知识,注重培养学生的实际操作能力和运动素养。
同时,关注学生的情感态度价值观培养,使学生在学习过程中形成正确的价值观。
通过分解课程目标为具体学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 数字跑表基础知识:- 数字跑表的定义与功能;- 计时原理与计时方法;- 数字跑表在体育赛事中的应用。
2. 数字跑表操作与使用:- 数字跑表的结构与按键功能;- 数字跑表的操作流程;- 实际操作练习与问题解决。
3. 数字跑表在运动训练中的应用:- 运动训练中的计时需求;- 数字跑表在跑步、游泳等运动项目中的使用;- 提高运动训练效果的方法与策略。
4. 体育赛事规则与数字跑表:- 常见体育赛事的规则要点;- 数字跑表在赛事中的重要作用;- 赛事现场操作注意事项。
教学大纲安排:第一课时:数字跑表基础知识学习;第二课时:数字跑表操作与使用;第三课时:数字跑表在运动训练中的应用;第四课时:体育赛事规则与数字跑表。
电子实验数字跑表
电子科技大学基于FPGA的数字系统设计——数字跑表的设计学生姓名:学号:指导教师:摘要本文利用XILINX-ISE开发软件和XILINX EDA教学实验开发板实现数字跑表的开始、暂停以及复位等功能。
ISE工程利用VHDL语言编写,单模块包含时钟分频进程、始能及清零进程、时钟数据产生进程、位码产生进程和显示进程;分模块设计包含时钟分频模块、控制模块、计数器模块、显示模块。
计时区间00’00’’00到59’59’’99。
课余设计的单模块源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity paobiao isPort ( clkin : in STD_LOGIC;enable : in STD_LOGIC;clear : in STD_LOGIC;seg : out STD_LOGIC_VECTOR (7 downto 0);wei : out STD_LOGIC_VECTOR (2 downto 0);enout : out STD_LOGIC);end paobiao;architecture Behavioral of paobiao issignal cnt100: integer range 1 to 240000;signal cnt1k: integer range 1 to 24000;signal clk100: std_logic:='0';signal clk1k : std_logic:='0';signal en: std_logic:='0';signal d1: integer range 0 to 5:=0;signal d2: integer range 0 to 9:=0;signal d3: integer range 0 to 5:=0;signal d4: integer range 0 to 9:=0;signal d5: integer range 0 to 9:=0;signal d6: integer range 0 to 9:=0;signal num: integer range 1 to 6:=1;beginenout<='0';process(clkin)beginif clkin'event and clkin='1' thenif cnt100=240000 thencnt100<=1;clk100<=not clk100;elsecnt100<=cnt100+1;end if;if cnt1k=24000 thencnt1k<=1;clk1k<=not clk1k;elsecnt1k<=cnt1k+1;end if;end if;end process;process(enable,clear)beginif clear='0' thenen<='0';elseif enable'event and enable='1' thenen<=not en;end if;end if;end process;process(clear,d1,d2,d3,d4,d5,d6)beginif clear='0' thend1<=0;d2<=0;d3<=0;d4<=0;d5<=0;d6<=0;-- en<=0;elseif en='1' and clk100'event and clk100='1' then if d6=9 thend6<=0;if d5=9 thend5<=0;if d4=9 thend4<=0;if d3=5 thend3<=0;if d2=9 thend2<=0;if d1=5 thend1<=0;elsed1<=d1+1;end if;elsed2<=d2+1;end if;elsed3<=d3+1;end if;elsed4<=d4+1;end if;elsed5<=d5+1;end if;elsed6<=d6+1;end if;end if;end if;end process;process(num)beginif clk1k'event and clk1k='1' thenif num=6 thennum<=1;elsenum<=num+1;end if;end if;end process;process(num)variable data: integer range 0 to 9;begincase num iswhen 1 => wei<="111";data:=d1;when 2 => wei<="110";data:=d2;when 3 => wei<="100";data:=d3;when 4 => wei<="011";data:=d4;when 5 => wei<="001";data:=d5;when 6 => wei<="000";data:=d6;end case;case data iswhen 0 => seg<="00000011";when 1 => seg<="10011111";when 2 => seg<="00100101";when 3 => seg<="00001101";when 4 => seg<="10011001";when 5 => seg<="01001001";when 6 => seg<="01000001";when 7 => seg<="00011111";when 8 => seg<="00000001";when 9 => seg<="00001001";end case;end process;end Behavioral;管脚分配NET "clkin" LOC = T8;NET "enout" LOC = D7;NET "seg<0>" LOC = C11;NET "seg<1>" LOC = A11;NET "seg<2>" LOC = B12;NET "seg<3>" LOC = A12;NET "seg<4>" LOC = C12;NET "seg<5>" LOC = C13;NET "seg<6>" LOC = A13;NET "seg<7>" LOC = B14;NET "wei<0>" LOC = F8;NET "wei<1>" LOC = D8;NET "wei<2>" LOC = E7;NET "clear" LOC = E4;NET "enable" LOC = G6;课时设计一、系统总体设计指标:1、跑表精度为0.01秒2、跑表计时范围为:1小时3、设置开始计时/停止计时、复位两个按钮4、显示工作方式:用六位BCD七段数码管显示读数。
数字跑表的设计与仿真
EAST CHINA INSTITUTE OF TECHNOLOGY EDA设计与应用课程设计:数字跑表的设计与仿真学院:机械与电子工程学院专业:电子科学与技术班级:1221402学号:201220140223姓名:杨卡2014年11月一、实验目的:1)进一步学习更复杂的EDA项目设计,更熟练地掌握VHDL语言设计。
2)学习动态数码管的VHDL编程。
3)更加熟练计时显示、进位和校时的编程方法。
二、实验要求:1)设计一个具有、‘分'、‘秒'、‘ 1/100 秒'的十进制数字显示的数字跑表。
2)要有外部开关,控制计数器的直接清零、启动和暂停/ 连续计时功能。
三、实验内容:1)数字跑表功能:计时精度10ms,计时范围为59分59.99秒。
设置两种模式,模式一:对单个人计数,能实现暂停、显示及清零功能,并在数码管上实时显示;模式2:实现对多个人的同时计时,在数码管上实时显示,并能在液晶显示屏上回显出 6 个时间,可控制显示。
2)数字跑表分模块设计:数字跑表设置如下的子模块。
分频模块;模式 1 控制模块;模式 2 控制模块;计时模块;数码管译码模块;液晶译码模块;液晶显示模块。
百分秒、秒和分等信号即采用BCD译码计数方式,根据上述设计要求,用Verilog 对数字跑表的描述如下。
仍然采用引脚属性定义语句进行引脚的锁定。
四、设计程序(此处只写出与课本中不同的部分)为了便于显示,百分秒、秒和分钟信号皆采用BCD码计数方式,并直接输出到6 个数码管显示出来。
根据上述设计要求,用Verilog HDL 语言对数字跑表描述如下。
/* 信号定义:CLK: CLR: PAUSE: MSH,MSL:时钟信号;异步复位信号;暂停信号;百分秒的高位和低位;SH,SL :秒的高位和低位;MH,ML:分钟的高位和低位。
*/module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML); input CLK,CLR,PAUSE; output[3:0] MSH,MSL,SH,SL,MH,ML; reg[3:0] MSH,MSL,SH,SL,MH,ML;reg cn1,cn2; //cn1 为百分秒向秒进位,cn2 为秒向分进位//**************** 百分秒计数进程,每计满100,cn1 产生一个进位*******always @(posedge CLK or posedge CLR)begin if(CLR) begin {MSH,MSL}<=8'h00; cn1<=0;end // 异步复位else if(!PAUSE) //PAUSE 为0 时正常计数,为1 时暂停计数begin if (MSL==9) begin MSL<=0;if (MSH==9) begin MSH<=0;cn1<=1;endelse MSH<=MSH+1;endelse begin MSL<=MSL+1;cn1<=0;endendend秒计数进程,每计满60,cn2 产生一个进位********* always @(posedge cn1 or posedge CLR)begin if(CLR) begin {SH,SL}<=8'h00;cn2<=0; end // 异步复位else if(SL==9)begin SL<=0;if (SH==5) begin SH<=0;cn2<=1; end else SH<=SH+1;endelse begin SL<=SL+1;cn2<=0;end end //****************** 分钟计数进程,每计满60,系统自动清零********* always @(posedge cn2 or posedge CLR) begin if(CLR) begin {MH,ML}<=8'h00;end // 异步复位else if (ML==9) begin ML<=0;if(MH==5) MH<=0;else MH<=MH+1;endelse ML<=ML+1;endendmodule五、心得体会:此次课程设计,从程序设计到仿真,我经历了一个困难重重,愈挫愈勇的过程。
基于fpgh数字跑表课程设计
基于fpgh数字跑表课程设计一、教学目标本课程旨在通过fpgh数字跑表的学习,让学生掌握数字跑表的基本原理、使用方法及其在实际中的应用。
具体的教学目标如下:1.了解数字跑表的基本原理。
2.掌握数字跑表的使用方法。
3.掌握数字跑表在实际中的应用。
4.能够独立操作数字跑表进行测量。
5.能够根据实际需要选择合适的数字跑表。
6.能够对数字跑表进行简单的故障排查和维护。
情感态度价值观目标:1.培养学生对科学技术的兴趣和好奇心。
2.培养学生勇于实践、积极探究的科学精神。
3.培养学生珍惜时间、高效利用时间的意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.数字跑表的基本原理:介绍数字跑表的工作原理、组成部分及其功能。
2.数字跑表的使用方法:讲解如何正确操作数字跑表进行测量,包括基本操作和注意事项。
3.数字跑表在实际中的应用:举例说明数字跑表在各个领域的实际应用,如运动、交通、工程等。
4.数字跑表的维护与故障排查:介绍数字跑表的日常维护方法及故障排查技巧。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
具体包括:1.讲授法:讲解数字跑表的基本原理、使用方法及其应用。
2.讨论法:学生针对数字跑表的实际应用展开讨论,分享彼此的经验和心得。
3.案例分析法:通过分析具体案例,使学生更好地理解数字跑表在实际中的应用。
4.实验法:安排实验室实践环节,让学生亲自动手操作数字跑表,提高操作技能。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的数字跑表教材,为学生提供系统的理论知识。
2.参考书:提供相关的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。
4.实验设备:准备充足的数字跑表设备,确保每个学生都能动手操作。
5.网络资源:利用网络资源,为学生提供更多的学习资料和实践案例。
五、教学评估为了全面、客观地评估学生在fpgh数字跑表课程中的学习成果,我们将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与度、提问回答等情况,评估其对课程内容的理解和掌握程度。
数字跑表实验报告
数字跑表实验报告数字跑表实验报告一、引言数字跑表是一种用于测量时间的仪器,广泛应用于各个领域,包括运动训练、科学研究等。
本实验旨在通过使用数字跑表,探究其测量精度和使用方法,并对其优缺点进行评估。
二、实验步骤1. 实验准备在实验开始前,我们首先确认数字跑表的电池是否充足,并检查其屏幕是否清晰可见。
同时,我们还准备了一个标准的计时器作为对照组,以便比较两者的测量结果。
2. 测量准确性为了评估数字跑表的测量准确性,我们进行了多组实验。
首先,我们使用数字跑表测量了一个已知时间长度的事件,例如一个钟摆的周期。
然后,我们将数字跑表的测量结果与标准计时器的结果进行比较,计算它们之间的误差。
3. 使用方法在实验中,我们还研究了数字跑表的使用方法。
我们通过阅读说明书和观察其他人的实验过程,学习如何正确地启动和停止数字跑表,并掌握其它功能,如计次和计时。
4. 优缺点评估在实验结束后,我们对数字跑表的优缺点进行了评估。
其中,数字跑表的优点包括测量精度高、操作简便、功能多样等。
然而,它也存在一些缺点,如对电池的依赖性、容易受到外界干扰等。
三、实验结果通过多组实验,我们得出了以下结论:1. 数字跑表的测量准确性较高,与标准计时器的误差在可接受范围内。
2. 使用数字跑表的方法相对简单,只需按下启动和停止按钮即可完成计时操作。
计次和计时功能也易于掌握。
3. 数字跑表的优点包括测量精度高、操作简便、功能多样等。
这使得它在运动训练、科学研究等领域得到广泛应用。
4. 然而,数字跑表也存在一些缺点。
首先,它对电池的依赖性较高,电池电量不足时会影响正常使用。
其次,数字跑表容易受到外界干扰,如电磁波等,可能导致测量结果的误差。
四、讨论与改进在实验过程中,我们也发现了一些问题,并提出了改进的建议:1. 电池寿命:为了减少对电池的依赖性,我们建议增加数字跑表的电池容量,或者提供可充电电池选项。
2. 抗干扰能力:为了提高数字跑表的抗干扰能力,我们建议在设计中加入屏蔽措施,以减少外界干扰对测量结果的影响。
数字跑表设计
学号:课程设计题目数字跑表设计学院自动化学院专业班级姓名指导教师年月日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 数字跑表设计初始条件:1.运用所学的模拟电路和数字电路等知识;2.用到的元件:实验板、电源、连接导线、74系列芯片、555芯片或微处理器等。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.设计一个具有、‘分’、‘秒’、‘1/100秒’的十进制数字显示的计时器。
2.要有外部开关,控制计数器的直接清零、启动和暂停/连续计时功能;3.严格按照课程设计说明书要求撰写课程设计说明书。
时间安排:第1天下达课程设计任务书,根据任务书查找资料;第2~4天进行方案论证,软件模拟仿真并确定设计方案;第5天提交电路图,经审查后领取元器件;第6~8天组装电路并调试,检查错误并提出问题;第9~11天结果分析整理,撰写课程设计报告,验收调试结果;第12~14天补充完成课程设计报告和答辩。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录引言 (1)1设计意义及要求 (2)1.1设计意义 (2)1.2设计要求 (2)2方案设计 (3)2.1设计思路 (3)2.2 方案设计 (4)2.2.1设计方案一(个人方案)电路图 (4)2.2.2设计方案二(小组方案)电路图简单说明 (5)2.3方案比较 (6)3部分电路设计 (7)3.1计数单元 (7)3.2开始和暂停单元 (11)3.3清零功能单元 (12)3.4脉冲输出电路 (14)3.5译码及显示电路 (15)4调试与检测 (18)4.1调试中故障及解决办法 (18)4.2 调试与运行结果 (18)5仿真操作步骤及使用说明 (19)结束语 (20)参考文献 (21)附录1 (22)附录2 (23)本科生课程设计成绩评定表......................... 错误!未定义书签。
引言过去的三个世纪,我们经历了第一次工业革命,人类开始进入蒸气时代,第二次工业革命,人类开始进入电气时代并在信息革命资讯革命中达到顶峰。
EDA课程设计——数字跑表
第一章引言数字电子技术的应用一直在向着广度和深度扩展。
时至今日,“数字化”的浪潮几乎席卷了电子技术应用的一切领域。
由于电子产品的更新周期日益缩短,新产品开发速度日益加快,因而对电子设计自动化(EDA)提出了更高的要求,也有力地促进了EDA技术的发展和普及。
在数字集成电路方面,电路的集成度如摩尔定律(Moore’s Law)所预言的那样,以每1-2年翻一番的速度增长,使电路的复杂程度越来越高、规模越来越大。
同时,在基本技能方面,对使用EDA工具的能力也提出了更高的要求。
因此,学好EDA课程设计至关重要。
第二章 设计说明1.器件介绍-集成十进制加法计数器74160集成同步十进制加法计数器74160。
图2-1给出了74160的引脚排列图和逻辑符号图。
除了具有十进制加法计数功能外,还具有异步复位、同步预置数和计数状态保持、对输入的时钟信号进行分频等功能。
CLRN 为异步复位端,LDN 为预置数控制端,A-D 为预置状态输入端,RCO 为进位输出端,ENT 和ENP 为工作状态控制端(双使能端)。
图2-1 74160逻辑符号图 表2-1 74160功能特性 表2-2是74160的功能表,它给出了各种控制信号作用下计数器的工作状态,具体如下。
序号 CLK CLRN LDN ENP ENT 工作状态 1 × 0 × × × 复位 2 ↑ 1 0 × × 预置数 3 ↑ 1 1 1 1 正常计数 4 × 1 1 × 0 保持,且C=0 5×110 1保持表2-2 74160的功能表⑴当CLRN=0时,无论其他功能端为何状态,计数器都将复位,有QD ~QA=0000(注:QD 为状态端最高位)。
⑵当CLRN=1、LDN=0时,计数器处于预置数状态。
在出现此情况后的第一个CLK 上升沿,将预置输入端加载的数据送入计数器,即有QD ~QA=D ~A(注:D 为置入端最高位)。
课程设计数字跑表
课程设计数字跑表一、教学目标本课程的教学目标是使学生掌握数字跑表的基本原理和操作方法,培养学生对数字技术的兴趣和好奇心,提高学生的实践能力和创新精神。
具体来说,知识目标包括了解数字跑表的定义、结构和功能,理解数字跑表的工作原理;技能目标包括学会使用数字跑表进行计时和计数,能够进行简单的故障排除和维护;情感态度价值观目标包括培养学生对数字技术的热爱和责任感,增强学生的团队合作意识和沟通能力。
二、教学内容本课程的教学内容主要包括数字跑表的基本原理、操作方法和应用实践。
具体包括以下几个方面:1. 数字跑表的定义和分类;2. 数字跑表的结构和功能;3. 数字跑表的工作原理;4. 数字跑表的操作方法和使用注意事项;5. 数字跑表的应用实践和案例分析。
三、教学方法为了实现教学目标,本课程将采用多种教学方法相结合的方式进行教学。
包括:1. 讲授法:通过教师的讲解,使学生了解数字跑表的基本原理和操作方法;2. 讨论法:通过小组讨论,培养学生的思考能力和团队合作意识;3. 案例分析法:通过分析实际案例,使学生掌握数字跑表的应用实践;4. 实验法:通过动手实验,培养学生的实践能力和创新精神。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1. 教材:选用权威、实用的教材,为学生提供系统的学习材料;2. 参考书:提供相关的参考书籍,丰富学生的知识体系;3. 多媒体资料:制作课件、视频等多媒体资料,提高学生的学习兴趣和效果;4. 实验设备:准备数字跑表等相关实验设备,为学生提供实践操作的机会。
五、教学评估本课程的评估方式将包括平时表现、作业和考试三个部分,以全面、客观、公正地评估学生的学习成果。
平时表现将根据学生在课堂上的参与度、提问和回答问题的表现等进行评估;作业将根据学生的完成情况和质量进行评估;考试将根据学生的答题情况和得分进行评估。
评估结果将及时反馈给学生,以帮助学生了解自己的学习情况,提高学习效果。
数字跑表模块设计
显示内容
可显示当前时间、已用时间、剩余时间、距离、 速度等比赛和训练数据。
显示亮度与对比度
具备可调节的显示亮度与对比度,以适应不同光线环境。
控制模块设计
控制方式
采用微控制器进行系统控制,实现各种功能的逻辑处理。
数据处理
对采集的数据进行实时处理,确保计时和显示的准确性。
人机交互
通过按键或触摸屏实现人机交互,方便用户进行功能设置和操作。
数字跑表的重要性
提高训练效果
通过精确记录运动数据,数字跑 表可以帮助运动员了解自己的训 练状态,制定合理的训练计划, 提高训练效果。
比赛成绩记录
在比赛中,数字跑表可以精确记 录运动员的成绩,保证比赛的公 平性和准确性。
健康监测
数字跑表还可以监测运动者的心 率、步数等健康数据,帮助运动 者了解自己的身体状况,预防运 动损伤。
低功耗设计技术
节能模式
支持低功耗模式,在非 使用状态下自动进入节 能状态。
硬件优化
采用低功耗硬件设计和 电路优化,降低功耗。
电源管理
采用智能电源管理系统, 根据需求合理分配电源。
可靠性设计技术
故障检测与恢复
具备故障检测和恢复机制,确保在异常情况 下仍能保持正常运行。
防抖动设计
防止因按键或触摸产生的抖动对计时精度的 影响。
采用先进的计时算法,如分段计时法,以提高计 时精度。
校准与同步
定期校准和与标准时钟同步,以保持计时准确性。
人机交互技术
1 2
显示界面
提供清晰、易读的显示界面,包括计时、计圈、 计分等功能。
输入方式
支持多种输入方式,如触摸屏、按键等,方便用 户操作。
3
语音提示
课程设计数字跑表
一、设计题目及要求设计题目:数字跑表要求:1 具有暂停,启动功能;2 具有重新开始功能;3 用六个数码管分别显示百分秒,秒和分钟。
二、设计过程及内容总体设计:第一,对于要实现的暂停、启动和重新开始功能,需要有一个控制模块完成相关控制。
第二由题意可知需要一个分频模块,将实验箱提供的频率转换为100HZ即数字跑表百分秒的频率。
第三是计时模块,完成跑表的百分秒、秒和分钟的计时功能。
第四由于实验箱提供的数码显示是扫描显示,这就需要一个选时模块。
第五部分则是显示模块。
详细设计过程:根据要求,将设计分成五个模块:1、控制模块:使跑表具有启动、暂停及重新开始的功能;2、分频模块:将实验箱所提供的频率转换为设计题目所需要的100HZ 的时钟脉冲;3、计时模块:进行百分秒、秒、分的计时,并且将当前时间输出给选时模块;4、选时模块:从计时器得到当前时间输出给显示模块;5、显示模块:通过数码管显示时间。
总图如下:仿真波形:第一个模块:控制模块控制模块主要运用了两个D触发器,输入到触发器的时钟信号CLK1频率为2.86Hz,对电路起到了防抖的功能。
START/STOP为启动\暂停按钮,当跑表为START状态时CLK端为高电平,Q为1,时钟信号输出,当跑表为STOP状态时CLK端为低电平,Q为0,时钟信号不输出,从而实现开始和暂停的功能。
与门可控制时钟信号是否被输出到下一级。
RESET端为全局清零按钮,接到控制模块和计时模块的清零端,负责将计数器清零。
当RESET为低电平时,控制模块和总计数器模块清零,跑表重新开始工作。
电路图如下:仿真波形:第二个模块:分频模块为了将实验箱提供的1465HZ转换成实验需要的100HZ,我将74161接成15进制计数器,实现分频的功能,转换为100HZ的近似时钟信号。
然后将输出的时钟接入到计时模块。
电路图如下:仿真波形:第三个模块:计时模块计时模块由一个100进制计数器和两个60进制计数器构成,从而实现百分秒向秒、秒向分的计数功能需求。
数字跑表设计eda课程设计
数字跑表设计eda课程设计
数字跑表设计EDA课程设计涉及以下方面:
1. 数字跑表的功能设计:确定数字跑表需要具备的基本功能,比如显示跑步时间、距离和速度等数据,同时可以设置跑步目标、记录跑步历史等。
2. 界面设计:设置数字跑表的界面布局,包括显示屏、按钮和操作界面等,保证用户操作的便捷性和信息的直观性。
3. 系统架构设计:确定数字跑表的硬件和软件架构,包括选择合适的处理器、存储器和显示设备等,同时设计相应的实时操作系统和驱动程序,使得运行速度和稳定性达到要求。
4. 电路设计:设计数字跑表的电路图,包括电源管理电路、时钟电路、数据采集电路等,确保数字跑表的正常工作。
5. 数据采集与处理:设计合适的传感器,比如加速度传感器和GPS模块等,用于采集跑步的相关数据,并通过算法对数据进行处理,得到准确的跑步时间、距离和速度等信息。
6. 功能测试与验证:对设计的数字跑表进行功能测试和性能验证,确保数字跑表的稳定性和准确性,同时对可能出现的问题进行改进和优化。
7. 用户体验设计:通过调研和用户反馈,不断改进数字跑表的用户体验,包括界面交互、操作流程和功能设置等,提高用户的满意度。
8. 产品生产与推广:根据设计的数字跑表进行产业化生产,并进行推广和营销,使得数字跑表能够被广泛使用和接受。
数字跑表设计eda课程设计
数字跑表设计eda课程设计【原创版】目录1.数字跑表设计概述2.EDA 课程设计的目的和意义3.数字跑表的主要功能和特点4.数字跑表的设计流程5.EDA 课程设计对数字跑表设计的影响和应用正文数字跑表设计是电子设计自动化 (EDA) 课程设计中的一个重要项目,目的是让学生通过实践了解和掌握数字电路的设计方法和技巧。
数字跑表是一种能够记录跑步时间和距离的电子设备,主要功能是计时和计数,同时还具备闹钟、计时器等附加功能。
数字跑表的设计流程主要包括需求分析、系统设计、电路设计、PCB 设计、测试和调试等步骤。
在 EDA 课程设计中,学生需要使用 EDA 软件来完成数字跑表的设计。
EDA 软件能够提供可视化的电路设计和仿真环境,学生可以通过绘制原理图、PCB 图等来实现数字跑表的设计。
同时,EDA 软件还能够提供多种工具和函数库,帮助学生快速实现数字跑表的各种功能。
数字跑表的主要功能是计时和计数。
计时功能是指数字跑表能够准确地记录跑步时间,同时能够在跑步过程中实时显示跑步速度和距离。
计数功能是指数字跑表能够记录跑步的圈数和步数等信息,以便用户了解自己的跑步情况。
数字跑表还具备闹钟、计时器等附加功能,方便用户进行更多的运动训练。
EDA 课程设计对数字跑表设计具有重要的影响和应用。
通过 EDA 课程设计,学生能够学习和掌握数字电路的设计方法和技巧,提高数字电路设计和实现的能力。
同时,EDA 软件提供的可视化设计和仿真环境,能够帮助学生更好地理解数字跑表的工作原理和电路结构,加快数字跑表的设计和测试进度。
数字跑表设计是 EDA 课程设计中的一个重要项目,能够帮助学生学习和掌握数字电路的设计方法和技巧。
数字跑表的主要功能是计时和计数,同时还具备闹钟、计时器等附加功能。
数字跑表
自己做的简易数字跑表,基于de2的fpga的验证,有复位,暂停功能。
自己测试过了,成功。
只是这个算法很简单,就是一步步写的verilog语言。
现在正在设计另一种算法。
module paobiao1(CLK,CLR,PAUSE,HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7); input CLK,CLR,PAUSE;output[6:0]HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7;reg[6:0]HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7;reg[3:0] MSH,MSL,SH,SL,MH,ML,H,L;reg[18:0]count;reg [3:0]cn1,cn2,cn3;always @(posedge CLK )begincount=count+1'b1;if(count==19'd250000)beginif(CLR)begin{MSH,MSL}=8'h00;cn1=0;HEX1=7'b1000000;HEX0=7'b1000000;endelseif(!PAUSE)beginif(MSL==4'ha)beginMSH=MSH+4'h1;MSL=4'h0;case(MSH)4'h0:HEX1=7'b1000000;4'h1:HEX1=7'b1111001;4'h2:HEX1=7'b0100100;4'h3:HEX1=7'b0110000;4'h4:HEX1=7'b0011001;4'h5:HEX1=7'b0010010;4'h6:HEX1=7'b0000010;4'h7:HEX1=7'b1111000;4'h8:HEX1=7'b0000000;4'h9:HEX1=7'b0010000;4'ha:HEX1=7'b1000000;endcaseif(MSH==4'ha)beginMSH=4'h0;cn1=1;endendelsebeginMSL=MSL+1; cn1=0;case(MSL)4'h0:HEX0=7'b1000000;4'h1:HEX0=7'b1111001;4'h2:HEX0=7'b0100100;4'h3:HEX0=7'b0110000;4'h4:HEX0=7'b0011001;4'h5:HEX0=7'b0010010;4'h6:HEX0=7'b0000010;4'h7:HEX0=7'b1111000;4'h8:HEX0=7'b0000000;4'h9:HEX0=7'b0010000;4'ha:HEX0=7'b1000000;endcaseendendendendalways @(posedge cn1 or posedge CLR)beginif(CLR)begin{SH,SL}=8'h00;cn2=0;HEX2=7'b1000000;HEX3=7'b1000000;endelseif(!PAUSE)beginif(SL==4'h9)beginSH=SH+4'h1; SL=4'h0;case(SL)4'h0:HEX2=7'b1000000;endcasecase(SH)4'h0:HEX3=7'b1000000;4'h1:HEX3=7'b1111001;4'h2:HEX3=7'b0100100;4'h3:HEX3=7'b0110000;4'h4:HEX3=7'b0011001;4'h5:HEX3=7'b0010010;4'h6:HEX3=7'b1000000;endcaseif(SH==4'h6)begin SH=4'h0; cn2=1; endendelsebegin SL=SL+1; cn2=0;case(SL)4'h0:HEX2=7'b1000000;4'h1:HEX2=7'b1111001;4'h2:HEX2=7'b0100100;4'h3:HEX2=7'b0110000;4'h4:HEX2=7'b0011001;4'h5:HEX2=7'b0010010;4'h6:HEX2=7'b0000010;4'h7:HEX2=7'b1111000;4'h8:HEX2=7'b0000000;4'h9:HEX2=7'b0010000;4'ha:HEX2=7'b1000000;endcaseendendendalways @( posedge cn2 or posedge CLR)beginif(CLR)begin{MH,ML}=8'h00;cn3=0;HEX4=7'b1000000;HEX5=7'b1000000;endelseif(!PAUSE)beginif(ML==4'h9)beginMH=MH+1; ML=4'h0;case(ML)4'h0:HEX4=7'b1000000;endcasecase(MH)4'h0:HEX5=7'b1000000;4'h1:HEX5=7'b1111001;4'h2:HEX5=7'b0100100;4'h3:HEX5=7'b0110000;4'h4:HEX5=7'b0011001;4'h5:HEX5=7'b0010010;4'h6:HEX5=7'b1000000;endcaseif(MH==4'h6)begin MH=4'h0; cn3=1; endendelsebegin ML=ML+1; cn3=0;case(ML)4'h0:HEX4=7'b1000000;4'h1:HEX4=7'b1111001;4'h2:HEX4=7'b0100100;4'h3:HEX4=7'b0110000;4'h4:HEX4=7'b0011001;4'h5:HEX4=7'b0010010;4'h6:HEX4=7'b0000010;4'h7:HEX4=7'b1111000;4'h8:HEX4=7'b0000000;4'h9:HEX4=7'b0010000;4'ha:HEX4=7'b1000000;endcaseendendendalways @( posedge cn3 or posedge CLR ) beginif(CLR)begin{H,L}=8'h00;HEX6=7'b1000000;HEX7=7'b1000000;endelseif(!PAUSE)beginif(L==4'h9)beginH=H+1; L=4'h0;case(L)4'h0:HEX6=7'b1000000;endcasecase(H)4'h0:HEX7=7'b1000000;4'h1:HEX7=7'b1111001;4'h2:HEX7=7'b0100100;4'h3:HEX7=7'b0110000;4'h4:HEX7=7'b0011001;4'h5:HEX7=7'b0010010;4'h6:HEX7=7'b0000010;4'h7:HEX7=7'b1111000;4'h8:HEX7=7'b0000000;4'h9:HEX7=7'b0010000;4'ha:HEX7=7'b1000000;endcaseif(H==4'ha) H=4'h0 ;endelsebegin L=L+1;case(L)4'h0:HEX6=7'b1000000;4'h1:HEX6=7'b1111001;4'h2:HEX6=7'b0100100;4'h3:HEX6=7'b0110000;4'h4:HEX6=7'b0011001;4'h5:HEX6=7'b0010010;4'h6:HEX6=7'b0000010;4'h7:HEX6=7'b1111000;4'h8:HEX6=7'b0000000;4'h9:HEX6=7'b0010000;4'ha:HEX6=7'b1000000;endcaseendendendendmodule。
数字跑表实验
数字跑表实验一、实验目的1、 学会利用MAX+PLUS II 的宏单元和所学的数字电路的知识,搭建复杂一点的数字电路或系统;2、 学会使用EDA 实验箱,下载验证所设计电路。
二、实验原理数字跑表是体育竞赛常用计时工具,一般精确到1/100秒。
图2-1为数字跑表的输入输出示意图。
输入有三个信号,第1个信号为CLK ,是基准时钟,周期为1/100秒;第2个信号是清零信号,CLR=1时清零,CLR=0时跑表从0开始计数;第3个信号是暂停信号,当PAUSE=0时跑表暂停计数。
输出分别为分钟,秒钟和百分秒的BCD 码,各用二位数码管显示。
图2-1 数字跑表输入输出示意图三、数字跑表原理框图与原理图图2-2 数字跑表原理框图CLKPAUSE CLRCLKPAUSE CLR秒 百分秒 分图2-3 数字跑表原理图数字跑表有暂停(PAUSE)和清零(CLR)功能,PAUSE功能通过计数器的时钟使能实现,CLR功能通过计数器的清零端实现。
计数模块的设计采用6块10进制计数器来实现,百分秒使用了模100的计数器,秒与分使用了模60的计数器。
显示部分通过译码器译码,分别在6个数码管上显示结果。
时钟输入频率为100Hz,通过分频器把实验板提供的50MHz时钟信号进行分频,即可得到100Hz的时钟信号。
四、仿真结果图2-4(a)百分秒仿真结果图2-4(b)秒仿真结果图2-4(c)分仿真结果上图中,输出端o1、o2显示百分秒仿真结果,即模100计数结果;输出端o3、o4显分秒仿真结果,即模60计数结果;输出端o5、o6显示分仿真结果,即模60计数结果。
五、设计心得本次实验做一个数字跑表,电路的原理较简单,但在实际设计过程中却遇到了不少问题。
首先,本次实验所设计的电路用到的芯片比较多,设计时的粗心大意,把输入端的有效电平弄错,带来了不必要困扰;其次是计数器进位的处理,用了6块10进制计数芯片,进位端较多,还需要与其他逻辑门的配合,很容易混淆接错,因而花了较长时间在错误检查上。
数字跑表设计
西南科技大学设计报告课程名称:基于FPGA的现代数字系统设计设计名称:基于原理图的数字跑表设计姓名:学号:班级:指导教师:西南科技大学信息工程学院一、实验目的1、设计一个数字跑表,具有复位、暂停、秒表等功能二、实验原理1.完成一个具有数显输出的数字跑表计数器设计,原理图如下图所示。
、数字跑表计数器原理图任务分析:输入端口:1)复位信号CLR,当CLR=1,输出全部置0,当CLR=0,系统正常工作。
2)暂停信号PAUSE,当PAUSE=1,暂停计数,当PAUSE=0,正常计数。
3)系统时钟CLK,CLK=50MHz 输出端口:数码管驱动----DATA1,位宽14位,其中,DATA1[7:0]是数码管显示值,DATA1[14:8]是数码管控制端口屏蔽未用端口---ctr,位宽是2,将未用的两个数码管显示关闭(1)跑表的计时范围为0.01s~59min59.99s,计时精度为10ms;(2)具有异步复位清零、启动、计时和暂停功能;(3)输入时钟频率为100Hz;(4)要求数字跑表的输出能够直接驱动共阴极7段数码管显示.按照自顶向下设计,应该分为以下模块:分频----将下载板上50MHz时钟分频为周期是0.01秒的时钟,提供给百分计数计数1----百分计数,输入周期是0.01秒的时钟,计数,满100进位,注意个位,十位的不同生成计数2---60进制计数器,输入百分位,或者秒位的进位,计数,满60向高位进位,注意个位,十位的不同生成数码管显示控制----驱动数码管数据,显示控制端口。
三、实验步骤1、数码管显示驱动模块的设计(1)建立工程:file->New Project,并注意器件、EDA工具的正确选择(2)建立新Verilog HDL模块编辑窗口,选择资源类型为Verilog Module,并输入合法文件名,在文本编辑窗口输入代码。
(3)执行综合得到综合后的电路,并进行功能时序仿真。
2.计数器模块的设计设计步骤同数码管的设计,并完成模块的设计输入、综合、功能仿真。
数字跑表设计verilog原理
数字跑表设计verilog原理数字跑表是一种常见的计时工具,它可以精确地记录时间,并用数字显示出来。
在现实生活中,我们可以看到跑步比赛、游泳比赛、田径比赛等许多场合都使用了数字跑表来计时。
那么,数字跑表是如何设计的呢?在本文中,我们将以Verilog原理为基础,详细介绍数字跑表的设计原理。
我们需要了解数字跑表的基本功能。
数字跑表主要包括计时、暂停、复位和显示等功能。
计时功能可以实时记录经过的时间;暂停功能可以停止计时,以便记录中间时间;复位功能可以将计时器归零,重新开始计时;显示功能可以将计时结果以数字形式显示出来。
数字跑表的设计可以分为三个主要模块:计时器模块、控制模块和显示模块。
计时器模块是数字跑表的核心部分,它使用计数器来实现计时功能。
计时器通常采用时钟信号来驱动,每个时钟周期计数器的值加1。
在Verilog原理中,我们可以使用计数器模块来实现计时器。
计数器模块的输入包括时钟信号、复位信号和暂停信号,输出为计数器的值。
当时钟信号到来时,计数器的值会自动加1;当复位信号为高电平时,计数器的值会被清零;当暂停信号为高电平时,计数器的值会被保持不变。
通过控制计数器模块的时钟信号、复位信号和暂停信号,我们可以实现数字跑表的计时、复位和暂停功能。
控制模块是数字跑表的控制中心,它根据用户的操作来控制计时器模块的运行。
控制模块通常包括计时、复位和暂停三个控制信号。
计时信号用于启动计时器,使其开始计时;复位信号用于将计数器的值清零,重新开始计时;暂停信号用于暂停计时器的运行,以便记录中间时间。
在Verilog原理中,我们可以使用状态机来实现控制模块。
状态机可以根据不同的输入信号,切换到不同的状态,从而控制计时器模块的运行。
通过控制控制模块的计时、复位和暂停信号,我们可以实现数字跑表的计时、复位和暂停功能。
显示模块用于显示计时结果。
在数字跑表中,通常使用七段数码管来显示时间。
七段数码管由7个LED灯组成,可以显示0~9的数字。
数字跑表课程设计
数字跑表课程设计数字跑表是一种广泛应用于跑步训练、体育比赛等领域的数字化计时设备。
在跑步训练中,数字跑表可以精确地测量跑步的时间、速度、里程等多个数据,帮助跑者更好地掌握自己的训练进度,并实时监测跑步的效果。
本文将针对数字跑表的设计进行分析和探讨。
数字跑表的外观设计应该简洁、实用。
跑步时需要方便携带,所以数字跑表应该尽可能轻巧,方便跑者佩戴。
同时,跑者在跑步过程中需要随时查看时间、速度、里程等数据,所以数字跑表上的显示屏应该大而清晰,方便跑者在运动中进行观察。
数字跑表的功能设计应该全面,并且操作简便。
数字跑表可以设置多个运动模式,如跑步、步行、骑行等,方便跑者根据不同的运动方式进行数据记录。
同时,数字跑表还应该具备计时、计速、计步、心率监测、睡眠监测等多项功能,以满足不同跑者的需求。
操作上,数字跑表的按键应该布局合理,方便跑者在运动中快速操作。
另外,数字跑表还可以与智能手机等设备进行连接,方便将数据同步到手机上进行分析和保存。
在软件设计上,数字跑表的界面应该简洁明了,功能分布清晰。
主界面可以设置为时间、距离以及消耗的卡路里等数据的显示,方便跑者在运动中快速浏览自己的运动情况。
另外,数字跑表可以提供历史记录查询、数据分析等功能,帮助跑者对自己的训练情况进行综合评估和分析。
数据的存储可以通过云端存储或者手机APP进行管理,方便跑者随时查看和分享自己的跑步数据。
数字跑表的设计应该充分考虑跑者的需求和使用习惯。
在计时功能上,数字跑表可以提供倒计时功能,方便跑者进行间隔训练。
在计步功能上,数字跑表可以提供步数提醒功能,帮助跑者掌握自己的运动量。
另外,数字跑表还可以配备GPS模块,实时定位和计算跑步的里程和速度。
对于心率监测功能,数字跑表可以配备心率带,实时监测跑者的心率情况。
数字跑表的设计还可以考虑加入社交功能,方便跑者与朋友、其他跑者进行数据分享和竞赛。
同时,数字跑表还可以提供健康指导和运动建议,帮助跑者全面了解自己的身体状况和运动效果,提供科学合理的训练建议。
数字跑表 简介
基于FPGA的数字跑表设计电子信息工程刘洋08240117 指导老师:吴蓉教授摘要数字跑表在体育竞赛中有着广泛的应用,用于测量较短且较精确的时间。
本文分析了体育用数字跑表的设计原理及设计的具体过程。
将数字跑表分为四个模块:分频模块、控制模块、计时模块和显示模块。
数字跑表由各个模块通过合理的连接关系来实现,各模块及跑表功能最终都由VHDL语言来描述。
通过VHDL语言编写一个具有“毫秒、秒、分”计时功能的数字跑表,可以实现一个小时以内精确至百分之一秒的计时。
数字跑表的显示可以通过编写数码管显示程序来实现,借助Altera公司开发的EDA工具MAX+plus Ⅱ作为编译、仿真平台,并利用七段数码数码显示时间。
关键词:跑表;VHDL语言;MAX+plus Ⅱ一、设计的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
在这高速发展的当今世界,时间对人们来说无疑是极其宝贵的,时间就是金钱。
随着人们各方面素质的提高,不仅科学领域得到了飞速发展,运动员们都朝着“更快,更远,更强”的目标努力,特别是一些短跑比赛,要求计时器要足够精确。
这就体现了本课设的研究课题数字跑表。
本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。
ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。
而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。
二、设计的内容通过分析设计题目中数字跑表的功能,我查阅了相关书籍和资料,思考数字跑表主要需在EDA软件平台上利用硬件描述语言VHDL语言设计,以MAX+PLUS II软件作为开发平台,进行数字跑表各模块设计思路和大体的设计流程并进行了程序仿真。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
清华大学信息工程学院课程设计报告书题目: 数字跑表课程:数字系统设计专业:电子信息科学与技术班级:学号:学生姓名:指导教师:2014年 6月 20日目录1简介 (4)1.1任务的提出 (4)1.2方案论证 (4)2总体设计 (5)2.1整体方案设计和功能分割 (5)2.2计时电路 (5)3详细设计及仿真 (7)3.1各功能模块的设计和实现 (7)3.1.1控制模块 (7)3.1.2计时器模块 (8)3.1.3时基分频器模块 (9)3.2软件设计 (10)4总结 (11)5总程序 (12)参考文献 (15)摘要本设课程设计是基于FPGA的数字跑表的设计,利用VerilogHDL语言和QuartusII软件以及FPGA实验操作平台来实现的。
本论文的重点是用硬件语言VerilogHDL来描述数字跑表,偏重于软件设计。
大致内容是首先简单介绍了EDA的现状和前景VerilogHDL语言特点,应用平台FPGA,之后阐述了数字跑表的设计思想和大体的设计流程,最后进入本设计的核心设计部分,用VerilogHDL语言设计数字跑表电路,着重对各个模块进行了详细的分析和说明。
关键词:Verilog、HDL语言、QuartusII软件、数字秒表1简介1.1任务的提出V erilog HDL语言是1983年GDA公司的Phil Moorby首创的,之后Moorby有设计了Verilog-XL仿真器获得很大成功,也使得Verilog HDL语言得到发展和推广。
Verilog HDL 语言是在C语言的基础上发展而来的。
从语法结构上看,Verilog HDL继承和借鉴了C语言的很多语法,两者有许多的相似之处,但Verilog HDL作为一种硬件描述语言,还是有本质的区别。
即可适于可综合的电路设计,也可胜任电路和系统的仿真;能在多层次上对所设计的系统加以描述,从开关级、门级,寄存器传输级到行为级等都可以担任,而且没规模限制;灵活多变的电路描述风格,可进行行为描述,也可进行结构描述等;应用十分的广泛。
QuartusⅡ软件是Atlera的CPLD/FPGA集成开发软件,具有完善的可视化设计环境,并具有标准的EDA工具接口,基于QuartusⅡ进行EDA设计开发需要以下步骤:设计输入、编译、仿真、编程与验证等。
根据设计要求,首先对数字跑表进行结构和功能的划分。
计数器部分设三个输入端,分别为时钟输入(CLK),复位(CLR)和启动/暂停(PAUSE)按键。
复位信号高电平有效,可对跑表异步清零;当启动/暂停键为低电平时,跑表开始计时,高电平时暂停,变低后在原来的数值基础上继续计数。
然后计数器的每个位的值赋给六选一数据选择器,数据选择器选择的位值再赋给七段数码管译码器,这样就可以显示数字了。
1.2方案论证本字跑表首先要从最低位的百分秒计数器开始,按照系统时钟进行计数。
计数至100后向秒计数器仅为,秒计数器一百分秒计数器的进位位为时钟进行计数。
计数至60后向分计数器进位,分计数器以秒计数器的进位位为时钟进行计数。
数字跑表巧妙地运用进位位作为时钟来减少计数的位数。
如果统一使用系统时钟作为计数时钟,那秒计数器将是一个6000进制的计数器,额分计数器将是一个3600000进制的计数器。
这将极大的浪费FPGA的逻辑资源。
而使用进位位作为计数时钟,只需要一个100进制的计数器和两个60进制的计数器。
在实际的设计中,为了是计数器更加简单,计数器使用高低位两个计时器来实现。
100进制计数器分别是最高位10进制计数器,地位10进制计数器,60进制计数器分别是高6进制计数器,低位10进制计数器。
这样整个数字跑表使用6个计数器来实现。
同时由于10进制计数器重复使用了5次,可以使用独立的模块实现十进制计数器,这样就可以通过模块复用来节省整个模块使用的资源。
数字跑表提供了清零为CLR和暂停位PAUSE,百分秒的时钟信号可以通过系统时钟分频提供。
分频至1/100s,即可实现真实的时间计数。
详细的时钟分频设计渎职可以参考相关的资料实现。
代码中端口信号的定义:CLK:时钟信号CLR:异步复位信号PAUSE:暂停信号MSH、MSL:百分秒的高位和低位SH、SL:秒信号的高位和低位MH、ML:分钟信号的高位和低位2总体设计2.1整体方案设计和功能分割根据设计要求,对数字跑表进行结构和功能的划分。
计数器部分设三个输入端,分别为时钟输入(CLK),复位(CLR)和启动/暂停(PAUSE)按键。
复位信号高电平有效,可对跑表异步清零;当启动/暂停键为低电平时,跑表开始计时,基于FPGA的数字跑表的设计高电平时暂停,变低后在原来的数值基础上继续计数。
然后计数器的每个位的值赋给六选一数据选择器,数据选择器选择的位值再赋给七段数码管译码器,这样就可以实现显示当前数字。
按照自顶而下的设计方法数字跑表的功能分割,如下图:功能分割图2.2计时电路计时电路的作用是计时,计时的一般方法是对时钟脉冲进行计数。
本设计在外部提供了1kHzs时钟,计时精度是1ms。
根据精度要求,需要设计分频器,对时钟信号进行10分频,产生周期为10ms的时基信号。
时基信号由时基分频器模块产生。
显示电路的作用是将计时值显示在数码管上。
计时电路产生的计时值通过BCD/七段译码后,驱动LED七段数码管。
计时显示电路存在一个方案选择的问题,即采用并行显示还是扫描显示,这关系到器件的资源利用。
并行显示同时驱动6个数码管,它需要同时对6组BCD数据进行译码并输出6组LED 七段驱动信号,需要较多的内部逻辑和I/O资源。
以ispLSI器件为例,驱动6个数码管的7个显示段,共需要42(7*6)个I/O引脚;另外还需要6个BCD/七段译码器,共需要12(6*2)个GLB。
采用扫描显示则每次只驱动一位数据,各位数据轮流进行显示;如果是扫描的速度足够快,由于人眼存在视觉残留现象,看不到闪烁。
扫描显示的资源少。
设计中采用扫描显示的方式,由于是扫描显示每次只有一位视觉进行译码和输出,所以可以共享BCD/七段译码器和七段驱动信号输出引脚。
同样用ispLSI器件实现,数码管七段驱动信号需要7个输出引脚,另外还要6个位驱动信号,共需要13个I/O引脚。
扫描显示电路可以继续分割为BCD 译码器和数据选择器两个子模块。
下面确定模块之间的接口关系,各模块的接口信号说明如下:计时控制器:计时控制器的输入信号时启动、暂停、和清零信号。
为了方便,将启动和暂停功能设置在同一个案件上;按一次是启动,按第二次是暂停,按第三次则是继续,以此类推。
所以计时控制器共有两个开关输入信号,记启动/暂停和清零。
计时器的输出信号为计数允许/保持信号和清零信号。
计时电路:计时电路的输入信号为1kHz时钟、计时允许/保持信号和清零信号;输出为10ms,100ms,s,min的计时数据。
它的下一级模块的接口信号如下: 1、时基电路大的输入信号频率为1kHz,输出时钟周期为10ms。
2、计数器的输入信号为计数允许信号、清零信号和1kHz时钟,输出为10ms,100ms,s,min 的计时数据。
显示电路:显示电路的输入信号为计时器的10ms,100ms,s,min计时数据。
输出为七段译码驱动信号和位选择信号。
3详细设计及仿真3.1各功能模块的设计和实现自顶而下完成各层次的设计描述,数字跑表可以划分为5个功能模块:顶层模块、计时模块、时基分频器模块、数据选择模块、数码管显示模块。
本设计中部分模块都用原理图和VerilogHDL语言两种方法设计。
以VerilogHDL语言设计为主。
顶层模块顶层模块只说明功能的分配、内部功能块和对外接口关系,功能模块实际的逻辑功能和具体的实现由下一层模块描述。
3.1.1控制模块RESET端为全局清零按钮,接到控制模块和计时模块的清零端,负责将计数器清零。
当RESET为低电平时,控制模块和总计数器模块清零,跑表重新开始工作。
与门可控制时钟信号是否被输出到下一级。
START_STOP为启动\暂停按钮,当跑表为START状态时CLK 端为高电平,QA为1,时钟信号输出,当跑表为STOP状态时CLK端为低电平,QA为0,时钟信号不输出,从而实现开始和暂停的功能。
电路图如下:仿真波形:3.1.2计时器模块PAUSE为低电平时开始计数,百分秒低位自加一,加到九时归零,百分秒高位自加一,加到九时归零,且向秒位发出一个高电平,秒低位自加一,加到九时归零,秒高位自加一,且向分位发出一个高电平,分低位自加一,加到九时清零,且向分高位发出一个高电平,分高位自加一,加到六时清零。
PAUSE为低电平时暂停。
电路图如下:仿真波形:100进制计数器(count100):仿真波形:60进制计数器(count60):仿真波形:3.1.3时基分频器模块时基分频器要求对1kHz的时钟(此设计的输入时钟信号)分频,产生100Hz(10ms)时基信号输出,此时基信号即为计时器的输入信号。
基分频器可由十进制计时器设计。
电路图如下所示:仿真波形:3.2软件设计以上分析了数字跑表的功能和性能参数要求,确定了数字跑表的主要功能块、内部连接关系及I/O关系,各模块的连接如下图所示。
4总结这一次的设计给了我很深的体会,感觉自己学的东西的实用的地方。
以前总是觉得自己学的知识都只是纸上谈兵,这一次的数字跑表的设计让我学到了很多。
在上HDL的实验的时候,我们做的实验也做过数字跑表,但是那是用单片机做的,连线什么的也简单,我的主要工作知识编程而已。
而这一次我做的数字跑表用的是HDL的知识,没有用到程序的部分,也实现了用单片机同样的功能。
感觉自己以前学的知识还有很多不足的地方,思维被局限在很小的范围里,而这一次的设计也开拓了我的眼光,让我了解。
其实知识都是想通的很多地方都可以联系起来,让我在课堂之外也能学到很多的知识,而且自己一个人完成一项事情的乐趣也是不错的。
然而在这一次的学习中,我也感到了自己的很多不足,自己学知识在以前是不扎实的,也缺乏把知识都联系到一起的能力,这一次的设计对我自己而言是很重要的一次体验。
在我设计数字钟的过程中,也很多地方是不足的,我只是设计了一个能实现基本功能的数字钟而已,和现在市场上的数字钟在功能上是有很多差距的。
可以说片这一次设计的体验对我而言是很重要的,也为我以后的毕业设计做了一个很好的铺垫,给了我更多的信心。
5总程序CLR:为异步复位信号;PAUSE:为暂停信号;MSH,MSL:百分秒的高位和低位;SH,SL:秒信号的高位和低位;MH,ML:分钟信号的高位和低位。
*/module paobiao(clk,clr,seg,pause,msh,msl,sh,sl,mh,ml,ss,clk1); input clk,clr,clk1;input pause;output[3:0] msh,msl,sh,sl,mh,ml,ss;reg[3:0] msh,msl,sh,sl,mh,ml;reg cn1,cn2;//cn1为百分秒向秒的进位,cn2为秒向分的进位output [7:0]seg;// seg是数码段选择;wei是选择需要显示的数码管reg [7:0]seg;reg[3:0]coder;reg[15:0]count;reg[2:0]ss;//百分秒计数进程,每计满100,cn1产生一个进位1always@(posedge clk or posedge clr)beginif(clr)begin//异步复位{msh,msl}<=8'h00;cn1<=0;endelse if(!pause) //PAUSE为0时正常计数,为1时暂时计数beginif(msl==9) beginmsl<=0;if(msh==9)begin msh<=0;cn1<=1;endelse msh<=msh+1;endelse beginmsl<=msl+1;cn1<=0;endendend//秒计数进程,每计满60,cn2产生一个进位always@(posedge cn1 or posedge clr)beginif(clr) begin //异步复位{sh,sl}<=8'h00;cn2<=0;endelse if(sl==9) //低位是否为9beginsl<=0;if(sh==5) begin sh<=0;cn2<=1;endelse sh<=sh+1;endelsebegin sl<=sl+1;cn2<=0;endend//分钟计数进程,每计满60,系统自动清零always@(posedge cn2 or posedge clr)beginif(clr)begin{mh,ml}<=8'h00;end //异步复位else if(ml==9)beginml<=0;if(mh==5) mh<=0else mh<=mh+1;endelse ml<=ml+1;end//数据选择器always@(posedge clk1)beginif(ss>3'd7)ss<=1'b0;else ss<=ss+1'b1;endalways@(posedge clk1)begincase(ss)//选择需要的显示数据3'd5:coder<=msl;3'd4:coder<=msh;3'd3:coder<=sl;3'd2:coder<=sh;3'd1:coder<=ml;3'd0:coder<=mh;3'd6:coder<=3'd0;3'd7:coder<=3'd0;endcaseend//七段数码管译码器always@(coder)//译码...把值赋给数码管显示begincase(coder)4'd0:seg=7'b00111111;//4'd1:seg=7'b00000110;//4'd2:seg=7'b01011011;4'd3:seg=7'b01001111;4'd4:seg=7'b01100110;4'd5:seg=7'b01101101;4'd6:seg=7'b01111101;4'd7:seg=7'b00000111;4'd8:seg=7'b01111111;4'd9:seg=7'b01101111;endcaseendEndmodule参考文献[1] 朱如琪. FPGA设计实践教程[M].北京:科学出版社,2009.[2] 王金明. 数字系统设计与Verilog HDL[M]. 北京:电子工业出版社,2010.[3] 黄智伟. FPGA系统设计与实践[M]. 北京:电子工业出版社,2008.[4] 李宥谋. 基于V erilog的FPGA设计基础[M]. 西安:西安电子科技大学出版社,2009。