搜档网
当前位置:搜档网 › 基于verilog数字秒表的设计实现

基于verilog数字秒表的设计实现

基于verilog数字秒表的设计实现
基于verilog数字秒表的设计实现

生产实习报告

班级:通信13-2班

姓名:闫振宇

学号:

成绩:

电子与信息工程学院

信息与通信工程系

基于verilog数字秒表的设计实现

1. 概述

硬件描述语言HDL ( HardwareDescription Langyage) 是一种用形式化方法来描述数字电路和系统的语言。数字电路系统的设计这里用这种语言可以从上层倒下层逐层描述自设计思想用一系列分层的模块来表示极其复杂的数字系统,然后用EDA 工具逐层验证,把其中需要为具体物理电路的模块组合由自动综合工具转换到门级电路网表。Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。使用VERILOG 进行系统设计时采用的是从顶至下的设计,自顶向下的设计是从系统机开始巴西同划分为若干个基本单元,然后再把每个单元划分为下一层的基本单元,这样下去直到可以直接用EDA 元件库中的基本元件来实现为止。

2. 设计目的及要求

a.有源晶振频率:50MHZ;

b.测试计时范围:00’00”00 ~ 59’59”99,显示的最长时间为59分59 秒;

c.数字秒表的计时精度是10ms;

d.显示工作方式:六位BCD七段数码管显示读数,两个按钮开关(一个按钮使秒表复位,另一个按钮控制秒表的启动/暂停)。

3.设计原理

秒表的逻辑结构较简单,它主要由四进制计数器、十六进制计数器、分频器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止、启动以及清零复位。

秒表有共有6个输出显示,其中6个显示输出数据,分别为百分之一秒、十分之一秒、

秒、十秒、分、十分,所以共有6个计数器与之相对应;6个计数器的输出全都为BCD 码输出,这样便与同显示译码器连接。

利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功能。所有数字逻辑功能都在CPLD器件上用Verilog语言实现。这样设计具有体积小,设计周期短,调试方便,故障率地和修改升级容易等特点。

本设计采用依次采用以下设计方法:

1)按键输入缓存,键盘消抖设计;

2)分频产生秒信号,产生100HZ的时钟信号设计;

3)数码管动态扫描显示设计;

4)3-8译码器显示(译码)设计;

5)流水线式计数方法设计。

4.设计原理框图

秒表计时器设计原理框图,如图4-1所示。

图4-1 秒表计时器设计原理框图

根据设计原理框图4-1,以及设计的要求及目的,可以将Verilog HDL语言设计的秒表计时程序分为四大模块:

1)按键输入缓存,按键消抖模块;

2)分频产生100HZ的时钟信号模块;

3)数码管动态扫描显示驱动模块;

4)计时处理部模块。

5.软件设计

按键输入缓存,按键消抖模块

常在按键较少时可用硬件方法消除抖动,一般采用RS触发器作为常用的消抖电路,如果按键较多时,常用软件消除抖动。在EDA的设计应用中,软件消抖的方法即可使用RS触发器进行消抖,也可通过检测按键按下的时间进行消抖。

按键输入缓存,按键消抖程序:

always@(posedge count[16])

begin

key_inner<=key;

end

always@(posedge key_inner[0])

begin

key_flag=~key_flag;

end

键盘消抖工作原理:

设置输入信号key[1:0],设置一个模值为4的控制计数器key_inner,判断计数寄存器count的第16位的上升沿,检测到key_inner为高电平。由于计数寄存器的位数为18位。则说明在内可以检测到4次高电平。

在人工按键key=‘1’时,key_inner为‘1’,如连续4次检测到高电平则key_inner一直为‘1’。4次以上检测到高电平key_inner依旧为‘1’,也一直输出高电平。这就确保了当按键信号持续高电平以上按键信号才有效。抖动期间的高电平持续时间不足以输出高电平。如没有连续4次以上检测到高电平,则key_inner为‘0’。

再判断key_inner的上升沿(按键按下为下降沿,弹起为上升沿),每当key_inner[0]

出现一次上升沿(按键按下并弹起),key_flag 将取反一次(设置key_flag 的初值为‘0’)。

分频产生100HZ 的时钟信号模块

分频产生100HZ 的时钟信号程序:

always@(posedge clk) begin if(count==249999) begin clk_100hz<=~clk_100hz; count<=0;

end

else

count<=count+1;

end

分频原理图,如图5-1所示。

图5-1 分频原理图

分频原理:

由于开发板的输入频率为50MHZ 的时钟信号,说明1s 产生7510?个时钟信号。每个时钟信号持续的时间为

7

1

510

?s ,由于秒表计时器的最小单位为,所以要将50MHZ 的时钟信号进行5510?分频,得到100HZ 的时钟信号,即。

数码管动态扫描显示驱动模块

数码管动态扫描显示驱动程序:

always@(posedge count[15])

begin

count3b=count3b+1;

case(count3b)

3'd5:dis_dat=hour[3:0];

3'd4:dis_dat=hour[7:4];

3'd3:dis_dat=hour[11:8];

3'd2:dis_dat=hour[15:12];

3'd1:dis_dat=hour[19:16];

3'd0:dis_dat=hour[23:20];

default:dis_dat=4'bxxxx;

endcase

sel=count3b;

end

always@(dis_dat)

begin

case(dis_dat)

0 : seg = 8'b1100_0000;

erilog秒表设计.2012:15:17.

[2]大彬哥.基于Verilog HDL的数字计时器的设计.2013:11.

附件:

module led_on

