文档库 最新最全的文档下载
当前位置:文档库 › 基于verilogHDL的数字时钟

基于verilogHDL的数字时钟

基于verilogHDL的数字时钟
基于verilogHDL的数字时钟

*****

顶层模块信号定义:

clk : 基准时钟信号输入;

keysel : 校时状态/正常计时状态选择键输入;

key_s : 校秒信号选择键输入;

key_m : 校分信号选择键输入;

key_h : 校时信号选择键输入;

keyclr : 计时清零键;

keyen : 计时开始键;

buzzout : 声响输出;

sled : 4位数码管段码输出;

sl : 4位数码管位码输出;

seg : 单个数码管输出;

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

module

clock(clk,keysel,key_s,key_m,key_h,keyen,keyclr,sled,sl,seg,buzzout);

output[7:0] sled;

output[3:0] sl;

output[7:0] seg;

output buzzout;

input clk;

input keysel,key_s,key_m,key_h,keyen,keyclr;

reg[24:0] count;

wire[23:0] min;

wire sec;

wire sec_s,sec_m,sec_h,sec_narmal;

divclk Q1(clk,sec_narmal,sec_s,sec_m,sec_h);

modify

Q2(clk,keysel,key_s,key_m,key_h,sec,sec_narmal,sec_s,sec_m,sec_h);

counttime Q3(sec,keyclr,keyen,min);

display Q4(clk,sec,min,sled,sl,seg);

music Q5(clk,min,buzzout,sec_narmal);

endmodule

*****

分频模块信号定义:

clk : 基准时钟信号输入;

sec_narmal : 周期为1的信号输出;

sec_s : 周期为0.5s的信号输出;

sec_m : 周期为0.05s的信号输出;

sec_h : 周期为0.0005s的信号输出;

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

module divclk(clk,sec_narmal,sec_s,sec_m,sec_h);

input clk;

output sec_narmal,sec_s,sec_m,sec_h;

reg[23:0] count1;

reg[22:0] count2;

reg[19:0] count3;

reg[12:0] count4;

reg sec_narmal,sec_s,sec_m,sec_h;

always@(negedge clk)

begin

count1=count1+1'b1;

