课程设计(论文)基于SOPC技术实现数字闹钟.doc

上传人:laozhun 文档编号:3993514 上传时间:2023-03-30 格式:DOC 页数:14 大小:343.50KB
返回 下载 相关 举报
课程设计(论文)基于SOPC技术实现数字闹钟.doc_第1页
第1页 / 共14页
课程设计(论文)基于SOPC技术实现数字闹钟.doc_第2页
第2页 / 共14页
课程设计(论文)基于SOPC技术实现数字闹钟.doc_第3页
第3页 / 共14页
课程设计(论文)基于SOPC技术实现数字闹钟.doc_第4页
第4页 / 共14页
课程设计(论文)基于SOPC技术实现数字闹钟.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《课程设计(论文)基于SOPC技术实现数字闹钟.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于SOPC技术实现数字闹钟.doc(14页珍藏版)》请在三一办公上搜索。

1、基于SOPC技术实现数字闹钟【摘要】在现代社会,数字闹钟方便了人们的生活和工作。数码管显示的时间简单明了而且读数快、时间准确显示到秒。该数字闹钟主要采用sopc技术,设计由系统对外部机械按键模块进行扫描获取部分指令,对外部时钟分频后进行小时24分频计时模块、分钟60分频计时模块、秒钟60分频计时模块,并进一步建立年月日计时判断模块。采用LED数码管显示时、分、秒,以24小时计时方式,蜂鸣器则作为闹钟声音提示用。该数字闹钟优点是小巧,价格低廉,走时精度高,整点报时和定时非常方便。 关键字: SOPC技术 数码管显示 整点提示 闹钟一、课题简介 SOPC技术是美国Altrea公司于2000年最早提

2、出的,并同时推出了相应的开发软件Quartus II。SOPC是基于FPGA解决方案的SOC,与ASIC的SOC解决方案相比,SOPC系统及其开发技术具有更多的特色,构成SOPC的方案有多种途径,我们主要用到的是:基于FPGA嵌入IP硬核的SOPC系统1基于FPGA嵌入IP硬核的SOPC系统即在FPGA中预先植入嵌入式系统处理器。目前最为常用的嵌入式系统大多采用了含有ARM的32位知识产权处理器核的器件。尽管由这些器件构成的嵌入式系统有很强的功能,但为了使系统更为灵活完备,功能更为强大,对更多任务的完成具有更好的适应性,通常必须为此处理器配置许多接口器件才能构成一个完整的应用系统。如除配置常规

3、的SRAM、DRAM、Flash外,还必须配置网络通信接口、串行通信接口、USB接口、VGA接口、PS/2接口或其他专用接口等。这样会增加整个系统的体积、功耗,而降低系统的可靠性。但是如果将ARM或其他知识产权核,以硬核方式植入FPGA中,利用FPGA中的可编程逻辑资源和IP软核,直接利用FPGA中的逻辑宏单元来构成该嵌入式系统处理器的接口功能模块,就能很好地解决这些问题。2基于FPGA嵌入IP软核的SOPC系统这种SOPC系统是指在FPGA中植入软核处理器,如:NIOS II核等。用户可以根据设计的要求,利用相应的EDA工具,对NIOS II及其外围设备进行构建,使该嵌入式系统在硬件结构、功

4、能特点、资源占用等方面全面满足用户系统设计的要求。二、数字闹钟的工作原理及设计过程1、工作原理 数字闹钟组成结构数字闹钟一般由振荡器、分频器、计数器、译码器、显示器及部分扩展电路等组成。1.1 振荡器振荡器是数字电子钟的核心,其作用是产生一个频率标准,即时间标准信号,然后再由分频器生成秒脉冲,所以,振荡器频率的精度和稳定度就基本决定了数字电子钟的准确度,为产生稳定的时间标准信号,一般采用石英晶体振荡器。从数字电子钟的精度考虑,振荡频率越高记数精度越高。但这回使振荡器的耗电量增大,分频器级数增多。所以在确定频率时应同时考虑这两方面的因素再选择器材。如果精度要求不是很高的话我们可以采用由集成逻辑门