(

input[1:0]key, //输入信号

input clk, //输入频率为50MHZ的时钟

output reg [2:0]sel, //数码管位选

output reg [7:0]seg, //数码管段选

output en //3-8译码器使能

);

reg[2:0]count3b;

reg[3:0]dis_dat; //定义显示数据寄存器

reg[18:0]count; //定义计数寄存器

reg[23:0]hour; //定义现在时刻寄存器

reg clk_100hz; //50MHZ的时钟信号500000分频,得到100HZ的时钟信号reg key_flag; //启动/暂停的切换标志

reg[1:0]key_inner;

assign en=0;

//(1)按键输入缓存,按键消抖设置

always@(posedge count[16])//在内,扫描2的2次方,可以检测到4次高电平begin

key_inner<=key;

end

always@(posedge key_inner[0])

begin

key_flag=~key_flag;

end

//(2)秒信号产生部分,产生100HZ的时钟信号

always@(posedge clk)

begin

if(count==249999)

begin

clk_100hz<=~clk_100hz;

count<=0;

end

else

count<=count+1;

end

//(3)数码管动态扫描显示部分

always@(posedge count[15]) //时序逻辑,由于有6个数码管,则在一秒内扫描2的6次方

begin

count3b=count3b+1;

case(count3b)

3'd5:dis_dat=hour[3:0];

3'd4:dis_dat=hour[7:4];

3'd3:dis_dat=hour[11:8];

3'd2:dis_dat=hour[15:12];

3'd1:dis_dat=hour[19:16];

3'd0:dis_dat=hour[23:20];

default:dis_dat=4'bxxxx;

endcase

sel=count3b;

end

always@(dis_dat)

begin

case(dis_dat)

0 : seg = 8'b1100_0000;//显示“0”

1 : seg = 8'b1111_1001;//显示“1”

2 : seg = 8'b1010_0100;//显示“2”

3 : seg = 8'b1011_0000;//显示“3”

4 : seg = 8'b1001_1001;//显示“4”

5 : seg = 8'b1001_0010;//显示“5”

6 : seg = 8'b1000_0010;//显示“6”

7 : seg = 8'b1111_1000;//显示“7”

8 : seg = 8'b1000_0000;//显示“8”

9 : seg = 8'b1001_0000;//显示“9”

default:seg = 8'bxxxxxxxx;

endcase

end

//(4)计时处理部分

always@(posedge clk_100hz) //计时处理

begin

if(~key_inner[1]&&key_flag==1) //判断是否复位键,

begin

hour=24'h0;

end

else if(!key_flag)

begin

hour[3:0]=hour[3:0]+1;

