课程设计(论文)-基于EDA的数字时钟设计
四川工商学院 EDA技术与SOPC基础课程设计
基于EDA的数字时钟设计
前言
数字电子技术的迅速发展,使各种类型集成电路在数字系统、控制系统、信号处理等方面得到了广泛的应用。为了适应现代电子技术的迅速发展需要,能够较好的面向数字化和专用集成电路的新时代,数字电路综合设计与制作数字钟,可以让我们了解数字时钟的原理。在实验原理的指导下,培养了
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
和设计电路的能力。并且学会检查和排除故障,提高分析处理实验结果的能力。
数字时钟是一种用数字电路技术实现时、分、秒计时的装置。与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。数字钟从原理上讲是一种典型的数字电路,一般是由振荡器、分频器、计数器、显示器等几部分组成。其中包括了组合逻辑电路和时序电路。数字钟的设计方法有许多种,例如:可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。
1 课题介绍
1.1 功能说明
设计一个能进行时、分、秒计时的二四小时制的数字钟,并且能够复位,校时,校分,校秒。系统框图如图1-1所示:
Clk_50Hz 分频5Hz和1KHz
定时
校时 分计时时计数秒计时 0-59 0-23 0-59 校分
计时模块 校秒
数码管显示
图1-1 时钟系统结构图
1
四川工商学院 EDA技术与SOPC基础课程设计
1.2 功能介绍
时钟其实就是一个计时装置,一般有复位,计时和校时功能。由于开发板上电子
提供的时钟晶振频率为50MHz。如果直接将这个信号作为计数器的时钟,那么计数器每累加1的时间间隔为20ns,因此需要分频。又由于时钟需要进位,所以对计时模块又要分时分秒来处理,最后就是如何实现数码管显示,一个数码管只能显示一个数字,就需要来点亮不同的数码管,并且数字间要建立联系。此设计问题可分为分频、计时模块和数码管显示三大部。
1.3 关于EDA和Quartus II
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑。
2 设计
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
整个电路有三大主体电路:1. 分频电路,2.时间控制电路,3,显示时钟电路首先要有输入脉冲,由于平台提供了脉冲发生器,就省去了脉冲发生器的设计,这里我们只需要设计一个分频器,得到我们需要的频率。时钟的计时范围是00:00:00---23:59:59,显示是通过分别把时分秒的个位和十位分开送入数码管中来实现。当需要按键调节时间时,按下对应的按键进行调时。电路图如图2-1;
2
四川工商学院 EDA技术与SOPC基础课程设计
2-1总的电路图
3 各子模块设计原理
3.1 分频模块
根据系统功能需求,此分频模块需要实现两个信号的分频输出,一个是5Hz的信号通过5次叠加提供基准时钟,另一个用于数码管动态显示扫描信号,频率为1KHz。分频模块如图3-1:
3-1分频模块原件图
3.2 计时模块
3.2.1 计时和调时
该模块主要是实现0-59和0-23的计数,并且实现秒向分进位,分向时进位。当按下定时建后,时钟显示会暂停,再按调时按键时可以实现时分秒的调节,调后再按调时键,时钟恢复走时,最后将计数结果的个位和十位分别输出。时钟模块如图3-2:
3
四川工商学院 EDA技术与SOPC基础课程设计
3-2时钟模块原件图
3.2.2 计时仿真
计时电路模块的仿真如图3-3;
3-3仿真图
3.3 显示模块
3.3.1 数码管
数码管工作原理,数码管由七个条状和一个点状发光二极管管芯制成,称为七段数码管。根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。 共阳共阴,是针对数码管的公共脚而说的。典型的一位数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。各个段码实际上是一个发光二极管,既然是发光二极管,就有正负极。共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某
4
四川工商学院 EDA技术与SOPC基础课程设计 几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合成数字或字母。共阴是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。
根据所用的开发板,采用的是两个四位一体的共阳数码管,一共有8个其电路结构如图3-4,在电路中,数码管的位选信号X1-X8是由三极管控制的,位选信号是低电平有效。
图3-4 8位共阳数码管电路图
3.3.2 译码显示
译码显示就是把时分秒的个位和十位,送入数码管中,并且完成显示。显示模块如图3-5:
5
四川工商学院 EDA技术与SOPC基础课程设计
3-5时钟显示模块原件图
3.4 系统顶层设计
完成上述功能模块后,需要建立顶层系统设计文件,这里采用原理图设计。顶层原理图设计方法如下。
1.将分频,时钟,显示各个模块代码用 Quartus II的Verilog HDL文本编辑器进行输入,然后将代码按照各自的模块名作为文件名保存到工程文件夹中;
2.然后新建一个工程,将上述3个底层模块设计代码文件添加进工程,并分别进行封装成为可以被原理图文件所调用的元件符号文件; 3.新建一个原理图设计文件,利用原理图设计方法和步骤,完成顶层设计; 4.编译仿真,先编译,编译成功后就是分配管脚,管脚分配如图3-6。
6
四川工商学院 EDA技术与SOPC基础课程设计
3-6管脚分配图
4 设计结果
经过多次的更改.编译和仿真,最后在开发板上显示的效果如图4-1
7
四川工商学院 EDA技术与SOPC基础课程设计
4-1效果图
5 收获与体会
通过本次实验,我知道了自己许多知识的不足,同时也知道了许多操作的不熟练,在软件应用上有很大的不足,让我对许多知识重新熟悉,巩固。在编程的过程中,我发现了自己的编程习惯不好,写出的程序不是多就是少,导致浪费了许多时间。在模块设计过程中,考虑不够详细,为最后的编译留下了不少的问题。其次就是对开发板的原理图不够了解,在设置管脚的时候也出了错。当然最后这些问题都一一的改了过来,在改的过程中,我对软件也越来越熟悉,编写程序的思维也更加的清晰,对Verilog HDL语句也更加的熟悉,最大的收获就是我喜欢上了这个,感觉很有意思。这个设计的不足在于计时没有声音也没有整点报时的功能。在做实验过程中是对耐心的考验,特别是在出错时锻炼了自己的耐力,也是对自己的一种提升。
8
四川工商学院 EDA技术与SOPC基础课程设计
6 附录
分频设计
module fenpin(clk_50M,clk_1HZ,clk_1kHZ);
input clk_50M;
output clk_1HZ;
output clk_1kHZ;
reg clk1,clk1k;
reg [24:0] counter1;
reg [14:0] counter2;
always@(posedge clk_50M)
begin
if(counter1==5000000)
begin
counter1<=0;
clk1<=~clk1;
end
else counter1<=counter1+1;
end
always@(posedge clk_50M)
begin
if(counter2==25000)
begin
counter2<=0;
clk1k<=~clk1k;
end
else counter2<=counter2+1;
end
assign clk_1HZ=clk1;
assign clk_1kHZ=clk1k;
endmodule
计时设计
module
shizhong(clk,rst,sec_ge,sec_shi,min_ge,min_shi,hours_ge,hours_shi,key1,key2,key3,key4);
input clk,rst,key1,key2,key3,key4; output [3:0] sec_ge,sec_shi,min_ge,min_shi,hours_ge,hours_shi;
reg [5:0]sec,min,hours,cout; reg flag;
assign sec_ge=sec%10;
assign sec_shi=sec/10;
assign min_ge=min%10;
assign min_shi=min/10;
assign hours_ge=hours%10; assign hours_shi=hours/10; always @( posedge clk)
if(key1==0) flag<=~flag; always @(posedge clk or negedge rst )
9
四川工商学院 EDA技术与SOPC基础课程设计
begin
if(!rst)
begin
sec<=0;
min<=0;
hours<=0;
end
else if(flag==0)
begin
cout<=cout+1;
if(cout==5)
begin
cout<=0;
sec<=sec+1;
if(sec==59)
begin
sec<=0;
min<=min+1;
if(min==59)
begin
min<=0;
hours<=hours+1;
if(hours==23) hours<=0;
end
end
end
end
else if(key2==0)
sec<=sec+1;
else if(key3==0)
min<=min+1;
else if(key4==0)
hours<=hours+1;
end
endmodule
显示设计
module display(clk,sec_ge,sec_shi,min_ge,min_shi,hours_ge,hours_shi,led7_cs,led7);
input clk;
input [3:0] sec_ge,sec_shi,min_ge,min_shi,hours_ge,hours_shi;
output [7:0] led7;
output [7:0] led7_cs;
reg [7:0] led7;
reg [7:0] led7_cs;
reg [3:0] a;
reg [2:0]add;
always@(posedge clk)
begin
10
四川工商学院 EDA技术与SOPC基础课程设计
add<=add+1;
end
always@(add)
begin
case (add)
0:begin a<=sec_ge; led7_cs<=8'b11111110;end
1:begin a<=sec_shi; led7_cs<=8'b11111101;end
2:begin a<=10; led7_cs<=8'b11111011;end
3:begin a<=min_ge; led7_cs<=8'b11110111;end
4:begin a<=min_shi; led7_cs<=8'b11101111;end
5:begin a<=10; led7_cs<=8'b11011111;end
6:begin a<=hours_ge; led7_cs<=8'b10111111;end
7:begin a<=hours_shi; led7_cs<=8'b01111111;end
default:led7_cs<=8'b11111111;
endcase
end
always@(a)
begin
case(a)
0:led7<=8'b11000000;
1:led7<=8'b11111001;
2:led7<=8'b10100100;
3:led7<=8'b10110000;
4:led7<=8'b10011001;
5:led7<=8'b10010010;
6:led7<=8'b10000010;
7:led7<=8'b11111000;
8:led7<=8'b10000000;
9:led7<=8'b10010000;
10:led7<=8'b10111111;
default:led7<=8'b11111111;
endcase
end
endmodule
11
四川工商学院 EDA技术与SOPC基础课程设计 参考文献:
[1] 程 周:可编程序控制器原理与应用,高等教育出版社,2006.4,P3-P7 [2] 袁本荣、刘万春、贾云得、朱玉文:微计算机信息(测控仪表自动化),2004年6期
[3] 吴中俊、黄永红:可编程序控制器原理及应用,机械工业出版社,2008.8 , P52-P57 [4] 王兆义:实时服务可编程序控制器教程,机械工业出版社,2007.7, P15-P27 [5] 彭保、范婷婷、马建国:微计算机信息,2004年10期
[6] 徐大诏、XU Da-zhao:信息技术,2009年12期
[7] 潘松,《EDA实用教程》,科学出版社,2004年
[8] 朱如琪,《数字电子技术基础》,华中科技出版社,2005
12