5、与RC组成的时钟源振荡器或由集成电路定时器555与RC组成的多谐振荡器。一般而言,选用石英晶体振荡器所选用的晶振频率为32768Hz,再通过15级2分频集成电路得到1Hz的标准秒脉冲。1.2 分频器振荡器产生的时标信号频率很高,要使它变成用来计时的“秒”信号,需要若干级分频电路,分频器的级数和每级分频次数要根据时标信号的频率来决定。其功能主要有两个:一是产生标准秒脉冲信号,二是提供功能扩展电路所需的信号。1.3 计数器有了“秒”信号了就可以根据60秒为一分,60分为一小时,24小时为一天的进制,分别选定没“秒”、“分”、“时”的计数器。从这些计数器的输出可得到一分、一小时、一天的时间进位信号。

6、在秒计数器钟因为是60进制通常用两个十进制计数器的集成片组成,其中秒个位是十进制的、十位是6进制的。可采用反馈归零法变“秒”十位为6进制,实现秒的60进制,同样,分计数器的与秒的一样,只是时计数器里需要变成24进制,也用反馈归零法实现。1.4 译码器及显示器因为计数器全部采用8421BCD码十进制计数集成芯片,所以“秒”、“分”、“时”的个位和十位都有四个状态输出端(Qa、Qb、Qc、Qd)。将这些输出端接至专门设计制造的译码电路,就可产生驱动七段数码显示器的信号。1.5 校时电路当数字钟接通电源或者计时出现误差时需要校正时间,校时电路的要求是:在小时校正时不影响分和秒的正常计数;在分校时时不

7、影响时和秒的正常计数;校时方式有“快校时”和“慢校时”两种,“快校时“是通过开关控制使计数器对1Hz的校时脉冲计数,“慢校时”是通过手动产生单脉冲作校时脉冲,校时的基本原理是将0.5秒的脉冲信号(可由分频器的第14级分频输出端直接获得),直接引进“时”计数器,同时将计数器置“0”,在时的指示调到需要的数字后,再切断“0.5”信号让计数器正常工作。2、设计过程SOPC设计首先使用Quartus II建立一个Quartus II 的工程,创建完成工程之后,需要创建顶层实体。创建完顶层设计文件之后,使用SOPC Builder创建NIOS II 嵌入式处理器,添加、配置系统的外设IP,组成Nios

8、II系统模块。 Nios II 系统模块设计完成之后要加入到该顶层实体中,然后进行其他片上逻辑的开发。2.1 Quartus II 工程的建立:(1)启动Quartus II软件;(2)选择File菜单New Project Wizard,出现Introduction页面,该页面介绍所要完成的具体任务,点击next。(3) 进行项目名称的设定、工作目录的选择。指定工程存放的目录,工程名和顶层实体名,工程名和顶层实体名要求相同,工程目录可以随意设置,但必须是英文的目录,工程名和顶层实体名也要求是英文名字,我们的工程名和顶层实体名为clock,选择Next。4. 可以为工程添加先期已经输入的设计文

9、件,指定用户自定义的元件库的路径,这里我们没有事先输入好的文件,也没有自定义的元件库,点击Next进入下一步。 5. 用户指定目标器件,根据开发板的所使用的器件来选择,实际开发中,通过查看核心板的参考手册来获取所使用的器件具体型号,可以使用窗口右边的Filters来加快器件的选择,选择完毕点击Next。6. 指定在Quartus II 之外的用于,设计输入、综合、仿真、时序分析的第三方EDA工具,Quartus II对第三方工具的支持比较完善。这里我们不做选择,直接点击Next。所见新工程的信息,确认所创建工程的主要信息,点击Finish完成工程的建立,在开发的过程中,还可以通过菜单assig