if(count1==24'd1*******)

begin

count1=24'h0;

sec_narmal=~sec_narmal;

end

end

always@(negedge clk)

begin

count2=count2+1'b1;

if(count2==23'd6000000)

begin

count2=23'h0;

sec_s=~sec_s;

end

end

always@(negedge clk)

begin

count3=count3+1'b1;

if(count3==20'd600000)

begin

count3=20'h0;

sec_m=~sec_m;

end

end

always@(negedge clk)

begin

count4=count4+1'b1;

if(count4==13'd6000)

begin

count4=13'h0;

sec_h=~sec_h;

end

end

endmodule

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

计时处理模块信号定义:

sec : 计时信号输入;

keyclr : 计时清零键;

keyen : 计时开始键;

min : 计时结果输出;

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

module counttime(sec,keyclr,keyen,min);

input sec;

input keyclr,keyen;

output[23:0] min;

reg[23:0] min;

always@(posedge sec)

begin

if(!keyclr)

begin

min=24'h0;

end

else

if(!keyen)

begin

min=min+1'b1;

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

begin

min[3:0]=4'h0;

min[7:4]=min[7:4]+1'b1;

if(min[7:4]==4'h6)

begin

min[7:4]=4'h0;

min[11:8]=min[11:8]+1'b1;

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

begin

min[11:8]=4'h0;

min[15:12]=min[15:12]+1'b1;

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

begin

min[15:12]=4'h0;

min[19:16]=min[19:16]+1'b1;

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

begin

min[19:16]=4'h0;

min[23:20]=min[23:20]+1'b1;

end

if(min[23:16]==8'h24)

min[23:16]=0;

end

end

end

end

end

end

endmodule

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

校时模块信号定义:

clk : 基准时钟信号输入;

keysel : 校时状态/正常计时状态选择键输入

key_s : 校秒信号选择键输入

key_m : 校分信号选择键输入

key_h : 校时信号选择键输入

sec_narmal : 周期为1的信号输出;

sec_s : 周期为0.5s的信号输出;

sec_m : 周期为0.05s的信号输出;

sec_h : 周期为0.0005s的信号输出;

sec : 计时信号输出;

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

module

modify(clk,keysel,key_s,key_m,key_h,sec,sec_narmal,sec_s,sec_m,sec _h);

input clk;

input keysel;

input key_s,key_m,key_h;

input sec_narmal,sec_s,sec_m,sec_h;

output sec;

reg sec;

always@(negedge clk)

begin

if(!keysel)

begin

if(!key_s)

sec=sec_s;

if(!key_m)

sec=sec_m;

if(!key_h)

sec=sec_h;

end

else

sec=sec_narmal;

end

endmodule

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

报时模块信号定义:

clk : 基准时钟信号输入;

min : 当前计时结果输入;

buzzout : 声响输出;

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

module music(clk,min,buzzout,sec_narmal);

input clk,sec_narmal;

input[23:0] min;

output buzzout;

reg[3:0] high,med,low;

reg buzzout_reg;

reg[24:0] count1,count2;

reg[15:0] count_end,count_now;

reg[7:0] counter;

reg clk_4HZ;

always@(posedge clk)

begin

if(count1<22'd3000000)

count1=count1+1'b1;

else

begin

count1=0;

clk_4HZ=~clk_4HZ;

end

end

always@(posedge clk)

begin

if(count_now!=count_end)

begin

count2=25'h0;

count_now=count_end;

end

count2=count2+1'b1;

if((min[15:0]>=16'h5945)&&(min[15:0]<=16'h5959))

begin

if((count2==count_end)&&(min[23:16]==8'h11))

begin

count2=25'h0;

buzzout_reg=!buzzout_reg;

end

end

if((min[15:0]>=16'h5950)&&(min[15:0]<=16'h5959)) begin

if(min[23:16]!=8'h11)

begin

buzzout_reg=!(count2[10]&sec_narmal);

end

end

end

always@(posedge clk_4HZ)

begin

case({high,med,low})

9'b000000001:count_end=16'hbb9a;

9'b000000010:count_end=16'ha72f;

9'b000000011:count_end=16'h94f2;

9'b000000100:count_end=16'h8e78;

9'b000000101:count_end=16'h7d63;

9'b000000110:count_end=16'h6fb5;

9'b000000111:count_end=16'h637f;

9'b000001000:count_end=16'h5dfb;

9'b000010000:count_end=16'h53bb;

9'b000011000:count_end=16'h4a95;

9'b000100000:count_end=16'h4651;

9'b000101000:count_end=16'h3eb1;

9'b000110000:count_end=16'h37da;

9'b000111000:count_end=16'h31bf;

9'b001000000:count_end=16'h2ef2;

9'b010000000:count_end=16'h29d4;

9'b011000000:count_end=16'h2543;

9'b100000000:count_end=16'h232f;

9'b101000000:count_end=16'h1f58;

9'b110000000:count_end=16'h1bed;

9'b111000000:count_end=16'h18df;

endcase

end

always@(posedge clk_4HZ)

begin

if(counter==57)

counter=0;

else

counter=counter+1'b1;

case(counter)

0:{high,med,low}=9'b000001000;

1:{high,med,low}=9'b000001000;

2:{high,med,low}=9'b000001000;

3:{high,med,low}=9'b000001000;

4:{high,med,low}=9'b000010000;

5:{high,med,low}=9'b000010000;

6:{high,med,low}=9'b000010000;

7:{high,med,low}=9'b000010000;

8:{high,med,low}=9'b000011000;

9:{high,med,low}=9'b000011000;

10:{high,med,low}=9'b000011000;

11:{high,med,low}=9'b000011000;

12:{high,med,low}=9'b000001000;

13:{high,med,low}=9'b000001000;

14:{high,med,low}=9'b000001000;

15:{high,med,low}=9'b000001000;

16:{high,med,low}=9'b000001000;

17:{high,med,low}=9'b000001000;

19:{high,med,low}=9'b000001000; 20:{high,med,low}=9'b000010000; 21:{high,med,low}=9'b000010000; 22:{high,med,low}=9'b000010000; 23:{high,med,low}=9'b000010000; 24:{high,med,low}=9'b000011000; 25:{high,med,low}=9'b000011000; 26:{high,med,low}=9'b000011000; 27:{high,med,low}=9'b000011000; 28:{high,med,low}=9'b000001000; 29:{high,med,low}=9'b000001000; 30:{high,med,low}=9'b000001000; 31:{high,med,low}=9'b000001000; 32:{high,med,low}=9'b000011000; 33:{high,med,low}=9'b000011000; 34:{high,med,low}=9'b000011000; 35:{high,med,low}=9'b000011000; 36:{high,med,low}=9'b000100000; 37:{high,med,low}=9'b000100000; 38:{high,med,low}=9'b000100000; 39:{high,med,low}=9'b000100000; 40:{high,med,low}=9'b000101000; 41:{high,med,low}=9'b000101000; 42:{high,med,low}=9'b000101000; 43:{high,med,low}=9'b000101000; 44:{high,med,low}=9'b000001000; 45:{high,med,low}=9'b000001000; 46:{high,med,low}=9'b000001000; 47:{high,med,low}=9'b000011000; 48:{high,med,low}=9'b000011000; 49:{high,med,low}=9'b000011000; 50:{high,med,low}=9'b000011000; 51:{high,med,low}=9'b000100000; 52:{high,med,low}=9'b000100000; 53:{high,med,low}=9'b000100000; 54:{high,med,low}=9'b000100000;

56:{high,med,low}=9'b000101000;

57:{high,med,low}=9'b000101000;

endcase

end

assign buzzout=buzzout_reg;

endmodule

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

显示模块信号定义:

clk : 基准时钟信号输入;

min : 当前计时结果输入;

sec : 计时的秒信号输入;

sled_reg : 数码管短码输出;

sl_reg : 数码管位码输出;

seg_reg : 单个数码管输出;

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

module display(clk,sec,min,sled_reg,sl_reg,seg_reg);

input clk;

input sec;

input[23:0] min;

output[7:0] sled_reg;

output[3:0] sl_reg;

output[7:0] seg_reg;

reg[7:0] sled_reg;

reg[3:0] sl_reg;

reg[7:0] seg_reg;

reg[15:0] count;

reg[3:0] ledbuf;

always@(negedge clk)

begin

count=count+1'b1;

end

always@(count[11:10])

begin

case(count[11:10])

2'h0:ledbuf=min[3:0];

2'h1:ledbuf=min[7:4];

2'h2:ledbuf=min[11:8];

2'h3:ledbuf=min[15:12];

endcase

case(count[11:10])

2'h0:sl_reg=4'b0111;

2'h1:sl_reg=4'b1011;

2'h2:sl_reg=4'b1101;

2'h3:sl_reg=4'b1110;

endcase

end

always@(ledbuf)

begin

case(ledbuf)

4'h0:sled_reg=8'hc0;

4'h1:sled_reg=8'hf9;

4'h2:sled_reg=8'ha4;

4'h3:sled_reg=8'hb0;

4'h4:sled_reg=8'h99;

4'h5:sled_reg=8'h92;

4'h6:sled_reg=8'h82;

4'h7:sled_reg=8'hf8;

4'h8:sled_reg=8'h80;

4'h9:sled_reg=8'h90;

4'ha:sled_reg=8'h88;

4'hb:sled_reg=8'h83;

4'hc:sled_reg=8'hc6;

4'hd:sled_reg=8'ha1;

4'he:sled_reg=8'h86;

4'hf:sled_reg=8'h8e;

endcase

if((count[11:10]==2'b10)&sec)

sled_reg=sled_reg&8'h7f; end

always@(min[23:16])

begin

case(min[23:16])

8'h0:seg_reg=8'h3f;

8'h1:seg_reg=8'h06;

8'h2:seg_reg=8'h5b;

8'h3:seg_reg=8'h4f;

8'h4:seg_reg=8'h66;

8'h5:seg_reg=8'h6d;

8'h6:seg_reg=8'h7d;

8'h7:seg_reg=8'h07;

8'h8:seg_reg=8'h7f;

8'h9:seg_reg=8'h6f;

8'h10:seg_reg=8'h77;

8'h11:seg_reg=8'h7c;

8'h12:seg_reg=8'hbf;

8'h13:seg_reg=8'h86;

8'h14:seg_reg=8'hdb;

8'h15:seg_reg=8'hcf;

8'h16:seg_reg=8'he6;

8'h17:seg_reg=8'hed;

8'h18:seg_reg=8'hfd;

8'h19:seg_reg=8'h87;

8'h20:seg_reg=8'hff;

8'h21:seg_reg=8'hef;

8'h22:seg_reg=8'hf7;

8'h23:seg_reg=8'hfc;

endcase

end

endmodule

数字时钟课程设计方案设计方案

课程设计题目名称:数字时钟 专业名称:电气工程及其自动化班级: ******** 学号: *******8 学生姓名: ******* 任课教师: *******

《电子技术课程设计》任务书

2.对课程设计成果的要求〔包括图表(或实物)等硬件要求〕:设计电路,安装调试或仿真,分析实验结果,并写出设计说明书,语言流畅简洁,文字不得少于3500字。要求图纸布局合理,符合工程要求,使用Protel软件绘出原理图(SCH)和印制电路板(PCB),器件的选择要有计算依据。 3.主要参考文献:⑴《电子技术课程设计指导》彭介华编,高等教育出版社,1997年10月 ⑵《数字电子技术》康华光编著高等教育出版社, 2001年 要求按国标GB 7714—87《文后参考文献著录规则》书写。 4.课程设计工作进度计划: 序号起迄日期工作内容 初步设想和资料查询,原理图的绘画 1 2015.11.18-2015.12.21 仿真调试,元件参数测定,实物的拼接与测试 2 2015.12.21-2016.1.8 叙写设计报告,总结本次设计,论文提交 3 2016.1.8-2016.1.18 主指导教师日期:年月日

摘要 数字时钟已成为人们日常生活中必不可少的必需品,广泛于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。并且数字时钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。报告围绕此次数字钟的设计进行介绍、总结,包含了设计的步骤,前期的准备,装配的过程。在实装时,采用了74LS90进行计数,用CD4060产生秒脉冲,CD4511进行数码管转换显示,还要考虑电路的校时、校分,每块芯片各设计为几进制等等,最后实现了数字钟设计所要求的各项功能:时钟显示功能;快速校准时间的功能。 关键字:数字时钟校时CD4511

用VHDL实现数字时钟的设计[1]

收稿日期:2007-06-04 第一作者 刘竹林 男 27岁 助教 用V HDL 实现数字时钟的设计 刘竹林 李晶骅 (十堰职业技术学院电子工程系,湖北十堰442000) 摘 要:以一款数字钟设计为例,较详细的介绍了如何用VHDL 语言设计数字电路,并给出了部分程序、仿真 波形图,并在MAX +plusII 中进行编译、仿真、下载。由此说明利用VHDL 开发数字电路的优点。 关键词:VHDL ;设计;数字钟;应用电路中图分类号:TN953 文献标识码:A 0 引言 VHDL 硬件描述语言在电子设计自动化(EDA )中扮演 着重要的角色,它的出现极大的改变了传统的设计方法、设 计过程乃至设计观念。由于采用了“自顶向下” (Top 2Down )的全新设计方法,使设计师们摆脱了大量的辅助设计工作, 而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率,缩短了产品的研制周期。 这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 1 用V HDL 设计一款数字钟 我们设计的数字时钟原理框图如图1。其基本功能划 分为:计数模块(包括秒、分、时)、译码模块、扫描显示控制模块。计数模块由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数,当计数到23点59分59秒的时候,即一天结束,计数器清零, 新的一天重新开始计数。 图1 数字时钟原理框图 秒计数器的计数时钟信号为1Hz 的标准信号,可以由系 统板上提供的4MHz 信号通过222分频得到。秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。设计一个同时显示时、分、秒6个数字的数字钟,则需要6个七段显示器。若同时点亮这6个七段显示器,则电路中会产生一个比较大的电流,很容易造成电路烧坏,我们通过扫描电路来解决这一问题,通过产生一个扫描信号CS (0)-CS (5)来控制6个七段显示器,依次点亮6个七段显示器,也就是每次只点亮一个七段显示器。只要扫描信号CS (0)-CS (5)的频率超过人的眼睛视觉暂留频率24Hz 以上,就可以达到尽管每次点亮单个七段显示器,却能具有6个同时显示的视觉效果,而且显示也不致闪烁抖动。 其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。 2 模块设计 2.1 VHDL 语言的基本结构 一个独立的设计实体通常包括:实体(EN TIT Y )、结构体(ARCHITECTURE )、配置(CONFIGURA TION )、包集合(PACKGE )、和库(L IBRAR Y )5个部分。其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体—结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。VHDL 程序设计基本结构如图2 。 图2 VHDL 程序设计基本结构 2.2 各模块的实现 2.2.1 计数模块(建立VHDL 语言的工程文件) 计数模块由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数。其VHDL 源程序相差不大由于篇幅有限,这里我们以秒模块的实现为例。程序如下: library ieee ; use ieee.std -logic -1164.all ;entity counter -60-bcd is 山西电子技术 2008年第1期 应用实践

基于eda的数字钟程序设计

一、课题要求: (1)技术要求:1、掌握多功能数字钟的工作原理。 2、应用EDA技术,VHDL语言编写程序。 3、层次化设计,设计原理框图。 4,、硬件设计及排版。 (2)功能要求:1、基本功能:能进行正常的时、分、秒计时功能,分别 由6个数码管显示24小时、60分钟、60秒的计数器 显示。 2、扩展功能:(1)能够利用按键实现“校时”“校分” “清零”功能。 (2)能利用扬声器做整点报时,整点前 五秒短声,整点长声。 (3)本人工作:负责软件部分,,编写各部分模块的VHDL程序,并且锁定 引脚,将程序下载到芯片中。 二、设计方案: 原理框图: 数字钟原理框图 一共有11个小模块:分频,片选,按键,小时,分,秒,显示模块,七段显示译码器,报时,扬声,36译码器。 左边第一个是时钟信号输入端,50Mhz到分频模块。第二个为清零按键,第三个为校分按键,第四个为校时按键。 右边第一个为七段显示译码器输出端,第二个为扬声器输出端,第三个为6个数码管输出端。

中间模块为数字钟的核心,有计时,报时,校时功能。 三、单元模块设计 1、分频模块 该模块是将时钟脉冲50Mhz分频到1000、500和1,分别给报时模块和及时模块。

2、秒模块 仿真图

该模块为60进制计数器,有分频模块得到的1hz进行计时,计时输出为秒的数值,在计时到59时进位1到co端。当按下s3时,秒清零。 3.、分模块 仿真图

该模块也为60进制计数器,计时输出为分的数值。在EN信号有效且时钟来时,计数器加1、在s2按下时,EN使能端有效,实现校分功能。 4、时模块 仿真图 该模块为24进制计数器,计时输出为小时的数值,在EN信号到来时,计数器

电子时钟课程设计_数电课程设计数字电子时钟的实现

电子时钟课程设计_数电课程设计数字电子 时钟的实现 课程设计报告设计题目:数字电子时钟的设计与实现班级: 学号: 姓名: 指导教师: 设计时间: 摘要钟表的数字化给人们生产生活带来了极大的方便,大大的扩展了原先钟表的报时。诸如,定时报警、按时自动打铃、时间程序自动控制等,这些,都是以钟表数字化为基础的。功能数字钟是一种用数字电路实现时、分、秒、计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。从原理上讲,数字钟是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。 因此,此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟,而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及使用方法。通过此次课程设计可以进一步学习与各种组合逻辑电路与时序电路的原理与使用方法。通过仿真过程也进一步学会了Multisim 7的使用方法与注意事项。

本次所要设计的数字电子表可以满足使用者的一些特殊要求,输 出方式灵活,如可以随意设置时、分、秒的输出,定点报时。由于集 成电路技术的发展,,使数字电子钟具有体积小、耗电省、计时准确、 性能稳定、维护方便等优点。 关键词:数字钟,组合逻辑电路,时序电路,集成电路目 录摘要 (1) 第1章概述 (3) 第2章课程设计任务及要求 (4) 2.1设计任务 (4) 2.2设计要求 (4) 第3章系统设计 (6) 3.1方案论证 (6) 3.2系统设计 (6) 3.2.1 结构框图及说明 (6) 3.2.2 系统原理图及工作原理 (7) 3.3单元电路设计 (8) 3.3.1 单元电路工作原理 (8) 3.3.2 元件参数选择···································14 第 4章软件仿真 (15) 4.1仿真电路图 (15) 4.2仿真过程 (16)

数字电子时钟课程设计

数字电子技术基础课程设计报告 班级:姓名: 学号: 一、设计目的 1掌握专业基础知识的综合能力。 2完成设计电路的原理设计、故障排除。 3逐步建立电子系统的研发、设计能力,为毕业设计打好基础。 4让学生掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、安装、测试方法。 5进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力。 6培养书写综合实验报告的能力。 二、设计仪器 1 LM555CH 2 74LS161N 74LS160N 74LS290 3 74LS00 74LS08 4 电源电阻电容二极管接地等 三数字电子钟的基本功能及用途 现在数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性

能稳定、集成电路有体积小、功耗小、功能多、携带方便等优点,,因此在许多电子设备中被广泛使用。 电子钟是人们日常生活中常用的计时工具,而数字式电子钟又有其体积小、重量轻、走时准确、结构简单、耗电量少等优点而在生活中被广泛应用,因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间及星期的显示功能。 多功能数字钟采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。具有时间显示、走时准确、显示直观、精度、稳定等优点。电路装置十分小巧,安装使用也方便。同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱。 四设计原理及方框图 数字钟实际上是一个对标准频率进行计数的计数电路,标准的1HZ时间信号必须做到准确稳定。由图可见:本数字钟电路主要由震荡器、、时分秒计数器、译码显示器构成。它们的工作原理是:由震荡器产生的高频脉冲信号作为数字钟的时间基准,送入秒计数

eda数字电子钟

唐山学院 《EDA技术》课程设计 题目数字电子钟设计 系(部) 智能与信息工程学院 班级13电本1班 姓名马建雨 学号4130208144 指导教师郭耀华、王默琦、戴彦 2016年7 月4日至7月8 日共1 周 2016年7 月8日

目录 1 引言 (1) 2 EDA技术简介 (2) 2.1 EDA技术的基本特征 (2) 2.2 硬件描述语言 (2) 3 QuartusII软件简介 (4) 3.1软件介绍 (4) 3.2 QuartusII工作环境介绍 (5) 4 课程设计说明 (8) 4.1设计内容 (8) 4.2设计要求 (8) 4.3设计目的 (8) 4.4设计思路 (8) 4.5 设计具体方案及实现 (9) 4.5.1秒、分、时计时模块 (9) 4.5.2 动态显示模块 (11) 4.5.3 整点报时模块 (13) 4.5.4 校时模块 (14) 4.6 总程序 (16) 5 总结 (17) 参考文献 (18)

1 引言 随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也愈益依赖于EDA技术的应用。即使是普通的电子技术的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。 EDA技术的设计语言为VHDL(硬件描述语言),实验载体为可编程器件CPLD或者FPGA,进行元件模拟和仿真的目标器件为ASIC/SOC芯片。它是一种自动化设计电子产品的过程。在电子设计仿真的领域里,EDA技术的出现具有非常重要的现实意义。EDA源自于计算机辅助设计、制造、测试以及辅助工程。利用EDA工具,设计者们可以从概念、算法、协议等方面来设计电子系统。值得一提的是,在整个电子系统的设计过程中,设计电路、分析性能、布置IC 和PCB版图等步骤都可以在电脑上自动完成。 时钟是我们日常生活中必备的生活用品之一。而数字时钟的出现更是给人们的生产生活带来了极大的便利。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 EDA技术为数字类产品提供了一个非常简便实用的开发平台。随着EDA技术的快速发展,数字时钟的应用越来越广泛,并且它在功能外观方面也有了很大的改善和提高。本文就是基于EDA技术的基础知识,利用Quartus2软件再现一个具有传统时钟功能和自动报时功能的数字时钟。 数字钟采用EDA技术设计,利用硬件描述语言VHDL按模块化方式设计、编程及时序仿真等。该数字钟能实现时、分、秒计数的显示功能,且以24小时循环计时,具有清零的功能,且能够对计时系统的小时、分钟进行调整,具有整点报时功能。整个系统包括传统数字时钟所拥有的计时模块、校时模块、译码显示模块以及整点报时模块。整个系统使用方便,功能齐全,精度高。

数字电路课程设计--数字时钟

数字电路课程设计--数字时钟

《数字时钟》技术报告 概要 数字钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒。一个基本的数字钟电路主要由秒信号发生器、“时、分、秒、”计数器、译码器及显示器组成。由于采用纯数字硬件设计制作,与传统的机械表相比,它具有走时准,显示直观,无机械传动装置等特点。 本设计中的数字时钟采用数字电路实现对“时”、“分”、“秒”的显示和调整。通过采用各种集成数字芯片搭建电路来实现相应的功能。具体用到了555震荡器,74LS90及与非,异或等门集成芯片等。该电路具有计时和校时的功能。 在对整个模块进行分析和画出总体电路图后,对各模块进行仿真并记录仿真所观察到的结果。 实验证明该设计电路基本上能够符合设计要求! 一、系统结构。 (1)功能。 此数字钟能显示“时、分、秒”的功能,它的计时周期是24小时,最大能显示23时59分59秒,并能对时间进行调整和校对,相对于机械式的手表其更为准确。 (2)系统框图。

译码器译码器译码器 时计数分计数秒计 校时电路 振荡器分频器 系统方框图 (3)系统组成。 1.秒发生器:由555芯片和RC组成的多谐振荡器,其555上3的输出频率由接入的电阻与电容决定。 2.校时模块:由74LS03中的4个与非门和相应的开关和电阻构成。 3.计数器:由74LS90中的与非门、JK触发器、或门构成相应芯片串接得到二十四、六十进制的计数器,再由74LS90与74LS08相连接而得到秒、分、时的进分别进位。 4.译码器:选用BCD锁存译码器4511,接受74LS90来的信

飞思卡尔杯智能车竞赛报告总结

1.1. 系统分析 智能车竞赛要求设计一辆以组委会提供车模为主体的可以自主寻线的模型车,最后成绩取决于单圈最快时间。因此智能车主要由三大系统组成:检测系统,控制系统,执行系统。其中检测系统用于检测道路信息及小车的运行状况。控制系统采用大赛组委会提供的16位单片机MC9S12XS128作为主控芯片,根据检测系统反馈的信息新局决定各控制量——速度与转角,执行系统根据单片机的命令控制舵机的转角和直流电机的转速。整体的流程如图1.1,检测系统采集路径信息,经过控制决策系统分析和判断,由执行系统控制直流电机给出合适的转速,同时控制舵机给出合适的转角,从而控制智能车稳定、快速地行驶。 图2.1 1.2. 系统设计 参赛小车将电感采集到的电压信号,经滤波,整流后输入到XS128单片机,用光电编码器获得实时车速,反馈到单片机,实现完全闭环控制。速度电机采用模糊控制,舵机采用PD控制,具体的参数由多次调试中获得。考滤到小车设计的综合性很强,涵盖了控制、传感、电子、电气、计算机和机械等多个学科领域,因此我们采用了模块化设计方法,小车的系统框图如图2.2。

第五届全国大学生智能汽车竞赛技术报告 图2.2 1.3. 整车外观 图2.3

1.4. 赛车的基本参数 智能车竞赛所使用的车模是东莞市博思公司生产的G768型车模,由大赛组委会统一提供,是一款带有摩擦式差速器后轮驱动的电动模型车。车模外观如图3.1。车模基本参数如表3.1。 图3.1 表3.1车模基本参数 1.5. 赛车前轮定位参数的选定

第五届全国大学生智能汽车竞赛技术报告 现代汽车在正常行驶过程中,为了使汽车直线行驶稳定,转向轻便,转向后能自动回正,减少轮胎和转向系零件的磨损等,在转向轮、转向节和前轴之间须形成一定的相对安装位置,叫车轮定位,其主要的参数有:主销后倾、主销内倾、车轮外倾和前束。模型车的前轮定位参数都允许作适当调整,故此我们将自身专业课所学的理论知识与实际调车中的赛车状况相结合,最终得出赛车匹配后的前轮参数[6]。 1.5.1. 主销后倾角 主销后倾角是指在纵向平面内主销轴线与地面垂直线之间的夹角γ,如图3-2。模型车的主销后倾角可以设置为0、 2°?3°、 4°?6°,可以通过改变上横臂轴上的黄色垫片来调整,一共有四个垫片,前二后二时为0°,前一后三为2°?3°,四个全装后面时为4°?6°。 由于主销后倾角过大时会引起转向沉重,又因为比赛所用舵机特性偏软,所以不宜采用大的主销后倾角,以接近0°为好,即垫片宜安装采用前二后二的方式,以便增加其转向的灵活性。如图3.3。 图3.2 图3.3 1.5. 2. 主销内倾角 主销内倾角是指在横向平面内主销轴线与地面垂直线之间的夹角β,如图3.4,它的作用也是使前轮自动回正。对于模型车,通过调整前桥的螺杆的长度可以改变主销内倾角的大小,由于前轴与主销近似垂直的关系,故主销内倾角

多功能数字钟的设计与实现

多功能数字钟的设计与实现一、实验目的 1.掌握数字钟的设计原理。 2.用微机实验平台实现数字钟。 3.分析比较微机实现的数字钟和其他方法实现的数字钟。 二、实验内容与要求 使用微机实验平台实现数字钟。 1.基本要求如下: 1) 24 小时制时间显示。 2) 3) 4)可以随时进行时间校对。 整点报时。 闹钟功能,要求设置起闹时间时,不影响时钟的正常走时。 2.提高要求 1) 2)校时时相应位闪烁。能够设置多个起闹点。 三、实验报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单 5.设计结果和体会(包括遇到的问题及解决的方法) 四、系统总体设计 根据设计要求,初步思路如下: 1)计时单元由定时/计数器8253的通道0 来实现。定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数,从而实现24小时制定时。8253定时时间到了之后产生中断信号,8253在中断服务程序中实现时、分、秒的累加。 2)时间显示采用实验平台上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。 3)校时和闹铃定时通过键盘电路和单脉冲产生单元来输入。按键包括校时键、闹钟定时键、加1键和减1键等。

4) 报警声响用蜂鸣器产生,将蜂鸣器接到 8255 的一个端口,通过输出电平的高低来 控制蜂鸣器的发声。 系统硬件设计主要利用微机实验平台上的电路模块。硬件电路主要由键盘电路、 单脉冲产生单元、8253 定时计数器、8255 并行接口单元、8259 中断控制器、LED 显 示电路和蜂鸣器电路等等。系统的硬件电路设计框图如图 1 所示。 图 1 硬件电路框图 五、硬件设计 根据设计思路,硬件电路可通过实验平台上的一些功能模块电路组成,由于实验平台 上的各个功能模块已经设计好,用户在使用时只要设计模块间电路的连接,因此,硬件电 路的设计及实现相对简单。完整系统的硬件连接如图 2 所示。硬件电路由定时模块、按键 模块、数码管显示模块和蜂鸣器模块组成。 Q6 路 图 2 系统硬件电路图 微机系统 8253 8255 8259 数码管显示 电路 键盘电路 蜂鸣器电路 单脉冲发生 单元 单脉冲发 生单元 键盘电路 8255 PA0 PB0 PC 8253 OUT0 GATE0 Clk0 地址 CS1 译码 CS2 电路 CS3 CS4 数码管显示模块 8259 IRQ2 IRQ3 IRQ5 PC BUS 蜂鸣器 单脉冲发 生单元

飞思卡尔MC9S12XS128单片机中断优先级设置简易教程

本教程试图用最少的时间教你飞思卡尔XS128单片机的中断优先级设置方法和中断嵌套的使用,如果是新手请先学习中断的基本使用方法。 先来看看XS128 DataSheet 中介绍的相关知识,只翻译有用的: 七个中断优先级 每一个中断源都有一个可以设置的级别 高优先级中断的可以嵌套低优先级中断 复位后可屏蔽中断默认优先级为1 同一优先级的中断同时触发时,高地址(中断号较小)的中断先响应 注意:高地址中断只能优先响应,但不能嵌套同一优先级低地址的中断 下面直接进入正题,看看怎么设置中断优先级: XS128中包括预留的中断一共有128个中断位,如果为每个中断都分配一个优先级寄存器的话会非常浪费资源,因此飞思卡尔公司想出了这样一种办法:把128个中断分为16个组,每组8个中断。每次设置中断时,先把需要的组别告诉某个寄存器,再设置8个中断优先寄存器的某一个,这样只需9个寄存器即可完成中断的设置。 分组的规则是这样的:中断地址位7到位4相同的中断为一组,比如MC9SX128.h中 这些中断的位7到位3都为D,他们就被分成了一组。0~F正好16个组。

INT_CFADDR就是上面说到的用来设置组别的寄存器: 我们需要设置某个组别的中断时,只要写入最后8位地址就行了,比如设置SCI0的中断优先级,就写入0xD0。 设置好组别之后,我们就要该组中相应的中断进行设置,设置中断的寄存器为 这其实是一组寄存器,一共有8个,每个都代表中断组中的一个中断。对应规则是这样的:中断地址的低四位除以2 比如还是SCI0,低四位是6,除以二就是3,那么我们就需要设置INT_CFDATA3 往INT_CFDATAx中写入0~7就能设置相应的中断优先级了 拿我本次比赛的程序来举个例子:我们的程序中需要3个中断:PIT0,PORTH,SCI0。PIT0定时检测传感器数值,PORTH连接干簧管进行起跑线检测,SCI0接收上位机指令实现急停等功能。因此中断优先级要SCI0>PORTH>PIT0。 我们先要从头文件中找出相应中断的地址: PIT0【7:4】位为7,选择中断组: INT_CFADDR=0x70;

EDA数字时钟课程设计报告

EDA技术及应用课程设计说明书 2013 届电子信息工程专业班级 题目数字时钟 学号 姓名 指导教师 二О一五年月日

一、基本原理 一个完整的时钟应由三部分组成:秒脉冲发生电路、计数显示部分和时钟调整部分。 秒脉冲发生电路原理:一个时钟的准确与否主要取决于秒脉冲的精确度。为了保证计时准确我们对系统时钟48MHz进行了48000000分频,从而得到1Hz的秒脉冲。 计数显示部分原理:显示部分是用数码管LED实现的,这里使用的是共阳极的数码管如图所示8个数码管,其中左边两个数码管用来显示时的个位和十位、中间的显示分的个位和十位、最右边两个显示分的个位和十位。 时钟调整部分原理:校时电路里定义key[0]、key[1]和k2、k3分别用于控制时钟的计时开始、清零和调整功能中的时的加1、分的加1处理,从而完成对现在的时间调整。本实验电路校时电路在此完成了暂停、清零、时调整和分调整。

二、硬件设计 芯片图: 图1 数字时钟原理图 程序的调试工作都是在电脑上完成的,通过程序的输入、原理图的建立、管脚分配、编译、仿真、再下载到芯片进行运行。

电路中采用共阳极连接的七段数码管,通过程序的控制扫描驱动来显示时钟的时-分-秒。

程序中的按键设定为K1暂停、K2清零、K3调时、K4调分元件清单: 三、数字时钟的Verilog实现 管脚的分配: 程序: module clock(clk,s1,,s2,key,dig,seg); //模块名clock input clk,s1,s2; //输入时钟 input[1:0]key; //输入按键 output[7:0]dig; //数码管选择输出引脚

数字时钟的设计与仿真

湖北民族学院 课程设计报告 数字时钟设计与仿真 课程:电子线路课程设计 专业:电子信息科学与技术 班级: 0312409 学号: 031240910 学生姓名:谢加龙 指导教师:易金桥 2014年 06月 21日

信息工程学院课程设计任务书 2014-06-21

摘要 基于单片机AT89c51设计而成的简易数字电子时钟,其主要功能皆由对单片机编程即由软件完成,外围硬件电路只包括报时电路、键盘输入电路和显示电路三个模块。具有外围硬件电路简单、运行功能可靠的优点。 关键词:单片机时钟键盘输入显示

目录 1、系统设计要求 (1) 1.1 基本功能 (1) 1.2扩展功能 (1) 2、硬件设计 (2) 2.1系统设计方案选择 (2) 2.2系统原理框图 (2) 2.3各单元的功能描述 (2) 2.4电路连接图 (2) 2.5元器件清单列表 (2) 2.6所用芯片的管脚图 (2) 3、软件设计 (3) 3.1主程序的流程图 (3) 3.2键盘扫描程序流程图 (3) 3.3发声程序流程图 (3) 3.4总程序 (3) 4、调试 (4) 4.1仿真调试 (4) 4.2硬件调试 (4) 5、总结 (5) 参考文献 (6)

1、系统设计要求 1.1 基本功能 (1)、要求准确显示“时”、“分”、“秒”,24 小时制; (2)、具有整点报时功能,在每小时59 分51 秒、53 秒、55 秒、57 秒发出低音,59秒整发出高音; (3)、系统工作符合一般时钟要求。 1.2扩展功能: (1)、具有校时功能,用户可修改“时”、“分”,且互不影响; (2)、可切换12 小时制和24 小时制。

飞思卡尔单片机复习题

复习题: 1.根据总线时钟频率会计算TCNT计数时钟周期的最大值?最小值?溢出周期最大值? 如:fbus=2.4576MHz,值分别为多少?若fbus=8MHz呢? 2.熟悉LED共阴极共阳字型码的计算。 3.熟悉A W60各输入输出端口功能。 4. 不带缓冲和带缓冲的PWM有什么差异性? 5.为什么要将某些寄存器名和寄存器位在头文件中进行宏定义? 6.简述中断的作用与处理过程。 7.AW60 MCU都有哪些中断源? 8.为了实现对键盘的编程,如何区分按键是否真正地被按下,还是抖动?如何处理重键问题? 9.为了实现对键盘的编程,如何识别键盘上的按键? 10.实现计数与定时的基本方法有哪些?比较它们的优缺点。 11.比较AW60定时器模块实现输出比较功能与PWM功能的异同点。 12.为什么要对采集的数据进行滤波,有哪些滤波方法? 13.什么是输出比较?主要用途是什么? 14.什么是中断?什么是中断向量?什么是中断向量地址?GP32一共有多少个中断源? 15.什么是LED静态扫描、LED动态扫描? 16.请描述键盘逐行逐列扫描法原理。判断是否有键按下通常有哪两种方法?各有何优缺点?17.键盘设计思路中是如何获取按键的行列位置信息的?以3*3键盘为例。 18.LED和LCD各有何特点? 19.什么是脉宽调制波?脉宽调制输出功能主要用途是什么? 20.微控制器的片外晶体振荡器的频率是不是越高越好?为什么? 21.简述定时接口的基本原理。 22.如果系统中需要9个按键,那么矩阵式键盘接口方案应如何设计?并编写键盘初始化子程序及读取键值子程序,键值存入A中,若无键按下,为$FF。 23.设计并编程:仿照本章给出的定时器1通道0输入捕捉中断里程,捕捉两路输入信号,分别用相应的指示灯指示。 24.使用中断方式,对通道0输入的模拟信号连续采样8次,送入缓冲区。 25.用AW60不带缓冲的输出比较功能产生周期约为1S的方波。设内部总线时钟频率为32.768KHz。26.根据P178页码图9-3硬件连接图,编写程序完成在四个8段数码管上显示8字循环的程序。27.根据P178页码图9-3硬件连接图,编写程序完成在四个8段数码管上的4个8段abcdefgh 轮流点亮。 28.编写一个子程序对T1CH0初始化,使T1CH0产生20ms定时中断,并编写T1CH0中断服务程序使PTC0输出周期为1S的方波。设fbus=8MHz。 29.复习所有的实验。 30.复习所有的例题、作业题。 题型:选择题(30分)、问答题(40分)、编程题(30分) 1

第六届“飞思卡尔”全国大学生智能车全国赛比赛规则

第六届全国大学生“飞思卡尔”杯智能汽车竞赛 比赛规则与赛场纪律 参赛选手须使用竞赛秘书处统一指定的竞赛车模套件,采用飞思卡尔半导体公司的8位、16位微控制器作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动、转向舵机控制以及控制算法软件开发等,完成智能车工程制作及调试,于指定日期与地点参加各分赛区的场地比赛,在获得决赛资格后,参加全国决赛区的场地比赛。参赛队伍的名次(成绩)由赛车现场成功完成赛道比赛时间为主,技术报告、制作工程质量评分为辅来决定。大赛根据车模检测路径方案不同分为电磁、光电与摄像头三个赛题组。车模通过感应由赛道中心电线产生的交变磁场进行路经检测的属于电磁组;车模通过采集赛道图像(一维、二维)进行进行路经检测的属于摄像头组;车模通过采集赛道上少数孤立点反射亮度进行路经检测的属于光电组。 竞赛秘书处制定如下比赛规则适用于各分赛区预赛以及全国总决赛,在实际可操作性基础上力求公正与公平。 一、器材限制规定 1. 须采用统一指定的车模。本届比赛指定采用三种车模,分别用于三个 赛题组: 编 号车模外观和规格 赛 题 组 供 应 厂 商 A 型车模 光 电 组 东 莞 市 博 思 电 子 数 码 科 技 有 限 公 司

车模:G768 电机:RS380-ST/3545, 舵机:FUTABA3010 B 型 车 模 车模型号 电机:540,伺服器:S-A6 电 磁 组 北 京 科 宇 通 博 科 技 有 限 公 司 C 型 车 模 车模型号:N286 电机:RN260-CN 38-18130 伺服器:FUTABA3010 摄 像 头 组 东 莞 市 博 思 电 子 数 码 科 技 有 限 公 司 细节及改动限制见附件一。

基于的数字时钟的设计

基于QuartusII的数字时钟的设计 摘要 QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 QuartusII使用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 数字钟是一种用数字电路实现时、分、秒计时的装置,与机械实施中相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到了广泛的使用。 在对EDA的课程有了初步的了解并掌握Quartus II软件的初步应用之后,我们决定将课题设置为应用Quartus II软件,设计出一个时间可调,并可以通过LED七段共阴极数码管来显示时、分、秒的简易数字钟。 关键词:QuartusII;VHDL;EDA;数字钟

Summary QuartusII is Altera company comprehensive PLD/FPGA development software, support principle diagram, VHDL, VerilogHDL and AHDL design input in the form of embedded own comprehensive device simulators, and can be done from the design input to the hardware configuration of the complete PLD design process. QuartusII allow users to take full advantage of mature modules, simplifies the design complexity, speed up the design.Good support for third-party EDA tools also allow users to use in the different stages of the design process is familiar with third-party EDA tools. Digital clock is a kind of when using a digital circuit implementation, minutes and seconds timing device, a higher accuracy compared with the implementation of the mechanical and intuitive, and no mechanical device, has a longer service life, has been widely used. In the course of EDA have a preliminary understanding and mastering the Quartus II software after the initial application, we decided to set the topic for the application of the Quartus II software, design a time is adjustable, and can be through the 7 common cathode LED digital tube display hours, minutes and seconds of simple digital clock. Keywords:QuartusII;VHDL;EDA;digital clock

飞思卡尔技术报告

K60模块分配 K60的简介,我们本次使用了以下模块。 1. FTM模块:K60中集成3个FTM模块,而今年我们选用两个B车进行追踪循迹。B车模使用单电机、单舵机,另外需要一个编码器。所以对3个FTM模块进行如下配置:FTM0用以产生300Hz PWM信号控制舵机,FMT1用以产生18.5KHz PWM信号控制电机,FTM2用以采集编码器数据。 2. 定时器模块:K60中有多个定时器模块,我们使用了其中2个。其一用以产生5ms 中断,处理相关控制程序。另一个用以超声波模块的计时。 3. SPI模块:我们使用了K60的一个SPI模块,用以和无线射频模块NRF24L01P通信。 4.外部中断:我们使用了三个外部中断。第一个是PORTA的下降沿中断,用以响应干簧管检测到磁铁。第二个是PORTD的跳变沿中断,用以响应超声波模块的输出信号。最后一个是PORTE的下降沿中断,用以响应NRF24L01P模块的相关操作。 数据采集算法 传感器是智能车的眼睛,它们给智能车循迹和追踪提供了必不可少的信息。因此,在智能车软件设计中必须保证数据采集算法的稳定性,同时兼顾其快速性。本车比赛,我们的智能车主要采集以下传感器的数据:电感传感器电路板、编码器、超声波、干簧管。下面主要详述超声波模块、电感传感器电路板的数据采集。 1 .超声波模块数据采集 我们使用的超声波模块的DO引脚输出50Hz的矩形波信号,通过高电平的时间向单片机传递数据。本超声波传感器的高电平时间为声波单程传输的时间,通过这个时间可计算出两车之间的距离。 我们使用外部中断和计时器结合的方式测量高电平时间。首先配置PORTD11为跳变沿中断。中断被触发时,如果PORTD11为高电平则开始计时,如果PORTD11为低电平则停止计时并记录时间间隔。 2. 电感传感器电路板的数据采集 电感传感器电路板通过输出电压的大小反应响应位置和方向的磁场强度。本次比赛中,我们使用了10个电感分布在6个不同位置,因此每个周期都要采集10路ADC数据,每路ADC数据采集32次进行平均滤波。K60芯片中有两路ADC模块,为了最大程度的减少采集数据的时间,我们采用两个ADC模块并行采集的方法。 首先,将10路ADC分为两组,第一组6个使用ADC0模块采集,第二组4个使用ADC1模块采集,两个ADC模块同时采集数据。以第一组为例,依次采集6路ADC 数据,循环32次。当两个ADC模块都完成任务时,ADC转换结束。最后进行平均滤波。 控制算法 1.定位算法 A.两个电感定位算法 在电磁组算法设计中,“差比和”(即用连个电感数据的差除以它们的和)是一个简单易用的定位算法,但是我们测量发现“差比和”算法得出的偏差距离用着较大非线性。如下图所示,其横轴为实际偏差(单位mm),其纵轴为“差比和”得出的偏差。可以发现,在实际偏差较小时,“差比和”算出的偏差变化较快,实际偏差较大时“差比和”算出的偏差变化较缓。

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明 /*引脚锁定基于DE2一70,芯片为EP2C70F896,信号定义如下: Clk50m: 50MHz 时钟输, mode: 模式选择0:计时模式1:设置闹钟模式 mcheck: 手动调整时间 turn: 手动调整时间,在时、分之间选择 change: 对选中的数据调整 led hourl,led_hour0,led_minul,led_minu0,led_secl,led sec0; alert: 闹钟输出 ld_alert: 是否设置了闹钟 ld_hour,id_min,ld_sec:在调整时,指示选中了时,分还是秒*/ moduleclock(clk50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,led _minu0,led_sec1,led_sec0, alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec); input clk50m; input mode; // key0键 input turn; //keyl键 input change; // key2 键 input mreset; //switch0复位,低电平有效 output alert; //gpioO->IOAO output ld_alert; //ledgO-led19 output ld_check; //ledgl-led22 output ld_hour; //ledr3-led13 output ld_min; //ledr9-led9

数字时钟课程设计

1 绪论 1.1 课题背景及目的 在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着数字集成电路性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。 随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能定时系统,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表(考试时间和日常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。 1.2数字时钟的应用 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片出售,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示日期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展

飞思卡尔智能车设计报告

飞思卡尔智能车设计报告

目录 1.摘要 (3) 2.关键字 (3) 3.系统整体功能模块 (3) 4.电源模块设计 (4) 5.驱动电路设计 (4) 6.干簧管设计 (5) 7.传感器模块设计 (6) 8.传感器布局 (6) 9.软件设计 (7) 9.1控制算法 (7) 9.2软件系统实现(流程图) (10) 10.总结 (11) 11.参考文献 (12)

1.摘要 “飞思卡尔”杯全国大学生智能汽车竞赛是由教育部高等自动化专业教学指导分委员会主办的一项以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。该竞赛以汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的科技创意性比赛。 本文介绍了飞思卡尔电磁组智能车系统。本智能车系统是以飞思卡尔32 位单片机K60为核心,用电感检测赛道导线激发的电磁信号, AD 采样获得当前传感器在赛道上的位置信息,通过控制舵机来改变车的转向,用增量式PID进行电机控制,用编码器来检测小车的速度,共同完成智能车的控制。 2.关键字 电磁、k60、AD、PID、电机、舵机 3.系统整体功能模块 系统整体功能结构图

4.电源模块设计 电源是一个系统正常工作的基础,电源模块为系统其他各个模块提供所需要的能源保证,因此电源模块的设计至关重要。模型车系统中接受供电的部分包括:传感器模块、单片机模块、电机驱动模块、伺服电机模块等。设计中,除了需要考虑电压范围和电流容量等基本参数外,还要在电源转换效率、噪声、干扰和电路简单等方面进行优化。可靠的电源方案是整个硬件电路稳定可靠运行的基础。 全部硬件电路的电源由7.2V,2A/h的可充电镍镉电池提供。由于电路中的不同电路模块所需要的工作电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。 电源模块由若干相互独立的稳压电源电路组成。在本系统中,除了电机驱动模块的电源是直接取自电池外,其余各模块的工作电压都需要经电源管理芯片来实现。 由于智能车使用7.2V镍镉电池供电,在小车行进过程中电池电压会有所下降,故使用低压差电源管理芯片LM2940。LM2940是一款低压稳压芯片,能提供5V的固定电压输出。LM2940低压差稳压芯片克服了早期稳压芯片的缺点。与其它的稳压芯片一样,LM2940需要外接一个输出电容来保持输出的稳定性。出于稳定性考虑,需要在稳压输出端和地之间接一个47uF低等效电阻的电容器。 舵机的工作电压是6伏,采用的是LM7806。 K60单片机和5110液晶显示器需要3.3伏供电,采用的是LM1117。 5.驱动电路设计 驱动电路采用英飞凌的BTS7960,通态电阻只有16mΩ,驱动电流可达43A,具有过压、过流、过温保护功能,输入PWM频率可达到25KHz,电源电压5.5V--27.5V。BTS7960是半桥驱动,实际使用中要求电机可以正反转,故使用两片接成全桥驱动。如图下图所示。

相关文档
相关文档 最新文档