基于FPGA的数字电子时钟设计与实现(范文模版)

时间:2019-05-12 07:14:37下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基于FPGA的数字电子时钟设计与实现(范文模版)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于FPGA的数字电子时钟设计与实现(范文模版)》。

第一篇:基于FPGA的数字电子时钟设计与实现(范文模版)

《数字电子技术》课程设计

设计题目:基于FPGA的数字电子时钟设计与实现

系 部: 电子与信息工程系 专业班级: 电子信息工程08秋(1)班 小组成员: 胡修远 学 号: 08031145 指导教师 : 陶亚雄 周丽婕

完成日期: 2012年 1 月

目录

一、所用设备与器材................................................1 1.1仪器设备...................................................1 二.系统方案......................................................1 2.1 设计思想..................................................1 2.1.1课题背景........................................1 2.1.2 Quartus II软件.................................3 2.2工作原理及系统框图.........................................8 三.软件方案......................................................9 3.1 程序流程图................................................9 3.1.1 24进制........................................9 3.1.2 10进制流程图.................................10 3.1.3 6进制........................................11 3.1.4 60进制.......................................11 3.1.5 from0to9......................................12 3.1.6 分频模块.......................................12 3.1.7 总流程图.......................................13 3.2 程序清单.................................................14 3.2.1头文件complete_clock程序......................14 3.2.2 counter24程序.................................15 3.2.3 counter60程序.................................15 3.2.4 from0to9程序..................................16 3.2.5 counter6程序..................................17 3.2.6 counter10程序.................................17 3.2.7 分频程序.......................................17 3.2.8 校时模块程序...................................18 四.调试及结果...................................................18

4.1 模块仿真.................................................18 4.1.1 counter10模块仿真.............................18 4.1.2 counter24模块仿真.............................19 4.1.3 counter60模块仿真.............................19 4.1.4 分频模块仿真...................................19 4.1.5 top_clock计时模块仿真.........................19 4.2 程序下载.................................................20 4.3分析运行结果..............................................21 4.3.1 设计总结.......................................21 4.3.2 心得体会.......................................21 4.3.3 致谢...........................................22

2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

一、所用设备与器材

1.1仪器设备

使用仪器设备有FPGA DE2-70开发板、PC机、信号发生器。

图1 FPGA DE2-70开发板图

二.系统方案

2.1 设计思想

利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。扩展功能设计为倒计时功能,从59分55秒至59分59秒,每秒亮一盏灯报时。

2.1.1课题背景

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。

20世纪80年代末,出现了FPGA(Field Progrommable Gate Array),CAE和CAD技术的应用更为广泛,它们在PCB设计的原理图输入,自动布局布线及PCB分析,以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。本论文就是应用VHDL语言来实现秒表的电路设计。VHDL语言是标准硬件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管理,易于理解和设计重用。

EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA 设计可分为系统级、电路级和物理实现级。

用VHDL语言开发的流程:(1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件。

(2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)。

(3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。

(4)布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3(5)编程下载:确认仿真无误后,将文件下载到芯片中。

本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以24小时的循环计数:具有校对功能。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在Quartus 工具软件下,采用自顶向下的设计方式,由各个基本模块共同构建了一个基本FPGA的数字钟。

系统主芯片采用EP2C70F896C6,有时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。

随着电子技术的发展,数字电路朝着速度快、容量大、体积小、重量轻的方向发展。人们对时间计量的精度要求越来越高,钟表的数字化给人们生产生活带来了极大的方便。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

本次设计以数字电子为主,实现对时、分、秒数字显示的计时装置,周期为24小时,显示满刻度为23时59分59秒,并具有校时功能和报时功能的数字电子钟。课程设计所采用的开发平台:Quartus II是可编程片上系统的综合性设计环境,它支持CPLD和FPGA器件的开发。FPGA(Field Programmable Gate Array)现场可编程门阵列,内部主要由许多可编程逻辑模块组成,靠纵横交错的分布式可编程互连线连接起来,可构成极其复杂的逻辑电路。本次课程设计所采用的FPGA芯片 Cyclone II系列的EP2C70F896C6。

2.1.2 Quartus II软件

Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

Quartus II使用基本流程如下: 1.打开Quartus II软件,创建工程

a.点击工具栏File,利用创建工程向导(New Project Wizard)创建新工程。

图2 新建工程图

b.工程目录为c:altera71sp1quartus(路径中不能包含中文,不能建立在桌面上),工程名称以及顶层设计实体为counter10(以英文字母开头)。

图3 创建路径图

c.选择与开发板上芯片型号对应的器件。硬件选cycloneⅡ EP2C70F896C6。

图4 芯片选择图

d.进入第三方EDA工具选择窗口,在此可以选择使用第三方的EDA工具,如一些布局布线、综合、仿真软件。

e.确认无误后,单击Finsh完成工程创建。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

f.工程创建成功后,在【Project Navigator】(资源管理窗口)显示当前工程的层次、文件和设计单元。

g.执行File—New—Design Files—verilog HDL File,建立原理图文件。

图5 原理图文件建立图

h.完成后点击File----save as,保存到c:altera71sp1quartus目录下。i.使用文本编辑器输入源码,完成原理图编译。

j.编译工程,执行Processing—start—start Analysis&Elaboration进行编译,分析检查输入文件是否有错误。2.创建仿真波形文件

a.点击New—Vector Waveform File—save as

图6 新建仿真波形文件图

b.在Name框图中右击鼠标,Insert—Insert Node or Bus—Node Finder—在Filter中选择Pinns:all,点击list,点击“》”将左侧列表中的内容移动到右侧列表中。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图7 插入管脚图

c.在CP上右击选择value,选择时钟脉冲信号clock(周期可自行设置)。EN和nCR都选择高电平(Forcing High)。

图8 输入信号赋值

d.选择Assignments—Settings设置—simulater settings—模式mode选择功能型Functional e.选择Processing—generate functional simulation netlist生成功能网表

图9 生成功能网表图

f.点击波形仿真的快捷键,进行波形的仿真。

g.分别给EN和nCR不同的电平信号,观察分析波形的变化。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图10 EN=1 nCR=1

图11 EN=0 nCR=1

图12 EN=1 nCR=0 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图13 EN=0 nCR=0

图14 EN脉冲 nCR=1

2.2工作原理及系统框图

利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。电子时钟扩展功能为倒计时流水灯。数字电子钟的电路组成框图片如下图: 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

多功能数字钟顶层模块振荡器校时电路倒计时模块分频器CP 1Hz时计数器(24进制)分计数器(60进制)秒计数器(60进制)时译码显示6计数器10计数器分译码显示6计数器10计数器分译码显示 图15 系统框图

1.数字钟电路系统由主体电路和扩展电路两大部分所组成。

2.数字电子时钟电路具有时、分、秒计时,秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。

3.准确计时,以数字形式显示时、分、秒的时间,计数器的输出经译码器送显示器。

4.具有分、时校正功能,校正输入脉冲频率为1Hz 5.复位功能,时、分、秒计时清零。

6.扩展功能为:具有仿广播电台整点报时的功能,即每逢59分51秒、52秒、53秒、54秒、55秒及57秒,LED绿灯依此点亮,59分59秒时,LED红灯亮,形成倒计时流水灯报时。

三.软件方案

3.1 程序流程图

3.1.1 24进制

小时采用24进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,23],使能信号EN等于0时,计时器保持。当高位大于2或高位等于2且低位大于3时,计时器清零,否则继续计时。流程图见下图。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

开始CP↑or nCR↓YnCR=0 ?YNNEN=0 ?YNNQH>2 or Q>23Y清零保持清零Q=Q+1 图16 24进制程序流程图

3.1.2 10进制流程图

当CP↑,EN和nCR为高电平时计数,计数范围为[0,9],使能信号EN等于0时,计时器保持。当计时到9的时候,计时器清零,否则继续计时。流程图见下图。

开始CP↑or nCR↓YnCR=0 ?YNNNEN=0 ?YQ=9 ?Y清零保持清零NQ=Q+1

图17 10进制流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.1.3 6进制

当CP↑,EN和nCR为高电平时计数,计数范围为[0,5],使能信号EN等于0时,计时器保持。当计时到5的时候,计时器清零,否则继续计时。流程图见下图。

开始CP↑or nCR↓YnCR=0 ?YNNNNEN=0 ?YQ=5 ?Y清零保持清零Q=Q+1 图18 6进制流程图

3.1.4 60进制

分、秒采用60进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,59],使能信号EN等于0时,计时器保持。当个位等于9时向十位进位;当个位等于9十位等于5,计时器清零,否则继续计时。流程图见下图。