10、nmentSettings来对这些配置进行修改。 点击Finish按钮,Quartus II自动会打开这个工程,可以看到顶层实体名出现在工程导航窗口中。7,、 新建的工程窗口中,选择FileNew;在Device Design File页中,选择Block DiagramSchematic File,即原理图文件,也可以选择硬件描述语言的文件形式。单击OK。出现一个模块编辑窗口;选择FileSave As,出现Save As对话框,显示的目录为之前设置的工程目录,文件名为之前设置的顶层实体名(由于这是工程的第一个文件,系统会默认为顶层设计实体的名字)。确定Add to Current Proj

11、ect选项被选中,点击save。器件型号 2.2创建NIOS II 系统模块(1) 创建系统:启动SOPC Builder,选择ToolsSOPC Builder,出现如图所示的Create New System对话框。键入系统的名字,选择硬件描述语言Verilog或者是VHDL。 (2) 设置系统主频和指定目标FPGA:在Board部分选择Unspecified,然后在Device Family选择Cyclone II。用户需要设置系统的时钟频率,该频率用于计算硬件和软件开发中的定时,比如时钟分频或波特率,还可以选择是否选用流水线。 (3)加入Nios II CPU和 IP模块:首先加入Ni

12、os II软核,Nios II 是软核CPU,共有三种类型的CPU可供选择:Nios II/e(经济型)、Nios II/s(标准型)和Nios II/f(快速型)。用户可以根据实际的情况进行选择。Nios II是一个用户可以自行进行定制的CPU,用户可以增加新的外设、新的指令等。 添加CPU软核添加内存_SDRAM 添加LCD模块 添加100ms的定时器 完整的SOPC的硬件系统生成的PLL模块 顶层总原理图2.3部分程序如下:模24计数器/counter24.v 1 /filename :counter24.v (BCD : 0-23) 2 module counter24(CntH,Cn

13、tL,ncR,EN,CP); 3 input CP,ncR,EN; 4 output 3:0CntH,CntL; 5 reg 3:0CntH,CntL; 6 7 always (posedge CP,negedge ncR) 8 begin 9 if(ncR)10 CntH,CntL=8h00;11 else if(EN)12 CntH,CntL2)|(CntL9)|(CntH=2)&(CntL=3)14 CntH,CntL=8h00;15 else if(CntH=2)&(CntL3)16 begin17 CntH=CntH;18 CntL=CntL+1b1;19 end20 else if

14、(CntL=9)21 begin22 CntH=CntH+1b1;23 CntL=4b0000;24 end25 else26 begin27 CntH=CntH;28 CntL=CntL+1b1;29 end30 end31 32 endmodule 模60计数器/counter60.v1 /countuer 60 2 3 /counter10.v (BCD: 0-9) 4 module counter10(Q,ncR,EN,CP); 5 input CP,ncR,EN; 6 output reg 3:0Q; 7 8 always (posedge CP,negedge ncR) 9 beg

15、in10 if(ncR)11 Q=4b0000;12 else if(EN)13 Q=Q;14 else if(Q=4b1001)15 Q=4b0000;16 else17 Q=Q+1b1;18 end19 endmodule20 21 /counter6.v(BCD: 0-5)22 module counter6(Q,ncR,EN,CP);23 input CP,ncR,EN;24 output reg 3:0Q;25 26 always (posedge CP,negedge ncR)27 begin28 if(ncR)29 Q=4b0000;30 else if(EN)31 Q=Q;32

16、 else if(Q=4b0101)33 Q=4b0000;34 else35 Q=Q+1b1;36 end37 endmodule 38 39 /counter60.v(BCD:0-59)40 module counter60(Cnt,ncR,EN,CP);41 input CP,ncR,EN;42 output 7:0Cnt;43 wire 7:0Cnt;44 wire ENP;45 46 counter10 UC0(Cnt3:0,ncR,EN,CP);47 counter6 UC1(Cnt7:4,ncR,ENP,CP);48 49 assign ENP=(Cnt3:0=4h9);50 e