if(hour[3:0]==4'ha)

begin

hour[3:0]=4'h0;

hour[7:4]=hour[7:4]+1;

if(hour[7:4]==4'ha)

begin

hour[7:4]=4'h0;

hour[11:8]=hour[11:8]+1;

if(hour[11:8]==4'ha)

begin

hour[11:8]=4'h0;

hour[15:12]=hour[15:12]+1;

if(hour[15:12]==4'h6)

begin

hour[15:12]=4'h0;

hour[19:16]=hour[19:16]+1;

if(hour[19:16]==4'ha)

begin

hour[19:16]=4'h0;

hour[23:20]=hour[23:20]+1;

end

if(hour[23:20]==4'h6)

hour[23:20]=4'h0;

end

end

end

end

end end endmodule

数字电子秒表课程设计

西安航空职业技术学院 电子技术实践课程设计报告 课设题目:数字电子秒表 所属系部:电子工程系 指导老师: 作者: 专业:电子信息工程技术 西安航空职业技术学院制 西安航空职业技术学院 课程设计任务书 题目:数字电子秒表 任务与要求: 1、设计数字电子秒表原理图。 2、用6个数码管显示分、秒、毫秒。 3、计时误差不得超过1s;具有清零、启动计时、暂停计时及继续 计时等控制功能。 4、画出总体电路图。 5、安装自己设计的电路,按照自己设计的电路,在通用板上焊接。 焊接完毕后,应对照电路图仔细检查,看是否有错接、漏接、 虚焊的现象。 6、调试电路。 时间:2010年11月29 日至 2010年12 月10 日共2周

所属系部:电子工程系 指导单位或教研室:电子信息教研室 西安航空职业技术学院制 摘要: 采用现代数字电路设计方法和EDA技术,即自顶向下的设计方法,应用protues开发平台进行设计并仿真验证和硬件测试。从总体设计框图开始,将设计任务逐步分解,直到可以用标准的集成电路部件实现,然后将各部件联结成系统,通过protues集成开发平台进行设计的分析综合和时序仿真验证。最后,在分析时序仿真结果的基础上,对设计进行进一步的修改和完善,已达到对设计电路正确运行且学会运用protues电路设计与仿真的目的。 关键词: 555定时器;LED;暂停计时 Abstract: Adopt modern digital circuit design method and EDA technique, namely the top-down design methods, application protues development platform design and simulation validation and hardware test. From the beginning, overall design diagram design task decomposed step by step, until can use standard of integrated circuit components, and then will realize connecting components into system, through protues integrated development platform design of comprehensive analysis and time-series simulation prove. Finally, by analyzing the timing simulation results, on the basis of design for further revised and perfected, reached the correct operation of circuit design and learn to use protues circuit design and simulation of purpose. Key words: 555 timing, Leds, Suspended timing 目录 1 设计方案的选择 (1) 2 总体框架设计 (2) 3 分步电路设计 (3) 3.1控制电路的设计 (3) (3) (3) 3.2数码管显示电路 (4)

#用Verilog语言编写的多功能数字钟

2009—2010学年第二学期 《数字电子技术课程设计》报告 专业班级:电气-08-1 姓名:曹操 学号:08051127 设计日期:2010年8月23日~27日 一.设计题目 多功能数字钟电路设计 二.设计任务及要求 多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。 在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟50Mhz进行分频。 对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。 调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。 管脚分配如下表: 端口名使用模块信号对应FPGA管脚说明 S1 按键开关S1 R16 调整小时 S2 按键开关S2 P14 调整分钟 RST 按键开关S8 M15 复位 LED LED模块D1 L14 整点倒计时 LEDAG0 数码管模块A段N4 时间显示 LEDAG1 数码管模块B段G4 LEDAG2 数码管模块C段H4 LEDAG3 数码管模块D段L5 LEDAG4 数码管模块E段L4 LEDAG5 数码管模块F段K4 LEDAG6 数码管模块G段K5 SEL0 数码管选择位1 M4 8个数码管

数电课设 数字秒表的设计仿真

##大学 ##学院 数字电子技术课程设计 课程名称:数字电子技术基础 题目名称:数字电子秒表设计 学生系别:信息工程系 专业班级: 学号: 学生姓名: 指导教师: ..年..月..日

目录 一、设计要求 (3) 二、题目分析 (3) 三、总体方案 (3) 四、具体实现 (4) 1、总体方框图 (4) 2、原理图 (4) 如下图所示: (4) 五、各部分定性说明及定量计算 (5) 1、脉冲发生器(由555构成的多谐振荡器) (5) 2、计数器(74LS90) (7) 3、七段发光二极管(LED)数码管 (8) 4、BCD码七段译码驱动器——CC4511 (9) 六、实验仿真 (11) 七、元器件清单 (11) 八、设计心得体会 (12) 九、参考文献 (12)

数字秒表的设计与仿真 一、设计要求 设计并仿真一个数显电子秒表,要求: (1)能直接显示“分”、“秒”的电子秒表; (2)要求最大能显示9ˊ59〞; (3)能通过按键启动计时,并能通过按键停止计时,并保留显示计时时间; (4)能通过按键复位。 主要器件: 74LS00、555、74LS90、CC4511 二、题目分析 数字秒表是是一种常用的秒计时装置,它能实现手控记秒、停摆、清零功能,它的设计原理就是利用数字逻辑中的知识。 通过对该数字秒表的设计要求的分析,设计的此数字秒表主要由分频器、译码器、十进制计数器、六十进制计数器、控制电路组成。在整体秒表中最关键的如何获得一个精确的100HZ计时脉冲。除此之外,数字秒表还需要有清零控制端以及启动控制端,保持,以便数字时钟能随意、停止及启动。分频器用来产生100HZ计时脉冲;十进制计数器:对分进行计数;六十进制计数器是用来对秒进行计时,显示译码器是完成对7段数码管显示的控制。 按计数要求,须用数码管来做显示器,题目要求最大能显示9ˊ59〞,需要三个数码管,超过最大显示的数字要重新从0开始计数。 复位开关用来使计时器清零,并做好清零准备,复位开关可以在任意情况下使用,即使在计数过程中,只要按一下复位开关,计时进程终止,并对计时器清零。 三、总体方案 数字秒表,必须有一个数字显示。按设计要求,须用数码管来做显示器,题目要求最大能显示9ˊ59〞,则需要三个数码管。计数分辨率为1s,需要相应的信号发生器,选择信号发生器有两种方案: Ⅰ用晶体振荡器; Ⅱ用集成电路555计时器与电阻电容组成的多谐振荡器。 两者都可以产生振荡频率,我们选用方案Ⅱ,因为其核心部分是使用三个74LS90计数器采用串联方式构成,并且这种连接方式简单,使用元器件数量少。

电子秒表课程设计

课程设计 题目 学院 专业 班级 姓名 指导教师 年月日

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目:电子秒表的设计与制作 初始条件: (1)计数精度可达1/100秒 (2)可显示时间99.99秒 (3)具有开关可启动,暂停,清零功能 选作:设计可改变计时时间(最大59.99秒)的电路 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)设计任务及要求 (2)方案比较及认证 (3)系统框图,原理说明 (4)硬件原理,完整电路图,采用器件的功能说明 (5)调试记录及结果分析 (6)对成果的评价及改进方法 (7)总结(收获及体会) (8)参考资料 (9)附录:器件表,芯片资料 时间安排: 6月16日~6月19日:明确课题,收集资料,方案确定 6月19日~1月21日:整体设计,硬件电路调试 6月21日~6月24日;报告撰写,交设计报告,答辩 指导教师签名:2014年 6月日

目录 摘要 (4) 电子秒表的设计与制造 (5) 1 课题分析 (5) 2系统设计方案的选择 (5) 3 电子秒表系统主体流程框图 (6) 4 单元电路的设计 (7) 4.1脉冲产生电路 (7) 4.2 计数电路 (8) .3 译码显示电路 (9) 4.4 控制电路 (10) 5 仿真测试 (10) 6 电子秒表设计原理图 (11) 7 结束语 (11) 参考文献 (12) 附录 (13) 附录一:选作:设计可改变计时时间的电路 (13) 附录二:74LS290功能表 (15) 附录三:74LS48功能表 (15)

摘要 电子秒表是一种数字显示计时装置,由于它走时准,设计简单,显示直观,因此被广泛运用于科学研究,体育运动,国防等方面。比如对物体速度,加速度的测量,体育比赛的时间的测量等。 数字电子秒表由组合逻辑电路和时序逻辑电路组成,555定时器组成多谐振荡器产生脉冲,在脉冲控制下的组合计数器电路通过一系列的触发产生数字信号,数字信号经译码器译码后输入到显示数码管显示时间。 电子秒表的广泛应用提高了人们的工作效率,随着电子技术的发展,电子秒表的精度,电路简易型等到了很大的提高,功能得到了完善。 关键词:秒表定时器效率

数字电路时钟设计verilog语言编写--

电子线路设计与测试 实验报告 一、实验名称 多功能数字钟设计 二、实验目的 1.掌握可编程逻辑器件的应用开发技术 ——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法;

4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计。 三、设计内容及要求 1.基本功能 具有“秒”、“分”、“时”计时功能,小时按24小时制计时。 具有校时功能,能对“分”和“小时”进行调整。 2.扩展功能 仿广播电台正点报时。在59分51秒、53秒、55秒、57秒发出低音512Hz 信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。 定时控制,其时间为23时58分。 3.选做内容 任意时刻闹钟(闹钟时间可设置)。 自动报整点时数。 四.系统框图与说明 数字钟框图

1.数字钟电路系统由主体电路和扩展电路两大部分所组成。 2.秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。 3.计数器的输出经译码器送显示器。 五.设计步骤 1.列写多功能数字钟设计--层次结构图 2.拟定数字钟的组成框图,在Max+Plus II软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路; 3.设计各单元电路并进行仿真; 4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合; 5.下载到Cyclone II FPGA实验平台上,实际测试数字钟的逻辑功能。

六.Verilog代码 //24进制时钟, 具有计时、校时、仿广播电台正点报时、固定时刻定时,任意时刻闹钟等功能 module clock_main(LED_Hour,LED_Minute,LED_Second,Alarm,CP_1KHz,Jsh_Min_key,Jsh_Hour_ke y,Set_Hour_key,Set_Min_key,Show,Ctrl_Bell); input CP_1KHz;//定义输入时钟 input Jsh_Min_key,Jsh_Hour_key;//定义校时按键 input Set_Hour_key,Set_Min_key;//定义闹钟定时按键 input Show; //定义显示模式按键 input Ctrl_Bell;//定义闹钟铃声控制 output [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量 wire [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量类型 wire [7:0]Hour,Minute,Second; wire [7:0]Set_Hour_Out,Set_Min_Out; wire Out_1Hz,Out_500Hz;//定义分频模块输出变量类型 reg Alarm_Ring,Alarm_Clock_1KHz;//定义仿广播电台报时和固定时刻定时铃声 output Alarm;//蜂鸣器输入 supply1Vdd; wire Alarm_Clock;//任意时刻闹钟闹铃 wire MinL_EN,MinH_EN,Hour_EN;//定义中间变量类型 //分频 fre_dividerFD0(Out_1Hz,Out_500Hz,Vdd,Vdd,CP_1KHz); //正常计时 counter10 U1(.Q(Second[3:0]),.nCR(Vdd),.EN(Vdd),.CP(Out_1Hz)); counter6 U2(.Q(Second[7:4]),.nCR(Vdd),.EN(Second[3:0]==4'h9),.CP(Out_1Hz)); assignMinL_EN=Jsh_Min_key?Vdd:(Second==8'h59); assign MinH_EN=(Jsh_Min_key&&(Minute[3:0]==4'h9))||(Minute[3:0]==4'h9)&&(Second==8'h59 ); counter10 U3(.Q(Minute[3:0]),.nCR(Vdd),.EN(MinL_EN),.CP(Out_1Hz)); counter6 U4(.Q(Minute[7:4]),.nCR(Vdd),.EN(MinH_EN),.CP(Out_1Hz)); assign Hour_EN=Jsh_Hour_key?Vdd:((Minute==8'h59)&&(Second==8'h59)); counter24 U5(Hour[7:4],Hour[3:0],Vdd,Hour_EN,Out_1Hz); //仿广播电台正点报时 baoshi BS1(Alarm_Ring,Minute,Second,Out_500Hz,CP_1KHz);//在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点 //固定时刻定时

verilog EDA 数字秒表设计 quartus

课程考查报告 课程名称 EDA技术 题目名称数字电子钟 学生学院信息工程学院 专业班级通信工程09(1)班 学号 310900xx 学生姓名陈 XX 任课教师李学易 2013 年12月27日

电子钟 设计目的: 根据实验板的资源和利用Quartus II软件编译、仿真可以实现电子钟的数字系统设计。 设计内容: 数字电子钟的功能: 1、时钟显示功能(显示时、分、秒) 2、时钟调整功能(小时、分钟的校准) 3、闹钟设置功能 设计方案: 根据程序设计需要,信号的定义如下: Clk:标准时钟信号,频率为4Hz Clk_1k:产生闹铃声、报时声的时钟信号,频率为1024Hz Mode:功能控制信号,为0:计时功能;1:闹钟功能;2:手动校时功能 Turn:接按键,在手动校时功能时,选择的是校准小时,还是分钟; 若长时间按该键,可使秒信号清零 Change:接按键,在手动校时时,每按一次,计数器加一 若长按,则连续快速加一 Hour,min,sec:此三信号分别输出并显示时、分、秒信号 Alert:输出到扬声器的信号,产生闹钟音和报时音; 闹钟音为持续20秒的“嘀嘀嘀”音,若按住change键,

则可屏蔽该音; 报时音为“嘀嘀嘀嘀嘟”四短一长音。 Ld_alert:接发光二极管,指示是否设置了闹钟功能 Ld_hour:接发光二极管,指示当前调整的是小时信号Ld_min:接发光二极管,指示当前调整的是分钟信号 实验结果: 时序仿真图: RTL图:

D ENA Q PRE CLR D Q PRE ENA CLR D Q PRE ENA CLR D Q PRE ENA CLR D Q PRE ENA CLR D Q PRE ENA CLR D Q PRE ENA CLR D Q PRE ENA CLR D Q PRE ENA CLR D Q PRE ENA CLR D ENA Q PRE CLR D ENA Q PRE CLR D Q PRE ENA CLR D ENA Q PRE CLR SEL DATAA DATAB OUT0 MUX21 < A[7..0]B[7..0] LESS_THAN SEL[1..0]DATA[3..0] OUT MUX SEL[1..0] DATA[3..0] OUT MUX SEL[1..0] DATA[3..0] OUT MUX SEL[1..0] DATA[3..0] OUT MUX SEL DATAA DATAB OUT0 MUX21 SEL[1..0] DATA[3..0] OUT MUX = A[3..0] B[3..0] EQUAL + A[3..0] B[3..0] ADDER + A[3..0] B[3..0] ADDER SEL[1..0] DATA[3..0] OUT MUX SEL[1..0] DATA[3..0] OUT MUX SEL[1..0] DATA[3..0] OUT MUX < A[7..0] B[7..0] LESS_THAN D Q PRE ENA CLR 01 01 01 D Q PRE ENA CLR D ENA PRE CLR Q SEL[1..0] DATA[3..0] OUT MUX IO_BUF (TRI) D ENA PR E CLR Q loop1~_OUT0 loop1_OUT0 loop2~_OUT0 loop2_OUT0 loop3~_OUT0 loop3_OUT0 loop4~_OUT0 loop4_OUT0 num1~0_OUT0 num1_OUT0num2~0_OUT0 num2_OUT0num3~0_OUT0 num3_OUT0num4~0_OUT0 num4_OUT0 sound~_OUT0 sound_OUT0 Equal0_OUT ct1~0_OUT0 ct2~0_OUT0 cta~0_OUT0 ctb~0_OUT0 minclk~1_OUT0minclk_OUT0 always9~0_OUT0 Mux6_OUT Mux7_OUT Mux8_OUT Mux0_OUT WideNor5_OUT0 Mux2_OUT Mux3_OUT Mux4_OUT LessThan0_OUT min1~_OUT0 ct1_OUT0 min1_OUT0 Equal18_OUT alert1_OUT0m~_OUT0 m_OUT0Mux25_OUT sec[7]~7_OUT0sec[6]~6_OUT0sec[5]~5_OUT0sec[3]~0_OUT0sec[2]~1_OUT0sec[1]~2_OUT0sec[0]~3_OUT0 Mux1_OUT sec[2]_557_OUT0clk_2Hz clk loop1[1..0] loop2[1..0] loop3[1..0] loop4[1..0] num1[1..0] 1' h0 --num2[1..0] 1' h0 --num3[1..0] 1' h0 --num4[1..0] 1' h0 --sound[1..0] ear ct1~0 ct2~0 cta~0 ctb~0 alert~0 clk_1k alert2~0alert2~1 clk_1Hz sec1[7..0] minclk sec1~[15..8] 8' h00 --WideNor7 LessThan1 8' h54 -- Mux5 3' h0 -- Mux6 3' h0 --Mux7 3' h0 --Mux8 3' h0 --sec1~[7..0] 4' h0 --Mux0 3' h0 --WideNor5 Equal8 4' h9 -- Add6 4' h1 -- Add7 4' h1 -- Mux2 3' h0 --Mux3 3' h0 --Mux4 3' h0 --LessThan0 8' h20 --min1[7..0] always16~9 always16~0 alert2 alert2~2 alert~2 alert alert~1 m[1..0] mode sec[4]$latch Mux25 4' h7 --sec[4]~4 sec[7..0] sec[2]_557

12小时数字钟电路设计

沈阳航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计 课程设计题目:12小时数字钟电路设计与实现 院(系):计算机学院 专业:计算机科学与技术 班级:34010104 学号:2013040101164 姓名: 指导教师:胡光元 完成日期:2016 年 1月 13 日

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (2) 1.1设计原理 (2) 1.2设计思路 (2) 1.3设计环境 (2) 第2章详细设计方案 (2) 2.1算法与程序的设计与实现 (3) 2.2流程图的设计与实现 (4) 第3章程序调试与结果测试 (7) 3.1程序调试 (7) 列举出调试过程中存在的问题 (7) 3.2程序测试及结果分析 (7) 参考文献 (9) 附录(源代码) (10)

第1章总体设计方案 1.1设计原理 通过Verilog语言,编写12小时数字钟电路设计与实现的Verilog程序,一般的做法是底层文件用verilog写代码表示,顶层用写的代码生成的原理图文件链接组成,最后在加上输入输出端口。采用自上而下的方法,顶层设计采用原理图设计输入的方式。 1.2设计思路 1.实时数字钟显示功能,即时、分、秒的正常显示模式,并且在此基础上增加上,下午显示。 2.手动校准。按动方式键,将电路置于校时状态,则计时电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。 1.3设计环境 (1)硬件环境 ?伟福COP2000型计算机组成原理实验仪 COP2000计算机组成原理实验系统由……… ?COP2000集成调试软件 COP2000集成开发环境是为…………. (2)EDA环境 ?Xilinx foundation f3.1设计软件 Xilinx foundation f3.1是Xilinx公司的可编程期间………….

数字逻辑电路(数电)课程设计_电子秒表_VHDL实现(含完整源代码!!)

电子科技大学 UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 数字逻辑设计 实验报告 实验题目:电子秒表 学生姓名: 指导老师:

一、实验内容 利用FPGA设计一个电子秒表,计时范围00.00 ~ 99.00秒,最多连续记录3个成绩,由两键控制。 二、实验要求 1、实现计时功能: 域值范围为00.00 ~ 99.00秒,分辨率0.01秒,在数码管上显示。 2、两键控制与三次记录: 1键实现“开始”、“记录”等功能,2键实现“显示”、“重置”等功能。 系统上电复位后,按下1键“开始”后,开始计时,记录的时间一直显示在数码管上;按下1键“记录第一次”,次按1键“记录第二次”,再按1键“记录第三次”,分别记录三次时间。 其后按下2键“显示第一次”,次按2键“显示第二次”,再按2键“显示第三次”,数码管上分别显示此前三次记录的时间;显示完成后,按2键“重置”,所有数据清零,此时再按1键“开始”重复上述计时功能。 三、设计思路 1、整体设计思路 先对按键进行去抖操作,以正确的得到按键信息。 同时将按键信息对应到状态机中,状态机中的状态有:理想状态、开始状态、3次记录、3次显示、以及其之间的7次等待状态。 因为需要用数码管显示,故显示的过程中需要对数码管进行片选和段选,因此要用到4输入的多路选择器。 在去抖、计时、显示的过程中,都需要用到分频,从而得到理想频率的时钟信号。 2、分频设计 该实验中有3个地方需要用到分频操作,即去抖分频(需得到200HZ时钟)、计时分频(需得到100HZ时钟)和显示分频(需得到25kHZ时钟)。 分频的具体实现很简单,需首先算出系统时钟(50MHZ)和所需始终的频率比T,并定义一个计数变量count,当系统时钟的上升沿每来到一次,count就加1,当count=T时就将其置回1。这样只要令count=1~T/2时clk=‘0’,count=T/2+1~T时clk=‘1’即可。 3、去抖设计 由于用按键为机械弹性开关,故当机械触点断开、闭合时,按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开,而是在闭合及断开的瞬

基于FPGA(Verilog)的数字式秒表格模板设计

基于FPGA的数字式秒表 一、设计任务及要求 秒表由于其计时精确,分辨率高(0.01 秒),在各种竞技场所得到了广泛的应用,本次设计的任务就是设计一个基于FPGA 的数字式秒表。 1 (1 (2 启/ 下启/ (3 (4 到8 个数码管的七段LED,还有3 个管脚用于选择点亮哪个数码管,每隔很短的一段时间8 个数码管交替点亮,依次循环,动态显示,由于人眼的视觉残留,可以观察到连续的测量计数器的计数值。 上电后,八个数码管中左边四个显示自己的学号后四位,在运行过程中一直不变;右边四个显示计时时间,范围0000~9999,利用两个按钮S1、S2 控制计时。 2、提高要求:

加入小数点,计时数码管显示范围00.00~99.99。 二、系统原理框图 ); input Clk; output Out; reg Out; reg [3:0] Cout;

reg Clk_En; initial Out<=0; always @(posedge Clk ) begin Cout <= (Cout == 4'd10) ? 4'd0 : (Cout + 4'd1); input Clk; input EN,RET; output [3:0] CQ; output OUT; reg OUT;

/*---------------------------------------------------*/ wire Rst_n; assign Rst_n = RET; /*---------------------------------------------------*/ reg[3:0] Led; if(Led<=4'd8) Led = Led + 3'd1; else Led=4'd0; end

电子秒表课程设计

电子秒表 摘要 电子秒表是一种用数字电路技术实现时、分、秒计时的装置,无机械装置,具有较长的使用寿命,因此得到了广泛的使用。它从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。本次实验所做电子式秒表由信号发生系统和计时系统构成,并具有清零,暂停功能。由于需要比较稳定的信号,所以信号发生系统555定时器与电阻和电容组成的多谐振荡器构成,信号频率为100HZ。计时系统由计数器、译码器、显示器组成。计数器由74 LS160构成,由十进制计数器组成了一百进制和六十进制计数器,采用异步进位方式。译码器由74LS48构成,显示器由数码管构成。清零,暂停功能由RS触发器构成防抖动开关。具体过程为:由晶体震荡器产生100HZ脉冲信号先进入计数器,然后传入译码器,将4位信号转化为数码管可显示的7位信号,结果以“分”、“秒”、“10毫秒”依次在数码管显示出来。该秒表最大计时值为59分59.99秒,“10毫秒”为一百进制计数器组成,“分”和“秒”为六十进制计数器组成。 关键词:计时精度计数器显示器 Abstract Electronic stopwatch is the realization of a digital circuit technology,.It can realize the hour, minute, second timer.It does not have mechanical means and has a longer life, so it has been widely used. The principle is a typical digital circuit, which includes a combination logic circuit and a timing circuit. The experiments can be done by electronic stopwatch constituted by the signal system and timing system, and has cleared pause function. Due to the need of a more stable signal, the signal generating system is constituted by the 555 Timer with the resistors and capacitors, and the signal frequency is 100Hz. Timing system contains the counter, decoder, display. Counter 74 LS160 constituted by the decimal counter the decimal and sexagesimal counter, which uses asynchronous binary. The decoder from 74LS48 constitute display digital tube constitute Cleared, the pause function by the RS flip-flop. Its specific process: the 100Hz pulse signal generated by the crystal oscillator and first into the counter, and then the incoming decoder, a 4-bit signal is converted to 7-bit signal of the digital control can be displayed, the result by "minute", "second", "10 milliseconds" turn on the digital display. The stopwatch timing is 59 minutes, 59.99 seconds, 10 milliseconds is the 150 binary counter, "minute" and "second" is the six decimal counter. Keyword:Timing accuracy counter display

数字式电子秒表设计

1设计目的 电子技术课程设计是电子信息工程系三个专业的公共课程设计,是模拟电子 技术、数字电子技术课程结束后进行的教学环节。其目的是: 1、培养理论联系实际的正确设计思想,训练综合运用已经学过的理论和生产实际知识去分析和解决工程实际问题的能力。 2、学习较复杂的电子系统设计的一般方法,提高基于模拟、数字电路等知 识解决电子信息方面常见实际问题的能力,由学生自行设计、自行制作和自行调 试。 3、进行基本技能训练,如基本仪器仪表的使用,常用元器件的识别、测量、熟练运用的能力,掌握设计资料、手册、标准和规范以及使用仿真软件、实验设备进行调试和数据处理等。 4、培养学生的创新能力。 2设计要求 1.秒表由2位七段LED显示器显示,其中1位显示“ s” ,二位显示“ 0.1s ”,显示分 辩率为0.1 s; 2.计时最大值为9.9s; 3.计时误差不得超过1s; 具有清零、启动计时、暂停计时及继续计时等控制功能; 4.主要单元电路和元器件参数计算、选择; 5.画出总体电路图; 6.安装自己设计的电路,按照自己设计的电路,在通用板上焊接。焊接完毕后,应对照电 路图仔细检查,看是否有错接、漏接、虚焊的现象。 7.调试电路 8.电路性能指标测试 9.提交格式上符合要求,内容完整的设计报告

3总体设计 3.1工作流程图 图1工作流程图 图1中1单元为用集成与非门74LS00构成的基本RS触发器。属低电平直接触发的触发器,有直接置位,复位的功能。 图1中2单元为集成与非门74LS00构成的单稳态触发器,它的职能是为计数器提供清零信号。 图1中555定时器构成了多谐振荡器,是一种性能较好的时钟源。 图1中4单元74LS160构成的计数器/分频器 图1中5单元译码显示单元 3.2原理图: 图1为电子秒表的原理图,按功能可分为5个单元电路进行分析。 其中单元1为基本RS触发器; 单元2为单稳态触发器; 单元3为时钟发生器; 单元4为计数器和分频器; 单元5为译码显示单元。

基于verilog数字秒表的设计实现

生产实习报告 班级:通信13-2班 姓名:闫振宇 学号: 成绩: 电子与信息工程学院 信息与通信工程系

基于verilog数字秒表的设计实现 1. 概述 硬件描述语言HDL ( HardwareDescription Langyage) 是一种用形式化方法来描述数字电路和系统的语言。数字电路系统的设计这里用这种语言可以从上层倒下层逐层描述自设计思想用一系列分层的模块来表示极其复杂的数字系统,然后用EDA 工具逐层验证,把其中需要为具体物理电路的模块组合由自动综合工具转换到门级电路网表。Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。使用VERILOG 进行系统设计时采用的是从顶至下的设计,自顶向下的设计是从系统机开始巴西同划分为若干个基本单元,然后再把每个单元划分为下一层的基本单元,这样下去直到可以直接用EDA 元件库中的基本元件来实现为止。 2. 设计目的及要求 a.有源晶振频率:50MHZ; b.测试计时范围:00’00”00 ~ 59’59”99,显示的最长时间为59分59 秒; c.数字秒表的计时精度是10ms; d.显示工作方式:六位BCD七段数码管显示读数,两个按钮开关(一个按钮使秒表复位,另一个按钮控制秒表的启动/暂停)。 3.设计原理 秒表的逻辑结构较简单,它主要由四进制计数器、十六进制计数器、分频器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止、启动以及清零复位。 秒表有共有6个输出显示,其中6个显示输出数据,分别为百分之一秒、十分之一秒、

数字秒表电路设计ok

数字秒表电路设计 电信1205班 钟杰瑛 学号 U201213508 一、设计任务及要求 设计一个数字秒表电路,其功能要求是: (1) 设计一个用来记录短跑运动员成绩的秒表电路,能以数字的形式显示时间; (2) 秒表的计数范围为0.01~59.99S ,计时精度为10mS ; (3)通过两个按键来控制计时的起点和终点,一个是清零按键,用于设置秒表为初始状态,另一个则是开始/停止按键,在清零无效时,按一下开始/停止键,则计时器开始计时,再按一下则暂停计时,再按一下则继续计时。 二、系统组成框图 本系统采用层次式设计方法设计,系统由时钟脉冲产生电路,可预置计数器,毫秒计数、秒计数、控制电路、译码及显示电路,及消抖动电路等部分(模块)组成。系统组成框图如 图1所示。 系统工作原理是:由时钟脉冲产生电路产生频率为100Hz 的脉冲信号接入暂停/继续控制电路,由该电路通过按键控制毫秒、秒计数器的暂停计数/继续计数。由控制电路输出的毫秒脉冲输入到毫秒计数器,毫秒计数器(二级毫秒计数器)计数到100毫秒时向秒计数器进位,秒表计数至59.99秒时停止计数。毫秒,秒计数器输出分别经毫秒,秒译码器译码后送至各自的LED 数码显示器。 三、系统电路设计 1.时钟脉冲产生电路 时钟脉冲产生电路选用NE555定时器组成多谐振器,产生100Hz 脉冲给毫秒计数器。电路及其工作波形分别图2(a )、(b )所示。 其工作原理是: ① 接通电源后,电容C 被充电,C V 上升,当C V 上升到CC V 3 2 时,触发器被复位,同时定时器内部的放电三极管D T 导通,此时o V 为低电平,电容C 通过2R 和D T 放电,使C V 下降; ② 当C V 下降到CC V 3 1时,触发器又被置位,o V 翻转为高电平。电容器C 放电所需时间为 时钟脉冲产生电路 暂停/继续控制电路 毫秒计数器 秒计数器 毫秒译码器 秒译码器毫秒显示秒显示清零 预置计数值 图1 数字秒表系统组成框图

数字电子秒表设计总结报告1

数字电子秒表设计总结报告 一. 工作原理 本数字电子秒表设计由启动、清零复位电路、多谐振荡电路、分频计数电路、译码显示电路等组成。如下图所示: 启动清零复位电路主要由U6A 、U6B 、U7B 、U7D 组成,其本质是一个RS 触发器和单稳态触发器。J1控制数字秒表的启动和停止,J2控制数字秒表的清零复位。开始时把J1合上,J2打开,运行本电路,数字秒表正在计数。 当打开J1,合上J2键,J2与地相接得到低电平加到U6B 的输入端,U6B 输出高电平又加到U6A 的输入端,而U6A 的另一端通过电阻R15与电源相接得到高电平,(此时U6B 与U6A 组成RS 触发器),U6A 输出低电加到U7A 的输入端,U7A 被封锁输出高电平加到U5的时钟端,因U5不具备时钟脉冲条件,U5不能输出脉冲信号,因此U3、U4时钟端无脉冲而停止计数。当J1合上时,打开J2键,J1与地相接得到低电平加到U6A 的输入端,U6A 输出高电平加到 U6B

的输入端,U6B输出低电平加至U7B,使U7B输出高电平,因电容两端电压不能跃变,因此在R7上得到高电平加到U7D输入端,U7D输出低电平(进入暂态)同时加到U3、U4、U5的清零端,使得U3、U4的Q D---Q A输出0000,经U1、U2译码输出驱动U9、U10显示“00”。因为U7B与U7D组成一个单稳态电路,经过较短的时间,U7D的输出由低电平变为高电平,允许U3、U4、U5计数。同时U6A输出高电平加到U7A的输入端,将U7A打开,让555的3脚输出100KHZ的振荡信号经U7A加到U5的时钟脉冲端,使得U5具备时钟脉冲条件,U5的9、10、7脚接高电平,U5构成十分频器,对时钟脉冲计数。当U5接收一个脉冲时,U5内部计数加1,如果U5接收到第十个脉冲时,U5的15脚(RCO端)输出由低电平跳变为高电平作为U4的时钟脉冲,从而实现了对振荡信号的十分频,产生周期为0.1S的脉冲加至U4的时钟端。U4的9、10、7脚接高电平,当U4接收到来自U5的脉冲时,U4的Q D---Q A输出0001加到U2的DCBA端,经U2译码输出1001111经电阻R8~R14驱动数码管U10显示,此时数码管显示“1”,当U4计数到1001时,U4的15脚输出高电平接到U7C,经反相后得到低电平,加到U3的时钟脉冲端,U3A不具备时钟脉冲条件,当U4再接收一个脉冲时,U4的输出由1001翻转为0000,此时U4的15脚输出低电平通过U7C反相输出高电平,从而得到一上升沿脉冲加至U3的时钟端,使得U3的Q D---Q A输出0001加到U1的DCBA输入端,经U1译码输出100111,经电阻R1~R7驱动数码管U9,数码管显示“1”。如此循环的计数,最后数码管U9、U10显示最大值99即9.9秒。 由集成块555、电阻R19、R18、电容C1、C2组成多谐振荡器,当接通电源,电源通过电阻R19与R18对电容C2进充电,当UC2上升到2/3VCC时,集成块555的3脚输出低电平,内部三极管导通,C2通电阻R19进行放电,当UC2下降到1/3VCC时,内部三极管截止,集成块555的3脚输出高电平,接着电源又通过电阻R19与R18对电容C2进充电,当UC2上升到2/3VCC时,集成块555的3脚输出低电平,如此循环的充、放电,555的3脚输出100HZ的矩形方波信号加到U7A的输入端。

FPGA--数字时钟(verilog)

因为本人也是刚学习fpga的菜鸟,所以这个程序漏洞很多,仅供参考。。。。。。。。。 //分频子模块 module fenpin (clk,rst_n,en_1s,en_1ms); //产生1s,1ms的分频 input clk; input rst_n; output en_1s; output en_1ms; reg[31:0] jishu_1s; reg[15:0] jishu_1ms; parameter cnt_1s =49999999; parameter cnt_1ms =49999; always@(posedge clk or negedge rst_n) begin if(!rst_n) jishu_1s<=32'b0; else if(jishu_1s

//按键控制部分 module anjian(clk,rst_n,key1,key2,key1_low,key2_low); input clk; input rst_n; input key1; // 分加 input key2; // 分减 output key1_low; //按键按下消抖后的标志位 output key2_low; reg reg0_key; //key1消抖 reg reg1_key; reg reg2_key; //key2消抖 reg reg3_key; always @(posedge clk or negedge rst_n) begin if(!rst_n) begin reg0_key <= 1'b1; reg1_key <= 1'b1; end else begin reg0_key <= key1; reg1_key <= reg0_key; //根据非阻塞赋值的原理,reg1_key 存储的值是reg0_key 上一个时钟的值 end end //脉冲边沿检测法,当寄存器key1 由1 变为0 时,key1_an 的值变为高,维持一个时钟周期 wire key1_an; assign key1_an = reg1_key & ( ~reg0_key); always @(posedge clk or negedge rst_n) begin if(!rst_n) begin reg2_key <= 1'b1; reg3_key <= 1'b1; end else begin reg2_key <= key2;

相关主题