开始CP↑or nCR↓NnCR=0?NEN=0?Y个位Q1=9?NYQ2=Q2+1Q2=5?YQ1=9?NNN清零保持Q1=Q1+1Y清零Q1=Q1+1 图19 60进制流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.1.5 from0to9

数码管有7段组成,分共阳极和共阴极,本次设计采用共阳极数码管。当输入为低电平时,数码管显示;当输入为高电平时,数码管不显示。用这样的方法输入不同的高低信号控制数码管的显示。

HEX=7'b0000001HEX=1001111HEX=b0010010HEX=7'b0000110HEX=7'b1001100开始Case DNHEX=7'b0100000HEX=7'b1111111HEX=7'b0001111HEX=7'b0000000HEX=7'b0000100显示7显示8显示9显示6YHEX=7'b0100100显示5显示0显示1显示2显示3显示4 图20 from0to9流程图

3.1.6 分频模块

开始50MHz方波10^2分频500KHz方波10^2分频5KHz方波10^2分频50Hz方波10^2分频0.5Hz方波

图21 分频模块流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.1.7 总流程图

开始开始NCPCP↑↑or nCRor nCR↓↓Y分频模块YYNYAdjHrkey=1?AdjHrkey=1?NNN时低位时低位=9?=9?NYYAdjMinKey=1?AdjMinKey=1?YY低位清零高位进位低位清零高位进位N高位高位>2or>2or时时>23>23YNN分低位分低位=9=9??NN清零清零YY秒低位秒低位=9=9??NNNY低位清零高位进位低位清零高位进位YY低位计数低位计数低位计数低位计数YNY秒高位秒高位=5=5??低位清零高位进位低位清零高位进位低位计数低位计数NYY高位高位=5=5??NN秒高位清零,分低位进位秒高位清零,分低位进位高位计数高位计数清零清零Y高位计数高位计数N低位计数低位计数Y低位清零高位进位低位清零高位进位N分低位分低位=9=9??NN分高位分高位=5=5??YY高位计数高位计数Y分清零,时低位位进位分清零,时低位位进位低位清零高位进位低位清零高位进位Y时低位时低位=9=9??NNNNYY高位高位>2or>2or时时>23>23清零清零低位计数低位计数

图22 总流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.2 程序清单

3.2.1头文件complete_clock程序

module complete_clock(HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,_50MHzIn,_1Hz,_50Hz, _5KHz,_500KHz,AdjMinkey,AdjHrkey,nCR,Alarm,LED0,LED10,LED3,LED4,LED5,LED6,LED7,LED8,LED9);

output [7:0] HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;output Alarm,_1Hz,_50Hz,_5KHz,_500KHz;output LED0;output LED10;output LED3;output LED4;output LED5;output LED6;output LED7;output LED8;output LED9;wire [7:0] HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;input nCR,_50MHzIn;wire _1Hz,_50Hz,_5KHz,_500KHz;wire LED0;wire LED10;wire LED3;wire LED4;wire LED5;wire LED6;wire LED7;wire LED8;wire LED9;input AdjMinkey,AdjHrkey;wire [7:0] Second,Minute,Hour;Divided_Frequency C1(_5KHz,_500KHz,nCR,_50MHzIn);//调用分频模块,输入50MHz的频率,经两次分频后变为5KHz Divided_Frequency U0(_1Hz,_50Hz,nCR,_5KHz);//调用分频模块,输入5KHz的频率,经

两次分频后变为1Hz top_clock U1(Hour,Minute,Second,_1Hz,nCR,AdjMinkey,AdjHrkey);//调用校时模块,对时、分模块进行校时 baoshi U2(Alarm_Ring,Minute,Second,_50Hz,_5KHz);assign Alarm=Alarm_Ring;assign LED0=({Minute,Second}==16'h5951);//定义LED0为59分51秒时灯亮 assign LED10=({Minute,Second}==16'h5952);//定义LED10为59分52秒时灯亮 assign LED3=({Minute,Second}==16'h5953);//定义LED3为59分53秒时灯亮 assign LED4=({Minute,Second}==16'h5954);//定义LED4为59分54秒时灯亮 assign LED5=({Minute,Second}==16'h5955);//定义LED5为59分55秒时灯亮 assign LED6=({Minute,Second}==16'h5956);//定义LED6为59分56秒时灯亮 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

assign LED7=({Minute,Second}==16'h5957);//定义LED7为59分57秒时灯亮 assign LED8=({Minute,Second}==16'h5958);//定义LED8为59分58秒时灯亮 assign LED9=({Minute,Second}==16'h5959);//定义LED9为59分59秒时灯亮 from0to9 U10(HEX0,Second[3:0]);//个位秒调用译码 from0to9 U9(HEX1,Second[7:4]);//十位秒调用译码 from0to9 U3(HEX2,Minute[3:0]);//个位分调用译码 from0to9 U4(HEX3,Minute[7:4]);//个位分调用译码 from0to9 U5(HEX4,Hour[3:0]);//个位时调用译码 from0to9 U6(HEX5,Hour[7:4]);//十位时调用译码 endmodule 3.2.2 counter24程序

module counter24(CntH,CntL,nCR,EN,CP);input CP,nCR,EN;output [3:0] CntH,CntL;reg [3:0] CntH,CntL;always @(posedge CP or negedge nCR)begin if(~nCR){CntH,CntL}<=8'h00;//当nCR=0时,计时器清零

else if(~EN){CntH,CntL}<={CntH,CntL};//当EN=0时,停止计时,保持 else if((CntH>2)||(CntH>9)||((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;else if((CntH==2)&&(CntL<3))begin CntH<=CntH;CntL<=CntL+1'b1;end else if(CntL==9)begin CntH<=CntH+1'b1;CntL<=4'b0000;end else begin CntH<=CntH;CntL<=CntL+1'b1;end end Endmodule 3.2.3 counter60程序

module counter60(Q1,Q2,Q3,Q4,Q5,Q6,Cnt,Cnt1,Cnt24,nCR,EN,CP,LED,LED1,LED2);input CP,nCR,EN;output [7:0] Cnt;output [7:0] Cnt1;output [7:0] Cnt24;output [6:0] Q1;output [6:0] Q2;output [6:0] Q3;output [6:0] Q4;output [6:0] Q5;output [6:0] Q6;output LED;output LED1;output LED2;wire [7:0] Cnt;2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