17、ndmodule 闹钟/1 /Bell.v 2 module Bell(alarm_clock,set_hr,set_min,hour,minute, 3 second,sethrkey,setminkey,_1khz,_500hz, 4 _1hz,ctrlbell); 5 output alarm_clock; 6 output 7:0set_hr,set_min; 7 wire alarm_clock; 8 input _1khz,_500hz,_1hz; 9 input sethrkey,setminkey;10 input ctrlbell;11 input 7:0hour,minut

18、e,second;12 13 supply1 Vdd;14 wire hrh_equ,hrl_equ,minh_equ,minl_equ;15 wire time_equ;16 17 counter60 SU1(set_min,Vdd,setminkey,_1hz);18 counter24 SU2(set_hr7:4,set_hr3:0,Vdd,sethrkey,_1hz);19 20 /comparate the set time21 _4bitcomparator SU4(hrh_equ,set_hr7:4,hour7:4);22 _4bitcomparator SU5(hrl_equ,

19、set_hr3:0,hour3:0);23 _4bitcomparator SU6(minh_equ,set_min7:4,minute7:4);24 _4bitcomparator SU7(minl_equ,set_min3:0,minute3:0);25 26 assign time_equ=(hrh_equ & hrl_equ & minh_equ & minl_equ);27 assign alarm_clock=ctrlbell?(time_equ&(second0=1b1)&_500hz)28 |(second0=1b0)&_1khz):1b0;29 endmodule30 31

20、/4bitcomparator.v32 module _4bitcomparator(equ,a,b);33 input 3:0a,b;34 output equ;35 36 assign equ=(a=b);37 endmodule2.3元器件型号及逻辑门芯片:EP2C20F484C7 1.2v 18752 315 239616 52 4占用了3383个逻辑单元,占器件中18752个逻辑单元的18% Timeout period:100msTimer counter size :32bitsPio:4电容若干开关若干100khz晶振1块蜂鸣器1个三、设计过程中遇到的问题及方案在连接电路时,用

21、1HZ的信号输入时,发现数码管显示没有按预期的要求显示,结果得等一两分钟才显示一次,于是用是最后用时钟信号来代替晶振通过调节脉冲信号的大小,结果发现在200HZ下,数码管才能实现其功能。在设计闹铃功能时,原先总是想把定时部分显示出来,结果老是不近人意,后来通过查阅很多资料发现介绍定时器设计时,看到用逻辑开关来控制时,突然灵机一动,于是找到一个逻辑开关,把一端接在+5v上,然后放置一示波器,观察其波形,当开关拨置上端时发现示波器显示为高电平。再将示波器接至数码管输入端时,发现4个输入端为8421码,于是想,是否可以将数码管输入端与逻辑开关组成比较器,后来真的解决了。四、设计心得体会经过几星期的努

22、力,终于把这次课程设计做完了。虽然刚开始对何为SOPC一点都不懂,于是按部就班地上图书馆去查阅资料,上网去搜索终于有较表层的认识。但是这样远远不够的,还需要对数字闹钟的整体设计,包括具有什么功能,实现这些功能需要哪些元器件,还有软件与硬件的结合,代码的实现。这需要我再次翻开数电书,重新再学习一次。此次课程设计让我认清了几点:第一, 将理论付诸实践的困难。第二, 查找资料的重要性。第三, 细节决定成败。第四, 查找故障的能力有待提高。总的来说,电子钟的课程设计有利于培养我们对电子设计的兴趣,也让我发现了自身很多不足,学会了不少知识,帮我积累了不少经验。这对我以后的学习和工作都是一笔不可多得的财富。最后感谢老师一直以来的支持和指导,老师辛苦了!参考文献: 1 康华先- 电子技术基础(数字部分) ;第五版M高等教育出版社。 2 谢自美- 电子线路设计 实验 测试;华中科技大学出版社。 3 谭浩强-C程序设计;清华大学出版社。 4 王建国-SOPC设计基础与实践;西安电子科技大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号