数字跑表

数字跑表
数字跑表

第1章设计说明

1.1设计思路

根据设计要求,首先对数字跑表进行结构和功能的划分。计数器部分设三个输入端,分别为时钟输入(CLK),复位(CLR)和启动/暂停(PAUSE)按键。复位信号高电平有效,可对跑表异步清零;当启动/暂停键为低电平时,跑表开始计时,高电平时暂停,变低后在原来的数值基础上继续计数。然后计数器的每个位的值赋给六选一数据选择器,数据选择器选择的位值再赋给七段数码管译码器,这样就可以显示数字了。

1.2模块介绍

计数模块

扫描模块

译码显示模块

计数模块:PAUSE为低电平时开始计数,百分秒低位自加一,加到九时归零,百分秒高位自加一,加到九时归零,且向秒位发出一个高电平,秒低位自加一,加到九时归零,秒高位自加一,加到五时归零,且向分位发出一个高电平,分低位自加一,加到六时系统清零。

扫描模块:包含行扫描模块和列扫描模块,行扫描模块决定某一时刻数码管显示百分秒高位、百分秒低位、秒高位、秒低位、分高位、分低位中的哪个数据;列扫描模块决定某一时刻哪个数码管被选通并显示;两个扫描模块的扫描频率必须一致。

译码显示模块:讲8位二进制码代表的数字通过数码管显示出来。

第2章Verilog HDL设计源程序

根据设计要求,用verilog语言对数字跑表描述如下:

2.1.计数模块

由于百分秒位是计100次数向秒位进一位,所以百分秒的计数周期是10ms,所以在模块开始时需要定义一个10ms的常量。而秒位和分位的计数周期是60,所以计数到60时需要进位并清零。具体程序如下:

module Counter_module (clk,pause,clr,msl,msh,sl,sh,ml,mh);

input clk,pause,clr;

output [3:0]msl,msh,sl,sh,ml,mh;

reg[3:0]msl,msh,sl,sh,ml,mh;

/***设置一个10ms的参数,以方便百分秒位计数***/

parameter T10MS = 18'd199_999;

/*****************************/

reg [17:0]Count1;

always @ ( posedge clk or negedge clr )

if( !clr )

Count1 <= 18'd0;

else if( Count1 == T10MS )

Count1 <= 18'd0;

else if(pause)

Count1 <= Count1 + 18'b1;

/***开始计数***/

reg cn1,cn2;

always@(posedge clk or negedge clr) //百分秒位计数

begin

if (!clr)

begin

{msh,msl}<=8'd0;

cn1<=0;

end

else if(pause)

begin

if (msl==9)

begin

msl<=4'd0;

if(msh==9) //到100时进位清零;

begin

msh<=4'd0;

cn1<=1;

end

else

msh<=msh+1;

end

else if(Count1==T10MS) //每10ms计一次数;

begin

msl<=msl+4'd1;

cn1<=0;

end

end

end

always@( posedge cn1 or negedge clr) //秒位计数

begin

if(!clr)

begin

{sh,sl}<=8'd0;

cn2<=0;

end

else if(pause)

begin

if (sl==9)

begin

sl<=4'd0;

if(sh==5) //每60秒进位清零

begin

sh<=4'd0;

cn2<=1;

end

else

sh<=sh+1;

end

else

begin

sl<=sl+1;

cn2<=0;

end

end

end

always@(posedge cn2 or negedge clr) //分位计数

begin

if (!clr)

{mh,ml}<=8'd0;

else if(pause)

begin

if(ml==9)

begin

ml<=4'd0;

if(mh==5)

mh<=4'd0;

else

mh<=mh+1;

end

else

ml<=ml+1;

end

end

Endmodule

2.2 译码模块:

译码模块主要是针对七段数码管的译码,其真值表如下:

case seg case seg

0 00111111 5 01101101

1 00000110 6 01111101

2 01011011 7 00000111

3 01001111 8 01111111

4 01100110 9 01101111

具体程序如下:

module smg_encoder_module(clk,clr,msl,msh,sl,sh,ml,mh,

msl_smg,msh_smg,sl_smg,sh_smg,

ml_smg,mh_smg);

input clk,clr;

input[3:0]msl,msh,sl,sh,ml,mh;

output[7:0]msl_smg,msh_smg,sl_smg,sh_smg,ml_smg,mh_smg;

/*****七段数码管编码*****/

parameter _0 = 8'b1100_0000, _1 = 8'b1111_1001, _2 = 8'b1010_0100,

_3 = 8'b1011_0000, _4 = 8'b1001_1001, _5 = 8'b1001_0010,

_6 = 8'b1000_0010, _7 = 8'b1111_1000, _8 = 8'b1000_0000,

_9 = 8'b1001_0000;

/*****开始译码(msl)*****/

reg[7:0]rmsl_smg;

always@(posedge clk or negedge clr) if (!clr)

begin

rmsl_smg<=8'b1111_1111;

end

else

case(msl)

4'd0:rmsl_smg<=_0;

4'd1:rmsl_smg<=_1;

4'd2:rmsl_smg<=_2;

4'd3:rmsl_smg<=_3;

4'd4:rmsl_smg<=_4;

4'd5:rmsl_smg<=_5;

4'd6:rmsl_smg<=_6;

4'd7:rmsl_smg<=_7;

4'd8:rmsl_smg<=_8;

4'd9:rmsl_smg<=_9;

endcase

/*****(msh)*****/

reg[7:0]rmsh_smg;

always@(posedge clk or negedge clr) if (!clr)

begin

rmsh_smg<=8'b1111_1111;

end

else

case(msh)

4'd0:rmsh_smg<=_0;

4'd1:rmsh_smg<=_1;