wire [7:0] Cnt1;wire [7:0] Cnt24;wire [6:0] Q1;wire [6:0] Q2;wire [6:0] Q3;wire [6:0] Q4;wire [6:0] Q5;wire [6:0] Q6;wire LED;wire LED1;wire LED2;wire ENP;wire ENP1;wire ENP2;wire ENP3;counter10 UC0(Cnt[3:0],nCR,EN,CP);counter6 UC1(Cnt[7:4],nCR,ENP,CP);counter10 UC2(Cnt1[3:0],nCR,ENP1,CP);counter6 UC3(Cnt1[7:4],nCR,ENP2,CP);counter24 UC4(Cnt24[7:4],Cnt24[3:0],nCR,ENP3,CP);assign ENP=(Cnt[3:0]==4'h9);assign ENP1=(Cnt==8'h59);assign ENP2=((Cnt1[3:0]==4'h9)&&(Cnt==8'h59));assign ENP3=((Cnt1==8'h59)&&(Cnt==8'h59));assign LED=~CP;assign LED1=~CP;assign LED2=~CP;from0to9 UC5(Q1,Cnt[3:0]);from0to9 UC6(Q2,Cnt[7:4]);from0to9 UC7(Q3,Cnt1[3:0]);from0to9 UC8(Q4,Cnt1[7:4]);from0to9 UC9(Q5,Cnt24[3:0]);from0to9 UC10(Q6,Cnt24[7:4]);Endmodule 3.2.4 from0to9程序

module from0to9(HEX,D);output [6:0] HEX;input [3:0] D;reg [6:0] HEX;always @(D)begin case(D)4'd0:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000001;4'd1:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1001111;4'd2:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0010010;2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

4'd3:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000110;4'd4:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1001100;4'd5:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0100100;4'd6:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0100000;4'd7:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0001111;4'd8:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000000;4'd9:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000100;default:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1111111;endcase end endmodule 3.2.5 counter6程序

module counter6(Q,nCR,EN,CP);input CP,nCR,EN;output [3:0] Q;reg [3:0] Q;always @(posedge CP or negedge nCR)begin if(~nCR)Q<=4'b0000;//当nCR=0时,计时器清零 else if(~EN)Q<=Q;//当EN=0时,停止计时,保持 else if(Q==4'b0101)Q<=4'b0000;else Q<=Q+1'b1;//计时器正常计时 end Endmodule 3.2.6 counter10程序

module counter10(Q,nCR,EN,CP);input CP,nCR,EN;output [3:0] Q;reg [3:0] Q;always @(posedge CP or negedge nCR)begin if(~nCR)Q<=4'b0000;//当nCR=0时,计时器清零 else if(~EN)Q<=Q;//当EN=0时,停止计时,保持 else if(Q==4'b1001)Q<=4'b0000;else Q<=Q+1'b1;//计时器正常计时 end Endmodule 3.2.7 分频程序

module Divided_Frequency(_1HzOut,nCR,_5kHzIN);input _5kHzIN,nCR;output _1HzOut;supply1 Vdd;//定义 Vdd 是高电平

wire [15:0] Q;//计时器的输出信号(中间变量)wire EN1,EN2,EN3;// 计时器的使能信号(中间变量)counter10 DU0(Q[3:0],nCR,Vdd,_5kHzIN);//调用十进制 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

counter10 DU1(Q[7:4],nCR,EN1,_5kHzIN);counter10 DU2(Q[11:8],nCR,EN2,_5kHzIN);counter10 DU3(Q[15:12],nCR,EN3,_5kHzIN);assign EN1=(Q[3:0]==4'h9);assign EN2=(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assign EN3=(Q[11:8]==4'h9)&(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assign _1HzOut=Q[15];//assign _500HzOut=Q[0];endmodule 3.2.8 校时模块程序

module top_clock(Second,Minute,Hour,_1Hz,nCR,AdjMinKey,AdjHrkey);input _1Hz,nCR,AdjMinKey,AdjHrkey;output [7:0] Second,Minute,Hour;wire [7:0] Hour,Minute,Second;supply1 Vdd;wire MinCP,HrCP;counter60 UT1(Second,nCR,Vdd,_1Hz);//调用counter60,对秒计时 counter60 UT2(Minute,nCR,Vdd,~MinCP);// 调用counter60,对分校时

counter24 UT3(Hour[7:4],Hour[3:0],nCR,Vdd,~HrCP);//调用counter24,对时校时 assign MinCP=AdjMinKey ? _1Hz:(Second==8'h59);//当MinCP=AdjMinKey时,执行校时,当MinCP≠AdjMinKey时,秒计时至59 时向分进位 assign HrCP=AdjHrkey?_1Hz:({Minute,Second}==16'h5959);//当HrCP=AdjHrkey时,执

行校时,当HrCP≠AdjHrkey时,分

秒计时至59分59秒时向时进位 Endmodule 四.调试及结果

4.1 模块仿真

4.1.1 counter10模块仿真

CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,9]

图counter10仿真波形图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

4.1.2 counter24模块仿真

CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,23]

图24 counter24仿真波形图

4.1.3 counter60模块仿真

CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,59]

图25 counter60仿真波形图

4.1.4 分频模块仿真

分频器是将输入的基本时钟信号分频为其他模块需要的5kHZ 和1HZ 的信号.其中CLK 输入为5kHZ , CLK2 输出1HZ 信号,分频实际也是用了计数器的原理。

图26 分频模块仿真波形图

4.1.5 top_clock计时模块仿真 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

当秒计时到59时,向分进一位,当秒计时到59且分计时到59时向时进一位。当时分秒计时到23’59’59时,计时器清零。

图27 top_clock计时模块仿真波形图

4.2 程序下载

图28 时测试校时,时至23 图29 时测试校时,时进位至00

图30 分测试校时分至59

图31 分测试校时,分进位至00 图32 59分52秒,LEDG1亮 图33 59分55秒,LEDG4亮 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图34 59分57秒,LEDG6亮

图35 59分59秒,LEDR0亮

4.3分析运行结果

4.3.1 设计总结

本次大型作业我们所研究的课题是基于FPGA的数字电子时钟的设计与实现。时钟设计的方法是通过计时模块、分频模块、校时模块、译码显示模块和倒计时报时模块来构成该电子时钟。计时模块为时分秒计时,采用24进制计时。因此该模块中调用了24进制和60进制两个程序,其中60进制采用的是调用6进制和10进制的方法来实现。

分频模块输入一频率为50MHz的信号,经过四次10^2分频,将信号逐次分为500KHz、5KHz、50Hz直至0.5Hz。计时模块就由分频器分频出来的标准秒脉冲进行计时,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。我们还进行了扩展功能设计——倒计时流水灯功能,从59分55秒至59分59秒,每秒亮一盏灯报时,55秒至58秒,依此亮绿灯,59秒亮红灯。

通过这两周的课程设计,我们熟悉了基于FPGA的数字电子时钟的设计与实现的整个流程,文本编辑,功能仿真,逻辑综合,布局布线,编程下载,每一步刚开始或多或少有些问题,但在我们不断努力学习补充修改后,最终圆满完成数字电子时钟的时、分、秒的计时和校时功能,复位功能,还设计实现了倒计时流水灯扩展功能。

4.3.2 心得体会

为期两周的大型作业,我们组顺利完成了基于FPGA的数字电子时钟设计与实现的课程设计。从刚开始对Verilog语言非常陌生,到最后接近熟练地掌握Verilog语言的程度,期间花费不少时间和精力,同时也收获了很多,学会了 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

使用Verilog语言编程仿真电路实验,掌握了可编程逻辑器件的应用开发技术,熟悉了一种EDA软件使用,掌握了Verilog设计方法,即分模块分层次的设计方法。

在设计的过程中,因为刚刚接触这种编程语言,我们也遇到了很多问题。但是我们没有放弃过,不断检查纠正错误。Verilog源程序的编写很容易出现错误,这就需要耐心的调试。因为很多情况下,一长串的错误往往是由一个不经意的小错误引起的。有时程序一直出错找不到原因的时候,我们也会去虚心向别的组的同学请教,或者和他们一起讨论问题,从中得到一些启发。