4'd2:rmsh_smg<=_2;

4'd3:rmsh_smg<=_3;

4'd4:rmsh_smg<=_4;

4'd5:rmsh_smg<=_5;

4'd6:rmsh_smg<=_6;

4'd7:rmsh_smg<=_7;

4'd8:rmsh_smg<=_8;

4'd9:rmsh_smg<=_9;

endcase

/*****(sl)*****/

reg[7:0]rsl_smg;

always@(posedge clk or negedge clr) if (!clr)

begin

rsl_smg<=8'b1111_1111;

end

else

case(sl)

4'd0:rsl_smg<=_0;

4'd1:rsl_smg<=_1;

4'd2:rsl_smg<=_2;

4'd3:rsl_smg<=_3;

4'd4:rsl_smg<=_4;

4'd5:rsl_smg<=_5;

4'd6:rsl_smg<=_6;

4'd7:rsl_smg<=_7;

4'd8:rsl_smg<=_8;

4'd9:rsl_smg<=_9;

endcase

/*****(sh)*****/

reg[7:0]rsh_smg;

always@(posedge clk or negedge clr) if (!clr)

begin

rsh_smg<=8'b1111_1111;

end

else

case(sh)

4'd0:rsh_smg<=_0;

4'd1:rsh_smg<=_1;

4'd2:rsh_smg<=_2;

4'd3:rsh_smg<=_3;

4'd4:rsh_smg<=_4;

4'd5:rsh_smg<=_5;

4'd6:rsh_smg<=_6;

4'd7:rsh_smg<=_7;

4'd8:rsh_smg<=_8;

4'd9:rsh_smg<=_9;

endcase

/*****(ml)*****/

reg[7:0]rml_smg;

always@(posedge clk or negedge clr)

if (!clr)

begin

rml_smg<=8'b1111_1111;

end

else

case(ml)

4'd0:rml_smg<=_0;

4'd1:rml_smg<=_1;

4'd2:rml_smg<=_2;

4'd3:rml_smg<=_3;

4'd4:rml_smg<=_4;

4'd5:rml_smg<=_5;

4'd6:rml_smg<=_6;

4'd7:rml_smg<=_7;

4'd8:rml_smg<=_8;

4'd9:rml_smg<=_9;

endcase

/*****(mh)*****/

reg[7:0]rmh_smg;

always@(posedge clk or negedge clr)

if (!clr)

begin

rmh_smg<=8'b1111_1111;

end

else

case(mh)

4'd0:rmh_smg<=_0;

4'd1:rmh_smg<=_1;

4'd2:rmh_smg<=_2;

4'd3:rmh_smg<=_3;

4'd4:rmh_smg<=_4;

4'd5:rmh_smg<=_5;

4'd6:rmh_smg<=_6;

4'd7:rmh_smg<=_7;

4'd8:rmh_smg<=_8;

4'd9:rmh_smg<=_9;

endcase

/******************************/ //采用连续赋值assign进行赋值,方便阅读assign msl_smg=rmsl_smg;

assign msh_smg=rmsh_smg;

assign sl_smg=rsl_smg;

assign sh_smg=rsh_smg;

assign ml_smg=rml_smg;

assign mh_smg=rmh_smg;

/******************************/

endmodule

由于有六个数据需要译码,所以写了六个always@,读者为了程序简洁,也可以写一个always,然后采用模块调用,这样就只需要很少行的代码就OK了,不过本文通过大的模块调用(后文会讲到),所以小的模块就没有采用模块调用,效果都一样,全凭个人喜好。

2.2扫描模块

1、主模块:

主模块调用了行扫描模块和列扫描模块,调用程序如下:

module smg_scan_module

(

clk,clr,pause,

msl_smg,msh_smg,sl_smg,sh_smg,ml_smg,mh_smg,row_scan_sig,column_scan_sig

);

input clk,clr,pause;

input[7:0]msh_smg,msl_smg,sh_smg,sl_smg,ml_smg,mh_smg;

output[7:0]row_scan_sig;

output[5:0]column_scan_sig;

/****************调用行扫描模块*********************/

row_scan_module U1

(.clk(clk),

.clr(clr),

.pause(pause),

.msh_smg(msh_smg),

.msl_smg(msl_smg),

.sl_smg(sl_smg),

.sh_smg(sh_smg),

.mh_smg(mh_smg),

.ml_smg(ml_smg),

.row_scan_sig(row_scan_sig)

);

/*******************调用列扫描模块*******************/

column_scan_module U2

(.clk(clk),

.clr(clr),

.pause(pause),

.column_scan_sig(column_scan_sig)

);

/****************************************/

endmodule

2、行扫描模块

行扫描模块决定某一时刻哪个数据被显示,采用case语句来选通,为防止显示时会出现数码管闪烁的现象,扫描的频率需要达到kHz级,本实验将扫描周期设置为1ms,即扫描频率为1kHz。主程序如下:

module row_scan_module

(clk,clr,pause,

msl_smg,msh_smg,sl_smg,sh_smg,ml_smg,mh_smg,row_scan_sig

);

input clk,clr,pause;

input[7:0]msl_smg,msh_smg,sl_smg,sh_smg,ml_smg,mh_smg;

output[7:0]row_scan_sig;

/******************************************/

parameter T1MS = 15'd19_999;//声明一个1ms的常量

/*****************************/

reg [14:0]Count1;

always @ ( posedge clk or negedge clr )

if( !clr )

Count1 <= 15'd0;

else if( Count1 == T1MS )

Count1 <= 15'd0;

else if(pause)

Count1 <= Count1 + 15'b1;

/**************************************/

reg [2:0]t;

always @ ( posedge clk or negedge clr )

if( !clr )

t <= 3'd0;