由于设备和时间的限制,我们还有一部分扩展内容没能够完成,即数字钟的整点蜂鸣报时功能。但本次设计实验已使我们对Verilog语言产生了浓厚的兴趣,在以后的学习生活中会主动去了解更多有关这方面的知识及其在实践中的应用。

这次大型作业,不仅让我们又掌握了一些新的知识,也提高了我们的动手能力和科学严谨的精神。其次也培养了我们自学的能力,遇到不明白的地方可以通过思考、查资料、与同学交流多种方式解决问题。这些对于我们以后的学习和工作都有极大的帮助。

4.3.3 致谢

最后,我们要感谢系里提供这一次的机会让我们学到更多知识,并且提供了这么好的学习条件,设备、学习环境、师资等方面都非常好。同时也要感谢周丽婕老师和陶亚雄老师两周以来耐心的指导,在我们遇到问题的时候,是她们悉心的指导帮助和不厌其烦的讲解下我们才得以顺利的完成这次的设计,我们再次表示由衷的感谢!

第二篇:数字电子时钟设计

(电子技术课程)

设计说明书

数字电子时钟

起止日期:

2016 年

11月23日 至

2016年 11月 27 日

学生姓名

班级 学号

成绩

指导教师(签字)

交通工程学院(部)2016年

11月

29日

数字电子钟

设计一个数字电子钟,具体要求:

1、以24小时为一个计数周期;具有“时”、“分”、“秒”数字数码管显示电路;

2、具有校时功能;

3、整点前10秒,数字钟会自动报时,以示提醒;

4、设计+5V直流电源。(设计220V输入,+5V输出)

5、启动电路。

6、用PROTEUS画出电路原理图仿真成功再用数字电子技术实验箱验证。;

设计步骤及内容:

一、首先对本次设计所需要用到的器件的引脚及功能进行详细的了解 1、555定时器

“1”脚为公共接地端GND;“8”脚为正电源电压VCC;“2”脚是触发端;“4”脚为复位输出端; “7”脚为放电端;“6”脚位阈值端;“5”脚为控制电压输入端;“3”脚是输出端。2、74LS163

CEP、CET:计数使能输入端,高电平有效;CLK:时钟脉冲,上升沿触发;

MR:清零端,低电平有效;LOAD:并行置数使能端,低电平有效;RCO:进位信号输出端; D[0:3]:并行二进制数据输入端;Q[3:0]:计数状态输出端。

二、实验步骤

1、连接555定时器,产生1Hz方波。

首先将555定时器按照如图所示的接法连接起来,并根据555定时器电容充放电时间的计算确定各元件的取值。

电容充电时间T=0.7(R1+R2)C1 为使555定时器输入1Hz的方波,经计算各元件的取值为 R1=43K,R2=51K,C1=10u F,C2=0.01u F。3脚作为时钟脉冲的输出连接到各个计数器的CLK。

2、时钟电路的连接

本次设计使用的是74LS163芯片,因为它是16进制计数器,所以需要在控制端加上适当的门电路使其构成十进制计数器,将计数器按照如图所示的方式连接起来。

a、秒各位

将输出端的Q3、Q1用与门(74LS08)连接起来并输入到清零端MR,其目的是为了构成十进制,当计数器计数到9时,与门U1打开,经过非门U1A输出低电平使得MR在下一个脉冲上升沿时清零。

b、秒十位

与秒各位不同的是,秒十位的使能端是由各位Q3、Q1相与的电平控制的,秒十位的进位的条件是当各位为9时,在下一个脉冲的上升沿来临时进位。秒十位的清零需要等到个位为9且十位为5时,U2与U3经过U4输出高电平再经过U3A输出低电平,是的MR在下一个脉冲上升沿是清零。

c、分个位

分各位的构成原理与秒个位相似,不同的是控制端上的门电路换成了与非门U4(为了使之后方便连接门电路),分个位的使能信号由U3输入,清零条件为分个位为9,秒为59时清零,清零信号由U5A输出的低电平提供。

d、分十位

分十位的构成原理与秒十位相似,使能信号由U4输出的高电平提供,清零条件为分为59,秒为59,清零信号由U7A输出的低电平提供。

e、时

时个位的使能信号由U7提供,时十位的使能信号由U9提供。时个位有两个清零信号,一个是当它自身为9时,等到下一个时钟脉冲的上升沿时清零,另一个是当十位为2,个位为3时,十位和个位同时清零。用与非门U12将个位Q2和十位Q1相连,再将两个清零信号相与,实现清零工作。

完整的时钟电路如下图所示

3、校准电路

校准电路连线图如图所示,当开关打在右边时,U14B关闭不工作,U14C送出一个高电平信 6

号,等到秒对分的进位信号来临时和进位信号通过U15A送出一个低电平,使得U15B打开,又因为U15B接入了分个位的使能端,所以相当于开关打在右边时校准电路成为分个位的使能信号进位信号;开关打在左边时,U14C关闭不工作,U14B送出一个高电平信号,然后与秒脉冲信号通过U14D送出一个低电平接入分个位的使能端,所以相当于开关打在左边时,分个位接收了一个秒脉冲信号,使得它能像秒钟一样计时并且能向十位进位,就相当于校准功能,当分钟跳到你想要的时间时把开关打到右边(此时时钟电路照常工作)从你调整好的时间继续计数,达到校准的目的。(时的校准电路与分的校准电路一样)

但是直接把校准电路这样连入时钟电路会出现一些问题,就是在校准的时候分会出现16进制,所以就需要在电路中加入反馈,将它控制到10进制,具体的反馈连接方式如图所示(不能接在MR端,不然会使电路出现问题)时钟电路与校准电路如图所示 将开关打到左边进行校准:

完成之后将开关打到右边继续计数:

4、报时电路

报时电路使用的是74HC30芯片,它是一个8输入与非门芯片,只有当所有输入都为1时输出为0,使得喇叭能够正常工作(喇叭一端接高电平一端接低电平),因为是整点报时,所以秒个位就不用接入芯片,只需在多余的两个引脚接入电源就可以实现在59分50秒到59秒的报时,具体接法如下图所示

整个可校准可报时的数字电路如图所示

三、心得体会

本次数字电子课程设计是我觉得收获非常大的一次实习,而这次课程设计给我们提供了一个应用自己所学知识来设计作品的平台。

在本次课程设计中,我更加熟悉Proteus软件的操作了,同时对74LS163、74LS161、74HC30、555等芯片加深了了解,和对它们的使用,对于数字、模拟电路的综合运用有了更深一步理解,为以后的电路分析和设计奠定了一定的基础。

本次课程设计很遗憾没能选择最有挑战性的课题来做,因为基础知识不够扎实,做数字电子时钟也是费了很大劲。

这次设计我主要觉得有两个难点:

一、从一开始没选择十进制计数器来做,所以使设计的电路看起来很复杂,并且进位需要考虑的很周全,越高位必要条件越多,所以用了许多门电路;

二、校准电路直接连入电路会产生十六进制,所以需要加反馈,在最开始不太理解反馈的意思,又去翻了数电书还问了老师很多次,接了很多遍才将反馈接出来。

但是最后成功了看着自己能把理论知识运用到实际,心里还是非常开心的,在做课题的这几天学会了很多,对仿真也产生了浓厚的兴趣,想自己试着在课余时间再做做几个课题。

第三篇:FPGA可调数字时钟实验报告

浙江大学城市学院

实验报告纸

一、实验要求

1、用vhdl编程,实现10进制计数器

2、用vhdl编程,实现60进制计数器

3、用vhdl编程,实现数字时钟,时、分、秒、毫秒分别显示在数码管上。

4、实现可调数字时钟的程序设计,用按键实现时、分、秒、毫秒的调整。

二、实验原理

用VHDL,行为级描述语言实现实验要求。思路如下:

1、分频部分:由50MHZ分频实现1ms的技术,需要对50MHZ采取500000分频。

2、计数部分:采用低级影响高级的想法,类似进位加1的思路。对8个寄存器进行计数,同步数码管输出。

3、数码管输出部分:用一个拨码开关控制显示,当sw0=0时,四位数码管显示秒、毫秒的计数。当sw0=1时,四位数码管显示时、分得计数。

4、调整部分:分别用四个按键控制时、分、秒、毫秒的数值。先由一个开关控制计数暂停,然后,当按键按下一次,对应的数码管相对之前的数值加1,,通过按键实现时间控制,最后开关控制恢复计数,完成时间调整。

5、整个实现过程由一个文件实现。

三、实验过程

各个引脚说明: Clk:50MHZ SW:数码管切换,SW=’0’时,数码管显示为秒,毫秒。SW=’1’时,数码管显示为时,分。

SW1:暂停与启动。SW1=’0’时,时钟启动,SW=’1’时,时钟暂停。

SW2:时钟调整接通按钮,当SW2=’0’时,不进行调整,当SW=’1’时,通过按键调整时间。

KEY0: 毫秒调整,按一次实现+1功能 KEY1:秒调整,按一次实现+1功能

浙江大学城市学院 实 验 报 告 纸

KEY2:分调整,按一次实现+1功能 KEY3:时调整,按一次实现+1功能 Q0;第一个数码管 Q1;第二个数码管 Q2: 第三个数码管 Q3: 第四个数码管

1、源代码如下:

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity paobiao is port(clk,sw,key0,key1,key2,key3,sw1,sw2:in std_logic;

q0:out std_logic_vector(6 downto 0);

q1:out std_logic_vector(6 downto 0);

q2:out std_logic_vector(6 downto 0);

q3:out std_logic_vector(6 downto 0));end paobiao;architecture behave of paobiao is signal cntt1 :integer range 0 to 10;signal cntt2 :integer range 0 to 10;signal cntt3 :integer range 0 to 10;signal cntt4 :integer range 0 to 6;signal cntt5 :integer range 0 to 10;signal cntt6 :integer range 0 to 10;signal cntt7 :integer range 0 to 10;signal cntt8 :integer range 0 to 6;浙江大学城市学院 实 验 报 告 纸

signal cntttt1 :integer range 0 to 10;signal cntttt2 :integer range 0 to 10;signal cntttt3 :integer range 0 to 10;signal cntttt4 :integer range 0 to 6;signal cntttt5 :integer range 0 to 10;signal cntttt6 :integer range 0 to 10;signal cntttt7 :integer range 0 to 10;signal cntttt8 :integer range 0 to 6;

begin

process(clk)--,key0,key1,key2,key3)

variable cnt :integer range 0 to 500000;

--variable cnt9 :integer range 0 to 3000000000;

variable cnt1 :integer range 0 to 10;

variable cnt2 :integer range 0 to 10;

variable cnt3 :integer range 0 to 10;

variable cnt4 :integer range 0 to 6;

variable cnt5 :integer range 0 to 10;

variable cnt6 :integer range 0 to 10;

variable cnt7 :integer range 0 to 10;

variable cnt8:integer range 0 to 6;