else if( t == 3'd6 )

t <= 3'd0;

else if(Count1 == T10MS)

t <= t + 1;

/*************************************/

reg[7:0]rscan;

always@(posedge clk or negedge clr)

if(!clr)

rscan<=8'd0;

else if(pause)

case(t)

3'd0:rscan<= msl_smg;

3'd1:rscan<= msh_smg;

3'd2:rscan<= sl_smg;

3'd3:rscan<= sh_smg;

3'd4:rscan<= ml_smg;

3'd5:rscan<= mh_smg;

endcase

/****************************************/

assign row_scan_sig=rscan;

/***************************************/

endmodule

3、列扫描模块

列扫描模块决定某一时刻哪个数码管被选通来显示数据,同上,扫描的频率也是1kHz,程序如下:

module column_scan_module

(

clk,clr,pause,column_scan_sig

);

input clk,clr,pause;

output [5:0]column_scan_sig;

/*****************************/

parameter T10MS = 18'd19_999;

/*****************************/

reg [17:0]Count1;

always @ ( posedge clk or negedge clr )

if( !clr )

Count1 <= 18'd0;

else if( Count1 == T10MS )

Count1 <= 18'd0;

else if(pause)

Count1 <= Count1 + 18'b1;

/*******************************/

reg [2:0]t;

always @ ( posedge clk or negedge clr )

if( !clr )

t <= 3'd0;

else if( t == 3'd6 )

t <= 3'd0;

else if(Count1 == T10MS)

t <= t + 1;

/***********************************/

reg [5:0]rcolumn_scan;

always@(posedge clk or negedge clr)

if(!clr)

rcolumn_scan<=6'b1111_10;

else if(pause)

case(t)

3'd0:rcolumn_scan<=6'b1111_10;

3'd1:rcolumn_scan<=6'b1111_01;

3'd2:rcolumn_scan<=6'b1110_11;

3'd3:rcolumn_scan<=6'b1101_11;

3'd4:rcolumn_scan<=6'b1011_11;

3'd5:rcolumn_scan<=6'b0111_11;

endcase

/*********************************/

assign column_scan_sig=rcolumn_scan;

/***********************************/

endmodule

注意:行扫描的频率和列扫描的频率必须要保持一致,不然下载仿真时会出现数码管无法正常显示的问题。

2.3主模块:

主模块就是采用模块调用的方式将几个子模块:计数模块、扫描模块、译码模块联合起来,程序如下:

module paobiao

(clk,clr,pause,row_scan_sig,column_scan_sig

);

input clk,clr,pause;

output[5:0]column_scan_sig;

output[7:0]row_scan_sig;

/*************************************/

wire [3:0]msh,msl,sh,sl,mh,ml;

Counter_module U1

(.clk(clk),.clr(clr),.pause(pause),

.msh(msh),.sh(sh),.sl(sl),.mh(mh),.ml(ml),.msl(msl)

);

/****************************************/

wire[7:0]msl_smg,msh_smg,sl_smg,sh_smg,ml_smg,mh_smg;

smg_encoder_module U2

(.clk(clk),.clr(clr),

.msh(msh),.msl(msl),.sh(sh),.sl(sl),.mh(mh),.ml(ml),

.msl_smg(msl_smg),.msh_smg(msh_smg),.sl_smg(sl_smg),

.sh_smg(sh_smg),.ml_smg(ml_smg),.mh_smg(mh_smg)

);

/*****************************************/

smg_scan_module U3

(.clk(clk),.clr(clr),.pause(pause),

.msl_smg(msl_smg),.msh_smg(msh_smg),.sl_smg(sl_smg),

.sh_smg(sh_smg),.ml_smg(ml_smg),.mh_smg(mh_smg),

.row_scan_sig(row_scan_sig),

.column_scan_sig(column_scan_sig)

);

endmodule

第3章波形仿真图

第四章下载验证

在做好了程序综合编译之后,就可以进行引脚分配了,由于用的是黑金动力社区的开发板,芯片是EP2C5Q208C8,各输入输出的引脚分配如下表所示:

分配好引脚之后就可以下载验证了。

数字跑表设计说明

西南科技大学 设计报告 课程名称:基于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.计数器模块的设计 设计步骤同数码管的设计,并完成模块的设计输入、综合、功能仿真。 3.数码管和计数器组合为一个系统 用Verilog HDL将数码管和计数器组合为一个模块,完成综合、功能仿真,分析波形,修正设计。

FPGA数字跑表

电子信息工程专业 FPGA与ASIC设计实践教程 设计报告 班级:电子信息工程1303班 学号:201315110 姓名: 田佳鑫 日期:2015年11月4日 指导老师:何英昊

目录 1系统总体方案及硬件设计 (3) 1.1设计内容 (3) 1.2 设计要求 (3) 1.3 实现要求 (3) 2各模块设计及电路图 (3) 2.1设计项目简介 (3) 2.2分块设计代码 (4) 2.3总体框图设计 (7) 2.4管脚锁定图 (8) 3课程设计体会 (8)

1系统总体方案及硬件设计 1.1 设计内容 数字跑表电路 1.2设计要求 (1)跑表的计时范围为0.01—59min59.99s。 (2)具有异步清零、启动。计时和暂停功能。 (3)输入时钟频率为100Hz。 (4)要求数字跑表的输出能够直接驱动共阴极7段数码管。 1.3 实现要求 (1)分析功能要求,划分功能模块。 (2)编写各模块的Verilog HDL语言设计程序。 (3)在QuartusⅡ软件或其他EDA软件上完成设计和仿真。 (4)根据实验装置上的CPLD/FPGA芯片,在适配时选择相应的芯片,将设计生成配置文件或JEDEC文件,然后将配置文件或JEDEC文件下载到实验装置上运行,操作实验装置上设定的功能开关,验证设计功能。 2各模块设计及电路图 2.1 设计项目简介 主控模块分别连接6个数码管显示模块和分频模块,分频模块给主控模块的计数器提供时钟源,主控模块在按键的控制下,在其中计数器的作用下输出给数码管显示装置,实现跑表功能。 振荡器 控制按键分频器计 数 器 显 示

2.2分块设计代码 (1)分频模块: module fenpin(CLK,CLK2); //输入50MHz,输出分频到1Hz input CLK; output CLK2; reg CLK2; reg[31:0] counter2; parameter N2=5000000; always@(posedge CLK) begin if(counter2==250000) begin counter2<=0; CLK2<=~CLK2; end else counter2<=counter2+1; end endmodule (2)控制模块: module sz(clk,clr,pause,msh,msl,sh,sl,mh,ml); inputclk,clr; input pause; output[3:0]msh,msl,sh,sl,mh,ml; reg[3:0]msh,msl,sh,sl,mh,ml; reg cn1,cn2; always@(posedgeclk or posedgeclr) begin if(clr) begin {msh,msl}<=8'h00; cn1<=0; end else if(!pause) begin

FPGA数字跑表课程设计

摘要 本设课程设计是基于FPGA的数字跑表的设计,利用Verilog HDL 语言和Quartus II软件以及FPGA实验操作平台来实现的。本论文的重点是用硬件语言Verilog HDL 来描述数字跑表,偏重于软件设计。大致内容是首先简单介绍了EDA的现状和前景, Verilog HDL 语言特点,应用平台FPGA,之后阐述了数字跑表的设计思想和大体的设计流程,最后进入本设计的核心设计部分,用Verilog HDL 语言设计数字跑表电路,着重对各个模块进行了详细的分析和说明。 【关键词】Verilog HDL 语言;Quartus II 软件;数字秒表

目录 1 绪论 (2) 1.1 EDA的现状和发展及FPGA简介 (2) 1.2 Verilog HDL语言及QuartusⅡ软件简介 (2) 1.3 基于FPGA实现数字跑表运行的方案设计基本原则 (3) 1.4 论文主要完成的工作 (3) 2 系统的硬件设计 (4) 2.1数字跑表概述 (4) 2.2整体方案设计和功能分割 (4) 2.3各功能模块的设计和实现 (6) 2.4 控制系统的实现 (8) 3 系统的软件设计 (8) 3.1 软件整体设计 (8) 3.2主要模块软件设计(主要模块流程图和仿真波形图) (9) 4 总结 (12) 参考文献 (13)

1.绪论 1.1 EDA简介及FPGA简介 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20 世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。而电子设计自动化(EDA)的实现是与 CPLD/FPGA技术的迅速发展息息相关的,利用PLD/FPGA,电子系统设计工程师可以在实验室中设计出专用IC,实现了系统的集成。此外,CPLD/FPGA还具有静态可重复编程或在线动态重构特性,使硬件的功能可像软件一样通过编程来修改,不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。随着计数的进步,自动化设计工具(从CAD到EDA及ESDA:Electronic System Design Automation)已成为电子信息设计人员所必需熟悉和掌握的一门技术。 FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。自1985年Xilinx公司推出第一片现场可编程逻辑器件至今,FPGA已经历了十几年的历史。在这十几年的发展过程中,以FPGA为代表的数字系统现场集成取得了惊人的发展:现场可编程逻辑器件从最初的1200个可利用门,发展到数百万门的单片FPGA芯片,将现场可编程器件的集成度提高到一个新的水平。它之所以具有巨大的市场吸引力,根本在于:FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA越来越多地取代了ASIC的市场,特别是对小批量、多品种的产品需求,使FPGA成为首选。目前,FPGA的主要发展动向是:随着大规模现场可编程逻辑器件的发展,系统设计进入"片上可编程系统"(SOPC)的新纪元;芯片朝着高密度、低压、低功耗方向挺进;国际各大公司都在积极扩充其IP库,以优化的资源更好的满足用户的需求,扩大市场;特别是引人注目的所谓FPGA动态可重构技术的开拓,将推动数字系统设计观念的巨大转变。

数字秒表的设计与实现实验报告

电子科技大学《数字秒表课程设计》 姓名: xxx 学号: 学院: 指导老师:xx

摘要 EDA技术作为电子工程领域的一门新技术,极大的提高了电子系统设计的效率和可靠性。文中介绍了一种基于FPGA在ISE10.1软件下利用VHDL语言结合硬件电路来实现数字秒表的功能的设计方法。采用VHDL硬件描述语言,运用ModelSim等EDA仿真工具。该设计具有外围电路少、集成度高、可靠性强等优点。通过数码管驱动电路动态显示计时结果。给出部分模块的VHDL源程序和仿真结果,仿真结果表明该设计方案的正确,展示了VHDL语言的强大功能和优秀特性。 关键词:FPGA, VHDL, EDA, 数字秒表

目录 第一章引言 (4) 第二章设计背景 (5) 2.1 方案设计 (5) 2.2 系统总体框图 (5) 2.3 -FPGA实验板 (5) 2.4 系统功能要求 (6) 2.5 开发软件 (6) 2.5.1 ISE10.1简介 (6) 2.5.2 ModelSim简介 (6) 2.6 VHDL语言简介 (7) 第三章模块设计 (8) 3.1 分频器 (8) 3.2 计数器 (8) 3.3 数据锁存器 (9) 3.4 控制器 (9) 3.5 扫描控制电路 (10) 3.6 按键消抖电路 (11) 第四章总体设计 (12) 第五章结论 (13) 附录 (14)

第一章引言 数字集成电路作为当今信息时代的基石,不仅在信息处理、工业控制等生产领域得到普及应用,并且在人们的日常生活中也是随处可见,极大的改变了人们的生活方式。面对如此巨大的市场,要求数字集成电路的设计周期尽可能短、实验成本尽可能低,最好能在实验室直接验证设计的准确性和可行性,因而出现了现场可编程逻辑门阵列FPGA。对于芯片设计而言,FPGA的易用性不仅使得设计更加简单、快捷,并且节省了反复流片验证的巨额成本。对于某些小批量应用的场合,甚至可以直接利用FPGA实现,无需再去订制专门的数字芯片。文中着重介绍了一种基于FPGA利用VHDL硬件描述语言的数字秒表设计方法,在设计过程中使用基于VHDL的EDA工具ModelSim对各个模块仿真验证,并给出了完整的源程序和仿真结果。

数字跑表

清华大学 信息工程学院 课程设计报告书题目: 数字跑表 课程:数字系统设计 专业:电子信息科学与技术 班级: 学号: 学生姓名: 指导教师:

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:秒信号的高位和低位

课程设计 多功能秒表报告

武夷学院 课程设计(论文)基于单片机的多功能秒表设计 院系:电子工程系 专业(班级):09电信(一)班 姓名:鞠建龙 学号: 20094081009 指导教师:邵海龙 职称:助教 完成日期: 2011 年 12 月 1 日 武夷学院教务处制

摘要 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于单片机的多功能电子秒表设计。本设计主要特点是具有倒计时功能,还可以按圈计时,而且误差在0.01,,是各种体育竞赛的必备设备之一,另外硬件部分设置了查看按键。 本设计的数字电子秒表系统采用AT89C52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现8位LED显示,显示时间24小时内,计时精度为0.01秒,能正确地进行计时,同时能记录一次时间,并在下一次计时后对上一次计时时间进行查询。其中软件系统采用C语言编写程序,包括显示程序,定时中断服务延时程序等,并在KEIL中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键字:单片机;数字电子秒表;仿真

Abstract With the rapid development of science and technology in recent years, SCM applications are constant-depth manner. In this paper, based on single chip design of digital electronic stopwatch. The main characteristics of this design timing accuracy of 0.01s, to solve the traditional result of a lack accuracy due to timing errors and unfair, and is a variety of sports competitions, one of the essential equipment. In addition the hardware part of the set View button on the stopwatch can be the last time to save time for user queries. The design of the multi-function stopwatch system uses STC89C52 microcontroller as the central device, and use its timer / counter timing and the count principles, combined with display circuit, LED digital tube, as well as the external interrupt circuit to design a timer. The software and hardware together organically, allowing the system to achieve two LED display shows the time within 24 hours, Timing accuracy of 0.01 seconds, Be able to correctly time at the same time to record a time, and the next time after the last time the time to search.automatically added a second in which software systems using assembly language programming, including the display program, timing, interrupt service, external interrupt service routine, delay procedures, key consumer shaking procedures, and WAVE in the commissioning, operation, hardware system uses to achieve PROTEUS powerful, simple and easy to observe the cut in the simulation can be observed on the actual working condition. Keyword:LED display;High-precision stopwatch;STC89C52

FPGA数字秒表设计

基于EDA的数字秒表 设计论文 班级:11电信二班 同组人员:孙兴义 20111060223 张忠义 20111060240

基于EDA的数字秒表设计 摘要:该设计是用于体育比赛的数字秒表,基于EDA在Quartus II 9.0sp2软件下应用VHDL语言编写程序,采用ALTRA公司CycloneII系列的EP2C8Q208 芯片进行了计算机仿真,并给出了相应的仿真结果。本设计有效的克服了传统的数字秒表的缺点采用EDA技术采取自上而下的设计思路。绘制出了具体的逻辑电路,最后又通过硬件上对其进行调试和验证。该电路能够实现很好的计时功能,计时精度高,最长计时时间可达一个小时。 关键字:数字秒表;EDA;FPGA;VHDL;Quartus II 1引言 在科技高度发展的今天,集成电路和计算机应用得到了高速发展。尤其是计算机应用的发展。它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成,如:手机、mp3等。而且将来的不久他们的身影将会更频繁的出现在我们身边。各种家用电器多会实现微电脑技术。电脑各部分在工作时多是一时间为基准的。本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表[1]。秒表在很多领域充当一个重要的角色。在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验。他们对时间精确度达到了几纳秒级别。 2 设计要求 (1) 能对0秒~59分59.99秒范围进行计时,显示最长时间是59分59秒; (2) 计时精度达到0.01s; (3) 设计复位开关和启停开关,复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。设计由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块实现秒表不同的功能 3 数字秒表设计的目的 本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。在掌握所学的计算机组成与结构课程理论知识时。通过对数字秒表的设计,进行理论与实际的结合,提高与计算

数字跑表(电子科大)

数字跑表设计报告 学院:电子工程学院 学号:2011029180015 姓名:洪娜建 班级:电磁场5班

一系统总体设计 设计要求 设计一个数字秒表,有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,系统主要由显示译码器、分频器、十进制计数器和六进制计数器组成。整个秒表还需有一个启动/停止信号和一个复位信号,以便秒表能随意停止及启动。 要求: 1、跑表精度为0.01秒 2、跑表计时范围为:1小时 3、设置开始计时/停止计时、复位两个按钮 4、显示工作方式:用六位BCD七段数码管显示读数 5、扩展功能:锁存控制功能。 系统工作原理 数字跑表通过系统将48MHz时钟进行分频得到100Hz的秒表时钟,之后通过对时钟信号进行计数得到具体的跑表显示数值,跑表数值作为显示单元电路的输入,显示单元控制数码管动态扫描显示计数 因此,系统主要划分为:分频器,计数器,显示控制,开始\停在使能控制,清零控制,锁存控制。 原理图如下:

二单元电路设计 1.分频器 设计思路:输入信号48MHz,将其48000分频可得1KHz信号,再将1KHz信号10分频可得100Hz信号。1KHz用于显示LED扫描,100Hz用于计数器时钟。 源程序如下: entity fenpin is Port ( clk : in STD_LOGIC; clk_1k : out STD_LOGIC; clk_100 : out STD_LOGIC); end fenpin; architecture Behavioral of fenpin is signal cnt1:INTEGER RANGE 1 TO 24000; signal cnt2:INTEGER RANGE 1 TO 5; signal clk_1k_temp:STD_LOGIC:='0';

数字电路EDA课程设计数字跑表

EDA课程设计报告书 题目:数字跑表 姓名: 班级: 学号: 成绩: 一、设计题目及要求

设计题目:数字跑表 要求:1 具有暂停,启动功能。 2 具有重新开始功能。 3 用六个数码管分别显示百分秒,秒和分钟。 二、设计过程及内容 拿到题目后,我在图书馆进行了相关书籍的查阅,首先明确了题目中设计项目要实现的功能,再进一步确定实现其功能的组成部分和使用器件,对于本次设计的总体思路,首先是设计一个控制模块,可以使跑表具有启动、暂停及重新开始的功能;然后,利用一个分频模块即15进制计数器得到100HZ的时钟脉冲,接入到一个100*60*60三个计数器的模块中,完成对时间的计时工作和对选时模块的输出工作,使选时模块得到对应的时间,其次将选时模块与显示模块连接,使数码管显示选中的当前时间,从而完成了这次课程设计的设计工作,进入到实现过程中去。 根据课程设计要求将设计分为5个模块: 1、控制模块,使跑表具有启动、暂停及重新开始的功能; 2、分频模块,用于得到频率为100HZ的时钟脉冲; 3、计时模块,进行时间的计时,同时将当前时间输出给选时模块; 4、选时模块,从计时器得到当前时间输出给显示模块; 5、显示模块,进行时间的显示。 总图如下:

与门可控制时钟信号的输出与否,当跑表为START状态时CLK端为高电平,QA为1,时钟信号输出,当跑表为STOP状态时CLK端为低电平,QA为0,时钟信号不输出,从而实现开始和暂停的功能。REST是清零按钮,REST接到控制模块和总计时器模块的清零端,当REST为高电平时,控制模块和总计数器模块清零,跑表重新开始工作。 第二个模块:分频器模块 将74161接成15进制计数器,将1465HZ的时钟频率转换成近似于100HZ的时钟信号即所需的输入时钟信号,从而实现分频功能。将得到的时钟信号输入到总计数器模块中去。

基于FPGA的数字跑表设计报告

基于FPGA的数字跑表设计报告 姓名: 学号: 指导老师:李颖

摘要:本文详细介绍了数字秒表的设计指标,设计思路,设计方案,系统电路设计,系统单元模块设计,系统硬件实现与测试的结果。 一 引言 科技高度发展的今天,集成电路和计算机应用得到了高速发展。尤其是计算机应用的发展。它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成,如:手机、mp3等。而且将来的不久他们的身影将会更频繁的出现在我们身边。各种家用电器多会实现微电脑技术。电脑各部分在工作时多是一时间为基准的。本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表。秒表在很多领域充当一个重要的角色。在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验。他们对时间精确度达到了几纳秒级别。 二 项目任务与设计思路 本项目的任务是掌握使用VHDL 语言的设计思想;熟悉ise 软件的使用;了解XILINX 学生EDA 实验板。了解 EDA 技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。在掌握所学的计算机组成与结构课程理论知识时。通过对数字秒表的设计,进行理论与实际的结合,提高与计算机有关设计能力,提高分析、解决 计算机技术实际问题的能力。通过课程设计深入理解计算机结构与控制实现的技术,达到课程设计的目标。 项目任务与设计思路 本项目的指标: 1、跑表精度为0.01秒 2、跑表计时范围为:1小时 3、设置开始计时/停止计时、复位两个按钮 4、显示工作方式:用六位BCD 七段数码管显示读数。 显示格式: 三 基于VHDL 方法设计方案 VHDL 的设计流程主要包括以下几个步骤: 1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的 HDL 编辑环境。 通常VHDL 文件保存为.vhd 文件 2.功能仿真:将文件调入 HDL 仿真软件进行功能仿真,检查逻辑功能是否正确。 3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成.edf 或.edif 的 EDA 工业标准文件。 4.布局布线:将.edf 文件调入PLD 厂家提供的软件中进行布线,即把设 分 秒 0.01秒

数字式跑表

课程设计说明书 (小初号字距4磅黑体加黑居中) 课程名称:数字电子课程设计 题目:数字式跑表 学生姓名: 专业:网络工程 班级:网络11-3班 学号: 指导教师: 日期: 2013 年 6 月 28日

数字式跑表 一、设计任务与要求 设计一个以0.01s为基准计时信号的实用数字式跑表。 基本要求: (1)跑表计时显示范围0~99min59.99s (2)具有清零、启动计时、暂停计时及继续计时功能,操作按键(或开关)不超过2个 (3)时钟源误差不超过0.01s 提高要求: (4)显示最大值可达23h59min59.99s,有整点、半点提醒功能 (5)有定时功能 (6)有倒计时功能 二、方案设计与论证 跑表的原理图及简要说明(分层次进行说明,如顶层设计和底层设计分开说明) 图一:数字跑表输入输出示意图 输入有三个信号,CLR=1时清零,CLR=0时跑表从零开始计数;时钟信号CLK,周期为0.01秒;当PAUSE=0时跑表暂停计数,PAUSE=1时跑表从当前值继续计数。输出分别为分钟、秒钟、百分秒的BCD码,各用数码管显示。 显示部分: 显示显示显示显示显示显示译码器译码器译码器译码器译码器译码器一百进制计数器六十进制计数器六十进制计数器

图二:数字式跑表逻辑图 三、单元电路设计与参数计算 原理图主要由3个计数器各自连接其译码器构成。其中两个模60的分别输出分钟、秒钟,还有一个模100的输出百分秒。全原理图采用串行接法,外加一个总体清零端,另一个时钟信号使能端作为PAUSE信号输入。 1.计数器 图三:74LS160管脚图及功能表 74LS160为异步清零计数器,即RD端输入低电平,不受CP控制,输出端立即全部为“0”,功能表第一行。74LS160具有同步预置功能,在RD端无效时,LD端输入低电平,在时钟共同作用下,CP上跳后计数器状态等于预置输入DCBA,即所谓“同步”预置功能(第二行)。RD和LD都无效,ET或EP任意一个为低电平,计数器处于保持功能,即输出状态不变。只有四个控制输入都为高电平, 计数器(160)实现模10加法计数,Q 3 Q 2 Q 1 Q =1001时,RCO=1。

数字跑表的设计与仿真

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;

FPGA数字跑表程序

(1)跑表的计时范围为0.01s~59min59.99s,计时精度为10ms; (2)具有异步复位清零、启动、计时和暂停功能; (3)输入时钟频率为100Hz; (4) 要求数字跑表的输出能够直接驱动共阴极7段数码管显示 /*信号定义 CLK:时钟信号; CLR:异步复位信号; PAUSE:暂停/启动信号; MSH,MSL:百分秒的高位和低位; SH,SL:秒信号的高位和低位; MH,ML:分钟信号的高位和低位。*/ module h (clk,clr,pause,msh,msl,sh,sl,mh,ml,led1,led2,led3,led4,led5,led6); input clk,clr; input pause; output [6:0]led1; output [6:0]led2; output [6:0]led3; output [6:0]led4; output [6:0]led5; output [6:0]led6; output [3:0] msh,msl,sh,sl,mh,ml; reg [6:0]led1; reg [6:0]led2; reg [6:0]led3; reg [6:0]led4; reg [6:0]led5; reg [6:0]led6; reg[3:0] msh,msl,sh,sl,mh,ml; reg cn1,cn2; //cn1为百分秒向秒的进位,cn2为秒向分的进位 //百分秒计数进程,每计满100,cn1产生一个进位1 always @(posedge clk or posedge clr) begin if(clr) //异步复位 begin {msh,msl}<=8'h00; //从00开始计数 cn1<=0; end else if(!pause) //PAUSE为0时正常计数,为1时暂时计数 begin

电子跑表 单片机课程设计

目录 第一章课题设计内容及要求 (2) 1.1 内容 (2) 1.2 要求 (2) 第二章系统方案设计 (3) 2.1设计方案 (3) 2.2 设计原理 (3) 第三章系统硬件设计 (4) 3.1 硬件电路的设计方案及框图 (4) 3.2 单片机的选择 (4) 3.3 时钟与复位电路的设计 (5) 3.3.1 时钟电路 (5) 3.3.2 复位电路 (6) 3.4 LED显示电路的设计 (7) 3.4.1 控制方式 (7) 3.4.2 段驱动芯片选择 (8) 3.5 按键电路 (8) 第四章系统软件设计 (9) 4.1 主程序的设计 (10) 4.2 时钟、跑表计时程序模块的设计 (12) 4.3 T1断程序流程图如下: (16) 4.4 代码转换程序: (18) 4.5 显示程序 (19) 第五章系统的安装调试说明 (21) 第六章总结与体会 (22) 参考文献 (23) 附录 (24) 1.程序原理图 (24) 2.程序清单 (24)

第一章课题设计内容及要求 1.1 内容 (1)本课题以单片机为核心,设计出电子跑表,具有以下功能: (2)具有电时钟和跑表功能; (3)做时钟时在4位LED 显示器上显示分、秒; (4)做跑表时显示范围000.0秒~999.9秒; (5)当按下启动按钮跑表开始计时,按下停止按钮停止计时,当按下复位按钮跑表回零。 1.2 要求 用伟福编译程序,用Proteus画出电路图进行仿真。

第二章系统方案设计 2.1设计方案 电子跑表的设计有多种方法,例如,可用中小规模集成电路组成电子跑表;也可用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子跑表;还可以利用单片机来实现等等。本次单片机综合实验需要进行硬件设计与软件设计。 2.2 设计原理 (1)本系统采用AT89C51单片机、4位LDE显示、两块块74LS244芯片、4个调节按钮、共同构成我的单片机电子跑表的硬件。 (2)计时单元由单片机内部的定时器/记数器来实现。 (3)时间显示功能通过LED数码管动态扫描来实现。由于数码管要显示时钟,还要显示跑表,因此,我分别用31H、32 H计时钟,用R5、R6计跑表,当要显示哪一个的时候,就把哪一个地址送到显示地址35 H、36 H中,达到跑表显示与时钟显示互不影响。 (4)电子跑表的启动/复位/清零功能由软件来实现。P1.1接启动键,P1.3接停止键,P1.0接清零键。P1.2实现时钟和跑表的转换功能。 (5)由于跑表和时钟的中断服务程序有冲突,我们就把跑表的中断服务程序写成另外的子程序了,这样就必须要引入标志位了,我们在此用42H标志位,用标志位来给跑表计数。

大学电工电子课程设计数字跑表设计

课程设计任务书 学生姓名:专业班级: 指导教师:邓坚李波工作单位:自动化学院 题目: 数字跑表设计 初始条件: 1.运用所学的模拟电路和数字电路等知识; 2.用到的元件:实验板、电源、连接导线、74系列芯片、555芯片或微处理器等。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.设计一个具有、‘分’、‘秒’、‘1/100秒’的十进制数字显示的计时器。 2.要有外部开关,控制计数器的直接清零、启动和暂停/连续计时功能; 3.严格按照课程设计说明书要求撰写课程设计说明书。 时间安排: 第1天下达课程设计任务书,根据任务书查找资料; 第2~4天进行方案论证,软件模拟仿真并确定设计方案; 第5天提交电路图,经审查后领取元器件; 第6~8天组装电路并调试,检查错误并提出问题; 第9~11天结果分析整理,撰写课程设计报告,验收调试结果; 第12~14天补充完成课程设计报告和答辩。 指导教师签名: 2011年 6月26日 系主任(或责任教师)签名: 2011年 6月26日 目录 引言.................................. 错误!未定义书签。 1设计意义及要求 (2) 1.1设计意义 (2) 1.2设计要求 (2)

2方案设计 (3) 2.1设计思路 (2) 2.2设计方案 (3) (3) (3) 2.3方案比较 (4) 3部分电路设计 (6) 3.1脉冲输出电路 (6) 3.2 74LS192计数电路 (7) 3.3译码及显示电路 (9) 4调试与检测 (11) 4.1调试中故障及解决方案 (11) 4.2调试与运行结果 (11) 数字跑表的仿真操作步骤及使用说明......... 错误!未定义书签。结束语............................... 错误!未定义书签。参考文献.............................. 错误!未定义书签。附录..................................... 错误!未定义书签。本科生课程设计成绩评定表................. 错误!未定义书签。

数字跑表实验报告(电子科技大学)

数字跑表设计报告 学院:物理电子学院 学号:2014040206029 姓名:刘明哲 班级:电子六班 一 系统总体设计 设计要求 设计一个数字秒表,有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,系统主要由显示译码器、分频器、十进制计数器和六进制计数器组成。整个秒表还需有一个启动/停止信号和一个复位信号,以便秒表能随意停止及启动。 要求: (1) 秒表计时范围为:1小时; (2) 秒表精度为0.01秒; (3) 具有开始计时、停止计时控制功能,且开始计时、停止计时为一个复用按键;

(4) 在正常计时显示过程中,能够在存储按键作用下存储某一计时时间;存储的时间组数为确定值或1至任意值; (5) 在读取按键作用下存储的时间能够回放显示;回放显示时,秒表计时可停止或在后台正常进行;回放显示可手动或自动依次显示; (6) 具有复位功能; (7) 用六位数码管显示时间读数。 系统工作原理 数字跑表通过系统将48MHz时钟进行分频得到100Hz的秒表时钟,之后通过对时钟信号进行计数得到具体的跑表显示数值,跑表数值作为显示单元电路的输入,显示单元控制数码管动态扫描显示计数 因此,系统主要划分为:分频器,计数器,显示控制,开始\停在使能控制,清零控制,存储读取功能,按键消抖。 原理图如下: 二 单元电路设计 1. 分频器 设计思路:输入信号48MHz,将其48000分频可得1KHz信号,再将 1KHz信号10分频可得100Hz信号。1KHz用于显示LED扫描,100Hz用于计数器时钟。 源程序如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

数字跑表设计

课程设计 设计题目:数字跑表设计 学生学院:信息科学与工程学院专业班级:通信工程10-1 学生姓名:袁睿泽 学生学号:20101302041 指导老师:王建英 完成时间:2012年6月23日

目录 引言 (3) 1设计意义及要求 (4) 1.1设计意义 (4) 1.2设计要求 (4) 2方案设计 (5) 2.1设计思路 (5) 2.2设计方案 (4) 2.2.1设计方案电路图 (5) 3部分电路设计 (6) 3.1脉冲输出电路 (6) 3.2 74LS192计数电路 (7) 3.3译码及显示电路 (9) 4调试与检测 (10) 4.1调试中故障及解决方案 (11) 4.2调试与运行结果 (12) 数字跑表的仿真操作步骤及使用说明 (14) 5 DXP电路仿真 (14) 设计心得 (19) 参考文献 (20)

引言 在当今随着各个领域的高科技快速发展,社会生产力的发展个社会信息化程度的提高,人们各方面综合素质的提高,世界更新换代的节奏与人们生活的步伐也越来越快,在这告诉发展的当今世界,时间对人们来说无疑是极其宝贵的,时间就是金钱。 随着人们各方面素质的提高,不仅科学领域得到了飞速发展,在当今世界体育领域也飞速发展,运动员们都朝着“更高、更快、更强”目标发展,特别是短跑比赛要求计时器要有足够的精度,这样就出现了本课题研究的数字跑表,用以测量完场某项体育运动所用时间。用于径赛、游泳、自行车、赛马等对计时器精度要求在百分之一秒。当今世界的电子科技发展迅猛,其中单片机就是很好的例子,高性能、低功耗、低价格等特性极大丰富了市场。但为了实践我们的理论知识,使理论与实践相结合本设计不采用单片机技术,而用简单的电器元件组成。数字钟是一种数字电路技术是实现的时分秒及时装置,与机械式时钟相比具有更高的精准性和直观性,且无机械装置具有更长的使用寿命,因此得到广泛使用。钟表的数字化给人们生活带来了极大方便,而且大大扩展了钟表元原先的报时功能,因此研究数字钟及扩大其应用,具有非常现实的意义。 关键词:数字跑表,芯片,数码显示管

相关文档
最新文档