begin if(clk'event and clk='1')then

if(sw1='0')then if(cnt>=2)then

cnt:=0;

cnt1:=cnt1+1;浙江大学城市学院 实 验 报 告 纸

if(cnt1=10)then

cnt1:=0;

cnt2:=cnt2+1;

if(cnt2=10)then

cnt1:=0;

cnt2:=0;

cnt3:=cnt3+1;

if(cnt3=10)then

cnt1:=0;

cnt2:=0;

cnt3:=0;

cnt4:=cnt4+1;

if(cnt4=6)then

cnt1:=0;

cnt2:=0;

cnt3:=0;

cnt4:=0;

cnt5:=cnt5+1;

if(cnt5=10)then

cnt5:=0;

cnt6:=cnt6+1;

if(cnt6=6)then

cnt5:=0;

cnt6:=0;

cnt7:=cnt7+1;

if(cnt7=4)then

cnt5:=0;

cnt6:=0;

cnt7:=0;浙江大学城市学院 实 验 报 告 纸

cnt8:=cnt8+1;

if(cnt8=3)then

cnt5:=0;

cnt6:=0;

cnt7:=0;

cnt8:=0;

end if;

end if;

end if;

end if;

end if;

end if;

end if;

end if;

else cnt:=cnt+1;

end if;

if(sw2='0')then

cntt1<=cnt1;

cntt2<=cnt2;

cntt3<=cnt3;

cntt4<=cnt4;

cntt5<=cnt5;

cntt6<=cnt6;

cntt7<=cnt7;

cntt8<=cnt8;

else

cnt1:=cntttt1;

cnt2:=cntttt2;

cnt3:=cntttt3;浙江大学城市学院 实 验 报 告 纸

cnt4:=cntttt4;

cnt5:=cntttt5;

cnt6:=cntttt6;

cnt7:=cntttt7;

cnt8:=cntttt8;

cntt1<=cnt1;

cntt2<=cnt2;

cntt3<=cnt3;

cntt4<=cnt4;

cntt5<=cnt5;

cntt6<=cnt6;

cntt7<=cnt7;

cntt8<=cnt8;

end if;

end if;end if;end process;

process(key0)variable cnttt1 :integer range 0 to 10;variable cnttt2 :integer range 0 to 10;begin if(key0'event and key0='0')then

cnttt1:=cnttt1+1;

if(cnttt1=10)then

cnttt1:=0;

cnttt2:=cnttt2+1;

if(cnttt2=10)then 浙江大学城市学院 实 验 报 告 纸

cnttt2:=0;

end if;

end if;

cntttt1<=cnttt1;

cntttt2<=cnttt2;end if;

end process;process(key1)variable cnttt3 :integer range 0 to 10;variable cnttt4 :integer range 0 to 10;begin if(key1'event and key1='0')then

cnttt3:=cnttt3+1;

if(cnttt3=10)then

cnttt3:=0;

cnttt4:=cnttt4+1;

if(cnttt4=6)then

cnttt4:=0;

end if;

end if;cntttt3<=cnttt3;

cntttt4<=cnttt4;end if;end process;process(key2)variable cnttt5 :integer range 0 to 10;variable cnttt6 :integer range 0 to 10;begin

if(key2'event and key2='0')then 浙江大学城市学院 实 验 报 告 纸

cnttt5:=cnttt5+1;

if(cnttt5=10)then

cnttt5:=0;

cnttt6:=cnttt6+1;

if(cnttt6=6)then

cnttt6:=0;

end if;

end if;cntttt5<=cnttt5;

cntttt6<=cnttt6;

end if;end process;process(key3)variable cnttt7 :integer range 0 to 10;variable cnttt8 :integer range 0 to 10;begin

if(key3'event and key3='0')then

cnttt7:=cnttt7+1;

if(cnttt7=4)then

cnttt7:=0;

cnttt8:=cnttt8+1;

if(cnttt8=3)then

cnttt8:=0;

end if;

end if;

cntttt7<=cnttt7;

cntttt8<=cnttt8;

end if;浙江大学城市学院 实 验 报 告 纸

end process;

--end if;--end process;

process(cntt1,cntt5)

begin

if(sw='0')then

case cntt1 is

when 0=>q0<=“1000000”;

when 1=>q0<=“1111001”;

when 2=>q0<=“0100100”;

when 3=>q0<=“0110000”;

when 4=>q0<=“0011001”;

when 5=>q0<=“0010010”;

when 6=>q0<=“0000010”;

when 7=>q0<=“1011000”;

when 8=>q0<=“0000000”;

when 9=>q0<=“0010000”;

when others=>q0<=NULL;end case;else

case cntt5 is

when 0=>q0<=“1000000”;

when 1=>q0<=“1111001”;

when 2=>q0<=“0100100”;

when 3=>q0<=“0110000”;

when 4=>q0<=“0011001”;

when 5=>q0<=“0010010”;

when 6=>q0<=“0000010”;

浙江大学城市学院 实 验 报 告 纸

when 7=>q0<=“1011000”;

when 8=>q0<=“0000000”;

when 9=>q0<=“0010000”;

when others=>q0<=NULL;end case;

end if;

end process;

process(cntt2,cntt6)

begin if(sw='0')then

case cntt2 is

when 0=>q1<=“1000000”;

when 1=>q1<=“1111001”;

when 2=>q1<=“0100100”;

when 3=>q1<=“0110000”;

when 4=>q1<=“0011001”;

when 5=>q1<=“0010010”;

when 6=>q1<=“0000010”;

when 7=>q1<=“1011000”;

when 8=>q1<=“0000000”;

when 9=>q1<=“0010000”;

when others=>q1<=NULL;end case;else

case cntt6 is

when 0=>q1<=“1000000”;

when 1=>q1<=“1111001”;

when 2=>q1<=“0100100”;浙江大学城市学院 实 验 报 告 纸

when 3=>q1<=“0110000”;

when 4=>q1<=“0011001”;

when 5=>q1<=“0010010”;

when 6=>q1<=“0000010”;

when 7=>q1<=“1011000”;

when 8=>q1<=“0000000”;

when 9=>q1<=“0010000”;

when others=>q1<=NULL;end case;end if;

end process;process(cntt3,cntt7)

begin

if(sw='0')then

case cntt3 is

when 0=>q2<=“1000000”;

when 1=>q2<=“1111001”;

when 2=>q2<=“0100100”;

when 3=>q2<=“0110000”;

when 4=>q2<=“0011001”;

when 5=>q2<=“0010010”;

when 6=>q2<=“0000010”;

when 7=>q2<=“1011000”;

when 8=>q2<=“0000000”;

when 9=>q2<=“0010000”;

when others=>q2<=NULL;end case;else

case cntt7 is 浙江大学城市学院 实 验 报 告 纸

when 0=>q2<=“1000000”;

when 1=>q2<=“1111001”;

when 2=>q2<=“0100100”;

when 3=>q2<=“0110000”;

when 4=>q2<=“0011001”;

when 5=>q2<=“0010010”;

when 6=>q2<=“0000010”;

when 7=>q2<=“1011000”;

when 8=>q2<=“0000000”;

when 9=>q2<=“0010000”;

when others=>q2<=NULL;end case;end if;

end process;

process(cntt4,cntt8)

begin if(sw='0')then

case cntt4 is

when 0=>q3<=“1000000”;

when 1=>q3<=“1111001”;

when 2=>q3<=“0100100”;

when 3=>q3<=“0110000”;

when 4=>q3<=“0011001”;

when 5=>q3<=“0010010”;

when others=>q3<=NULL;end case;else

case cntt8 is

when 0=>q3<=“1000000”;浙江大学城市学院 实 验 报 告 纸

when 1=>q3<=“1111001”;

when 2=>q3<=“0100100”;

when 3=>q3<=“0110000”;

when 4=>q3<=“0011001”;

when 5=>q3<=“0010010”;

when 6=>q3<=“0000010”;

--when 7=>q3<=“1011000”;--when 8=>q3<=“0000000”;--when 9=>q3<=“0010000”;

when others=>q3<=NULL;end case;end if;

end process;end behave;

2、原理图如下:

浙江大学城市学院 实 验 报 告 纸

3、功能仿真如下

1、秒、毫秒计数仿真

2、分、时计数仿真

注释:由于仿真时间限制,小时不能显示。注意SW由0变成1;

浙江大学城市学院 实 验 报 告 纸

3、暂停的仿真,数码管显示用秒,毫秒。

4、按键调整的仿真,主要仿真毫秒的仿真

四、实验结果

实验结果均完成所有要求,但有一个bug,在实现调整功能的时候,不能实时调整数码管暂停下来的数字,只能从之前调整过的数值起开始调整,不过能实现调整之后,开启时钟,时钟即在设定的时间开始跑。当然找到解决的方法,当由于思路和已经 写好的程序冲突性较大,所以此处不再修改。

五、心得体会

本次实验在分频的基础上进行拓展,同时应用数码管显示,开关和按键的控制,比较系统的做了一个实验,对自身的提高还是很有帮助的。

说到心得,此次实验告诉我一下经验:

1、在开始写程序之前最好先评估好自己的思路,简易画出想象中的原理图,再进行编程,对之后的修改有很大的帮助。

2、程序写长了,发现错得时候,修改比较麻烦,所有注意编程习惯很重要,适当的加一些注释,提高程序的可读性。

3、程序最好分模块写,比较清晰。

浙江大学城市学院 实 验 报 告 纸

第四篇:数字电子时钟实验报告

华大计科学院

数字逻辑课程设计说明书

题目:

多功能数字钟

专业:

计算机科学与技术

班级:

网络工程1班

姓名:

刘群 学号:

1125111023

完成日期:

2013-9

一、设计题目与要求

设计题目:多功能数字钟 设计要求:

1.准确计时,以数字形式显示时、分、秒的时间。2.小时的计时可以为“12翻1”或“23翻0”的形式。

3.可以进行时、分、秒时间的校正。

二、设计原理及其框图 1.数字钟的构成

数字钟实际上是一个对标准频率1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路。图 1 所示为数字钟的一般构成框图。

图1 数字电子时钟方案框图 ⑴多谐振荡器电路

多谐振荡器电路给数字钟提供一个频率1Hz 的信号,可保证数字钟的走时准确及稳定。⑵时间计数器电路

时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成。其中秒个位和秒十位计数器、分个位和分十位计数器为60 进制计数器。而根据设计要求,时个位和时十位计数器为24 进制计数器。⑶译码驱动电路

译码驱动电路将计数器输出的8421BCD 码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。⑷数码管

数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管。本设计提供的为LED数码管。2.数字钟的工作原理 ⑴多谐振荡器电路

555 定时器与电阻R1、R2,电容C1、C2 构成一个多谐振荡器,利用电容的充放电来调节输出V0,产生矩形脉冲波作为时钟信号,因为是数字钟,所以应选择的电阻电容值使频率为1HZ。⑵时间计数单元

六片74LS90 芯片构成计数电路,按时间进制从右到左构成从低位向高位的进位电路,并通过译码显示。在六位LED 七段显示起上显示对应的数值。⑶校时电源电路

当重新接通电源或走时出现误差时都需要对时间进行校正。通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可。

根据要求,数字钟应具有分校正和时校正功能。因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。图8所示即为带有基本RS 触发器的校时电路。

三、元器件

1.实验中所需的器材 单刀双掷开关4 个.5V 电源.共阴七段数码管 6 个.74LS90D 集成块 6 块.74HC00D 6个 LM555CM 1个 电阻 6个 10uF 电容 2个

2.芯片内部结构及引脚图

图2 LM555CM集成块

图3 74LS90D集成块

五、各功能块电路图

1秒脉冲发生器主要由555 定时器和一些电阻电容构成,原理是利用555 定时器的特性,通过电容的充放电使VC 在高、低电平之间转换。其中555 定时器的高、低电平的门阀电压分别是2/3VCC 和1/3VCC电容器充电使VC 的电压大于2/3VCC 则VC 就为高电平,然

而由于反馈作用又会使电容放电。当VC 小于1/3VCC 时,VC 就为低电平。同样由于反馈作用又会使电容充电。通过555 定时器的这一性质我们就可以通过计算使他充放电的周期刚好为1S这样我们就会得到1HZ 的信号。其中555 定时器的一些功能对照后面目录。其中 555 定时器组成的脉冲发生器电路见附图4.图4 555 定时器组成的脉冲发生器

由于我们要得到1HZ 的信号,所以我们就可以通过555 定时器充放电一次所需的时间的公式。将那时间设为1S然后设定两个电阻计算出另外那个电容值.在设定电阻值时我们要记住将电阻值设为比较常用的那种电阻值,得到的电容值也尽可能让它是比较普遍使用 的。这样就避免了在实际组装过程中很难买到当初设定的那电阻和计算出 的电容值。

在这次设定中我们设定的电阻值RA=10KΩ,RB=62kΩ,C=10uF 经公式

f = 1.43 ÷【(RA + 2RB)×C 】 可得近似为1HZ。

2、利用一个LED 数码管一块74LS90D 连接成一个十进制计数器,电路在晶振的作用下数码管从0—9 显示见图5。

图5、利用2 片74LS90D 芯片连接成一个六十进制电路,电路可从0—59 显示。第一片74LS90D芯片构成10 进制计数器,第二片74LS90D 芯片构成6 进制计数器。74LS90D 具有异步清零功能。

在第一片74ls90 构成的十进制计数器中,当第十个脉冲来到时。此时他的四级触发器的状态为“1001”。这时他就会自动清零。同时给第二片74ls90 构成的6 进制计数器进一,第六个脉冲进位到来时,此时第二片74ls90 芯片的触发器的状态为“0110”,这时QB,QC 均为高电平。将QB 与RO1 相连,将Ro2 与Qc 相连,就会进行异步清零。如此循环就会构成60 进制计数器.见附图6.图6 十六进制电路

4、利用2 片74LS90D 芯片构成24 进制计数器。一片构成二进制计数器,一片构成四进制计数器。由于74LS90D 芯片清零是由两个清零端控制的,所以当第24 个脉冲到来时,第一片74lLS90D芯片的Qc 为高电平。第二片74LS90D 芯片的Qb 为高电平,让第一片74LS90D 芯片的Qc 与两片芯片的Ro1 相连.让第二片74ls90 芯片的QB 与两片芯片的Ro2 相连。当第24 个脉冲到来时就会进行异步清零。如此循环就会构成24 进制计数器。见附图7.图7 24进制电路

5、数字钟电路由于秒信号的精确性和稳定性不可能坐到完全准确无误,又因为电路中其他的原因数字钟总会产生走时误差的现象。所以,电路中就应该有校准时间功能的电路。在这次设计中教时电路用的是一个RS 基本触发器的单刀双置开关,每搬动开关一次产生一个计数脉冲.实现校时功能。见附图8。

7、利用两个六十进制和一个二十四进制连接成一个时、分、秒都会进位的电路总图。见附图8

图8 总电路图

六、心得体会

在这次设计中我们深深地体会到了理论跟实践的不同,理论学的再好不会动手那也只能是纸上谈兵。我们了解了集成电路芯片的型号命名规律,懂得了没有某种芯片时的替代方法,以及在网上查找电子电路资料的方法,掌握了各芯片的逻辑功能及使用方法,进一步熟悉了集成电路的引脚安排,掌握了数字钟的设计方法,明白了数字钟的组成原理以及工作原理。掌握了计数器的工作原理,以及计数器进制的组成方法和级联方法,实现了一次理论指导实践、理论向实践过渡的跨越,虽然期间遇到一些困难,但这些困难却增强了我们分析问题、解决问题的能力,使我们以后不仅只学习书本中的理论知识,而且知道学以致用,动过动手实践是我们对书本中的理论知识掌握地跟牢固、理解地跟深刻,这对我们今后的工作及学习有积极的影响。这次课程设计不仅再次复习了数字电子和模拟电子,而且让我对于芯片的使用更加了解。增加了我的动手操作能力,加深了对该软件的了解。这就是这次课程设计的成果,相信这些实际的操作经验会是我们以后的宝贵财富。

第五篇:数字锁相环的FPGA设计与实现-课设

1.设计要求

利用MAX PLUSII软件工具,设计一个全数字锁相环路,通过它从19.2k的信号中提取同步信号。本地源时钟为11.0592MHz。

要求实现的功能:

a当远端信号(方波)的占空比分别为1:

1、1:

3、1:5和1:7时,从其中提取同步信号。b先将远端信号(方波)转变成伪随机序列,然后从中提取同步信号。完成仿真过程,给出测试结果,要求得到同步带宽、捕捉带宽和最大同步时间。

2.设计原理

2.1数字锁相环基本原理

一个典型的锁相环(PLL)系统,是由鉴相器(PD),压控荡器(VCO)和低通滤波器(LPF)三个基本电路组成,如图1所示。

图1 PLL模块图

传统的锁相环是模拟电路,它利用环路中误差信号去连续地调整位同步信号的相位。全数字锁相环路完全用数字电路构成,采用高稳定度的振荡器(信号钟),从鉴相器所获得的与同步误差成比例的误差信号不是直接用于调整振荡器,而是通过一个控制器在信号钟输出的脉冲序列中附加或扣除一个或几个脉冲,这样同样可以调整加到鉴相器上的位同步脉冲序列的相位,达到同步的目的。

全数字锁相环(ADPLL)由数字鉴相器(DP)、数字滤波器(DF)与数字压控振荡器(DCO)三个数字电路部件组成,如图2所示。

图2 ADPLL模块图

2.2数字锁相环原理框图

本设计中的数字锁相环由信号钟、控制器、分频器、相位比较器组成。其原理框图如图3所示。

图3 数字锁相环原理框图

信号钟包括一个高稳定度的晶体振荡器和整形电路。若接收码元的速率为F=1/T,那么振荡器频率设定在nF,经整形电路之后,输出周期性脉冲序列,其周期T0=1/(nF)=T/n。本设计中时钟为11.0592MHz。

控制器包括图中的扣除门(常开)、附加门(常闭)和“或门”,它根据相位比较器输出的控制脉冲(“超前脉冲”或“滞后脉冲”)对信号钟输出的序列实施扣除(或添加)脉冲。分频器是一个计数器,每当控制器输出n个脉冲时,它就输出一个脉冲。控制器与分频器的共同作用的结果就调整了加至相位比较器的位同步信号的相位。这种相位前、后移的调整量取决于信号钟的周期,每次的时间阶跃量为T0,相应的相位最小调整量为Δ=2πT0/T=2π/n。

相位比较器将接收脉冲序列与位同步信号进行相位比较,以判别位同步信号究竟是超前还是滞后,若超前就输出超前脉冲,若滞后就输出滞后脉冲。

3.数字锁相环的硬件实现

根据图3(数字锁相环原理框图),利用MAX PLUSII中的硬件仿真功能,实现数字锁相环。下面将给出信号钟、分频器和相位比较器的硬件实现图。

信号钟包含一个晶振和整形电路,晶振产生的方波信号经过整形电路后变成脉冲信号。为了和控制器相配合,需要两路脉冲信号。整形电路由D触发器和逻辑与、或、非门组成。D触发器起到延时的作用,然后通过逻辑或门和与门产生脉冲波。电路如图4所示。

图4 整形电路(rc)

分频器是一个计数器,由3片74LS161来实现。电路如图5所示。

图5 分频器(fd)

相位比较器主要由微分脉冲电路和逻辑与、非门组成。微分脉冲形成电路由D触发器和逻辑异或、与门组成。D触发器起延时的作用。微分脉冲形成电路如图6所示。

图6 微分脉冲形成电路(dp)

数字锁相环的硬件实现电路如图7所示。图中蓝色字样所在框图由上至下分别为微分脉冲形成电路(dp)、整形电路(rc)和分频器(fd),具体结构如图

6、图4和图5所示。

图7 数字锁相环电路

由于在MAX PLUSII中没有占空比为1:

3、1:5和1:7的方形波,所以要利用可用的元器件来生成满足要求的信号。可以通过把方波分别通过模

4、模6和模8计数器来达到这一目的。在本设计中,利用74LS161来实现这些计数器。模

4、模

6、模8计数器分别如图

8、图

9、图10所示。

图8 模4计数器(1_3)

图9 模6计数器(1_5)

图10 模8计数器(1_7)

方波通过这些计数器后就能形成占空比满足要求的信号,然后再将信号送入图7所示的数字锁相环电路中,便可以提取出同步信号。

在本设计中,将方波转变成伪随机序列用到74LS194和逻辑异或门、与非门。7位伪随机序列发生器电路如图11所示。将产生的伪随机序列送入图7所示的数字锁相环电路中,便可以提取出同步信号。

图11 7位伪随机序列发生器

4.仿真过程

4.1接收信号的占空比为1:1

条件设置为:End Time = 10ms,Grid Size = 45.2ns 位同步信号超前于接收脉冲序列的情况如图12所示,蓝色线条处放大后如图13所示。经过一段时间后锁相成功,达到同步状态,如图14所示。

图12 位同步信号超前于接收脉冲序列

图13 超前脉冲作用于扣除门

图14同步状态

位同步信号滞后于接收脉冲序列的情况如图15所示,蓝色线条处放大后如图16所示。经过一段时间后锁相成功,达到同步状态,如图17所示。

图15 位同步信号滞后于接收脉冲序列

图16 滞后脉冲作用于附加门

图17 同步状态

通过多次试验,可得测试结果如下: 同步建立时间:14.824ms 同步带宽:40hz 4.2接收信号的占空比为1:3

条件设置为:End Time = 10ms,Grid Size = 45.2ns 位同步信号超前于接收脉冲序列的情况如图18所示,蓝色线条处放大后如图19所示。经过一段时间后锁相成功,达到同步状态,如图20所示。同步建立时间:6.906ms

图18 位同步信号超前于接收脉冲序列

图19 超前脉冲作用于扣除门

图20 同步状态

位同步信号滞后于接收脉冲序列的情况如图21所示,蓝色线条处放大后如图22所示。经过一段时间后锁相成功,达到同步状态,如图23所示。

图21 位同步信号滞后于接收脉冲序列

图22 滞后脉冲作用于附加门

图23 同步状态

通过多次试验,可得测试结果如下: 同步建立时间:14.905ms 同步带宽:24hz 4.3接收信号的占空比为1:5

条件设置为:End Time = 10ms,Grid Size = 45.2ns 位同步信号超前于接收脉冲序列的情况如图24所示,蓝色线条处放大后如图25所示。经过一段时间后锁相成功,达到同步状态,如图26所示。

图24 位同步信号超前于接收脉冲序列

图25 超前脉冲作用于扣除门

图26 同步状态

位同步信号滞后于接收脉冲序列的情况如图27所示,蓝色线条处放大后如图28所示。经过一段时间后锁相成功,达到同步状态,如图29所示。

图27 位同步信号滞后于接收脉冲序列

图28 滞后脉冲作用于附加门

图29 同步状态

通过多次试验,可得测试结果如下: 同步建立时间:14.706ms 同步带宽:16hz 4.4接收信号的占空比为1:7

条件设置为:End Time = 20ms,Grid Size = 45.2ns 位同步信号超前于接收脉冲序列的情况如图30所示,蓝色线条处放大后如图31所示。经过一段时间后锁相成功,达到同步状态,如图32所示。

图30 位同步信号超前于接收脉冲序列

图31 超前脉冲作用于扣除门

图32 同步状态

位同步信号滞后于接收脉冲序列的情况如图33所示,蓝色线条处放大后如图34所示。经过一段时间后锁相成功,达到同步状态,如图35所示。

图33 位同步信号滞后于接收脉冲序列

图34 滞后脉冲作用于附加门

图35 同步状态

通过多次试验,可得测试结果如下: 同步建立时间:14.865ms 同步带宽:18hz 4.5远端信号(方波)转变成伪随机序列

条件设置为:End Time = 20ms,Grid Size = 45.2ns 位同步信号超前于接收脉冲序列的情况如图36所示,蓝色线条处放大后如图37所示。经过一段时间后锁相成功,达到同步状态,如图38所示。

图36 位同步信号超前于接收脉冲序列

图37 超前脉冲作用于扣除门

图38 同步状态

位同步信号滞后于接收脉冲序列的情况如图39所示,蓝色线条处放大后如图40所示。经过一段时间后锁相成功,达到同步状态,如图41所示。

图39 位同步信号滞后于接收脉冲序列

图40 滞后脉冲作用于附加门

图41 同步状态

通过多次试验,可得测试结果如下: 同步建立时间:52.476ms 同步带宽:8hz 5.心得体会

在做这个课程设计之前,我没有接触过MAX PLUSII这个软件,对数字锁相器亦没有太多的认识,所以刚开始感觉很难。在查阅了很多相关资料之后,对软件的操作和数字锁相器的理解已经比较深入,越到后边就感觉越得心应手。自己竟然在短短几天之内,掌握了这些东西,并且完整地将课程设计完成。在这过程中也学到了很多东西。一方面,在完成该课程设计的过程中,对数字锁相环技术有了深刻的理解,也学会了如何去利用仿真工具去验证一个设计的正确性和可行性。这对之后的毕业设计都有莫大的帮助。另一方面,自己又一次领悟到与人合作交流的重要性,期间遇到的许多问题都是在不断地讨论和请教中解决的,如果没有集体的智慧,可能到现在也无法完成该设计。总而言之,学期末的课程设计教会了我很多东西,也为本学期画上了一个完满的句号。感谢老师的指导。

下载基于FPGA的数字电子时钟设计与实现(范文模版)word格式文档
下载基于FPGA的数字电子时钟设计与实现(范文模版).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    数字电路课程设计数字时钟实现

    应用科技学院 《电子技术课程设计报告》 设计题目:数字钟的设计与制作 专业班级:13级《物联网工程》2班 姓名:白雪 王贞 张莹 学号:068 108 131 指导老师:刘烨 时间:2015年5月15......

    数字电子时钟开题报告

    近年来,电子技术获得了飞速的发展,在其推动下,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部......

    数字电子时钟课程设计2

    数字电子时钟课程设计题目: 数字电子时钟课程设计目录 一、设计任务及设计要求…………………………………………(3) 二、设计方案论证………………………….. …………. (3) 1.......

    基于verilog的数字时钟设计

    课程设计 基于Verilog HDL的数字秒表设计 系别:物理与电气工程学院 专业:微电子学 班级:班 成员: 1 目录 一、前言…………………………………………………………………………......

    数字时钟的设计实验报告

    实验报告 数字时钟的设计 一、 实验目的 1、 掌握数字钟的设计方法。 2、掌握计数器相互级联的方法。 学号:14040120049 姓名:陶泽二、 实验设备和器件 1、数字逻辑电路实验板......

    数字电子时钟课程设计报告-2(精选5篇)

    前言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进......

    电子数字时钟课程设计报告(数电)

    数字电子钟的设计 1. 设计目的 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到......

    数字时钟课程设计

    数字电子技术课程设计报告 一、设计目的 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿......