资源描述:
《简易电子钟设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
西华大学课程设计说明硬件系统课程设计题目:简易电子钟学生姓名:来清华专业:计算机科学与技术〔师范〕学号:20211202136指导教师:彭太乐日期:2021年12月30日第1页共22页
1简易电子钟设计摘要:Verilog是广泛应用的硬件描述语言,可以用在硬件设计流程的建模、综合和模拟等多个阶段。随着硬件设计规模的不断扩大,应用硬件描述语言进行描述的CPLD结构,成为设计专用集成电路和其他集成电路的主流。通过应用VerilogHDL对多功能电子钟的设计,到达对VerilogHDL的理解,同时对CPLD器件进行简要了解。本文的研究内容包括:对Altera公司Flex10K系列的EPF10K10简要介绍,Altera公司软件Max+plusⅡ简要介绍和应用VerilogHDL对多功能电子钟进行设计。关键词:多功能电子钟;硬件描述语言第11页
2目录第11页1引言1课题的背景、目的1课题设计环境12EPF10K10相关说明及VERILOGHDL简介2EPF10K10相关说明2VerilogHdl硬件描述语言简介33应用VERILOGHDL描述的简易电子钟4功能描述4简易电子钟变成流程图5源程序64应用VERILOGHDL描述的简易电子钟功能模块及仿真7计时模块7译码显示模块8仿真分析及结论105结束语116致谢11第11页
31引言随着电子技术的开展,现场可编程门阵列FPGA和复杂可编程逻辑器件CPLD的出现,使得电子系统的设计者利用与器件相应的电子CAD软件,在实验室里就可以设计自己的专用集成电路ASIC器件。这种可编程ASIC不仅使设计的产品到达小型化、集成化和高可靠性,而且器件具有用户可编程特性,大大缩短了设计周期,减少了设计费用,降低了设计风险。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述﹑综合﹑优化﹑仿真与验证,直到生成器件,实现电子设计自动化。其中电子设计自动化〔EDA〕的关键技术之一就是可以用硬件描述语言〔HDL〕来描述硬件电路。VHDL是用来描述从抽象到具体级别硬件的工业标准语言,它是由美国国防部在80年代开发的HDL,现在已成为IEEE成认的标准硬件描述语言。VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点。利用VHDL这些优点和先进的EDA工具,根据具体的实际要求,我们可以自己来设计串口异步通信电路。1.1课题的背景、目的二十一世纪是信息化高速开展的世纪,产业的信息化离不开硬件芯片的支持。芯片技术的进步是推动全球信息化的动力。因此在二十一世纪掌握芯片技术是十分有必要的。本次课题是计算机组成原理的课程设计,这次课题旨在通过自己对所需功能芯片的设计与实现来稳固以前所学的计算机硬件根底知识,同时也提高动手实践的能力,还有为将来进行更大规模更复杂的开发积累经验。1.2课题设计环境本次课题设计方要用到的开发环境是Altera公司的EDA设计工具软件MAX+plusII。Altera公司的工作与EDA厂家紧密结合,使MAX+plusII软件可以与其它工业标准的设计输入、综合和校验工具相连接。设计者可以使用Altera或标准EDA输入工具进行设计,使用MAX+plusII编译器对Altera器件的设计进行编译,并使用Altera或其它EDA校验工具进行仿真。目前,MAX+plusII支持与Cadence,MentorGraphics,Synopsys,Viewlogic等EDA工具接口。MAX+plusII的编译器支持Altera公司的FLEX系列、MAX系列和Classic可第11页
4编程逻辑器件,提供了一种真正与结构无关的设计环境。编译器还具有强大的逻辑综合与优化功能,使用户不必十分关心设计的细节,可以把精力放在逻辑的实现上。MAX+plusII的设计输入、处理和校验功能都集中在统一的开发环境下,这样可以加快动态调试,缩短开发周期。MAX+plusII软件支持多种硬件描述语言设计输入,包括VHDL,VerilogHDL和Altera自己的硬件描述语言AHDL。MAX+plusII软件提供丰富的库单元供设计调用,其中包括74系列的全部器件和一些根本的逻辑门,多种特殊的逻辑宏功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function).调用库单元进行设计,可以大大减轻工作量。1EPF10K10相关说明及VerilogHdl简介1.1EPF10K10相关说明EPF10K10隶属于Altera公司生产的FLEX10K系列产品,此系列集成度从几万门到几十万门,是业界第一个在PLD中嵌入存储器块的器件。具有许多特点:高密度。10000到250000典型门;功能强大的I/O引脚。每一个引脚都是独立的三态门结构,具有可编程的速率控制;嵌入式阵列块〔EAB〕。每个EAB提供2K比特位,可用来作存储器使用或者用来实现一般的逻辑功能;逻辑单元采用查找表〔LUT〕结构;采用快速通道〔FastTrack〕互连,速度快并可预测延时;具有实现快速加法器和计数器的专用进位链和实现高速、多输入逻辑函数的专用级连链;其中EPF10K10相关电路说明如下:EPF10K10板,内含预定型10K10主体电路和自定义实验区二个局部;预定型10K10主体电路特点如下:采用ALTERA公司10K10PLCC84脚器件;使用有源晶振4MHZ增强线路板抗干扰性能;采用三种不同的配置方式,对ALTERA公司的10K10芯片进行配置:通过EDA软件使用本板提供的JTAG接口下载到10K10器件中对其进行加载配置;通过EDA软件使用本板提供的PSMODE接口下载到10K10器件中对其进行加载配置;为了确保系统板掉电又重新上电后能使10K10正常运行,本系统板提供ALTERA公司EPC1441或EPC1P8二种器件对10K10作上电后自动加载配置。本EDA板提供电源接线端子+5V,GND数字地,+12V或自定义,-12V或自定义,SGND模拟地及电源测试引线口+5V、+12V、-12V,均给出信号信息LED指示灯,本EDA板提供JTAGPSMODE代码下载信号信息LED指示灯。自定义实验区特点如下:本EDA板提供三个试验区,其中数字电路实验区A、B二个,模拟电路实验区C一个;为了提高EDA系统板抗干扰性能,模拟地和数字地采用分开设计,而且增加了实验区电路的可塑性,数字电路实验区配有+5VGND数字地,用户电路实验自由连接点,模拟电路实验区配有+5V第11页
5SGND模拟地,+12V、-12V用户电路实验,自由连接点,用户实验区电路自由连接点共为1908个点,其中数字电路实验区用户自由连接点为2x49行x12列+6行x8列=1272个点,模拟电路实验区用户自由连接点为49行x12列+6行x8列=636个点,提供10K10可用的全部I/O脚引线插座,方便与用户实验区任意连接。实验区连线方式通常使用三种方式:元器件直接焊接方式,一次性使用;实验区可焊接可插接排针孔,以便实验电路任意搭接,增强使用的灵活性,屡次性;实验区可选配安装通用实验面包板,无须做b项操作,面包板可安装三块。EDA板上跳线连接说明:JP8:控制EPC1441/EPC1P8+5V电压的提供,JTAGMODEJP,JTAG下载方式支持由本跳线组确定4个全短接,那么允许JTAG方式下载;断开那么屏蔽JTAG方式下载;PSMODE:JPPS下载方式支持由本跳线组确定5个全短接,那么允许PS方式下载;断开,那么屏蔽PS方式下载;JP10:MSEL0信号受控脚跳左,那么MSEL0为0;跳右那么MSEL0为1;JP11:MSEL1信号受控脚跳左,那么MSEL1为0;跳右那么MSEL1为1;PWR5V:+5V跳线开关跳左,+5V为ON接通;跳右+5V为OFF关闭;PIN1_OSC:ALTERA10K10PIN1脚的时钟信号输入端,跳左CLOCK信号频率,由U5晶振确定;跳右,CLOCK信号频率由上层独立型适配器的时钟晶振确定;PIN43_OSC:ALTERA10K10PIN43脚的时钟信号输入端跳左,CLOCK信号频率由U5晶振确定;跳右,CLOCK信号频率由上层独立型适配器的时钟晶振确定;J1A:控制数字实验A区的+5V;DC:电源电压;J2A:控制数字实验A区的电源电压数字信号地GND;J1B:控制数字实验B区的电源电压数字信号地GND;J1C:控制模拟实验C区的+12V;J2C:控制模拟实验C区的-12V;J3C:控制模拟实验C区的电源电压模拟信号地SGND5;EDA板上电源端子接口LED指示灯说明;JPWR:电源电压接线端子,从上往下顺序定义为+5VGND、+12V-12VSGND;PWRT:电源电压测试接线端子,从上往下顺序定义,同JPWR+5VGND、+12V-12VSGND;JTAG_MODE:ALTERA10K10JTAG方式下载接口;PS_MODE:ALTERA10K10PS方式下载接口;10K10(IN1):ALTERA10K10外扩展,I/O引线接口1;10K10(IN2):ALTERA10K10外扩展,I/O引线接口2;JP2、JP3、JP4、JP5、JP6向上可选配;GEXIN:各种独立型适配器;LED指示灯:D2、D3、D4、TCK、LED、PSLED分别为+5V、+12V、-12V、JTAG;PS:信号指示灯。1.1VerilogHdl硬件描述语言简介模块是Verilog的根本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述;设计的数据流行为使用连续赋值语句进行描述;时序行为使用过程结构描述。一个模块可以在另一个模块中使用。说明局部用于定义不同的项,例如模块描述中使用的存放器和参数。语句定义设计的功能和结构。说明局部和语句可以散布在模块中的任何地方;但是变量、存放器、线网和参数等的说明局部必须在使用前出现。为了使模块描述清晰和具有良好的可读性,最好将所有的说明局部放在语句前。本书中的所有实例都遵守这一标准。在模块中,可用下述方式描述一个设计:(1)数据流方式;(2)行为方式;(3)结构方式;(4)上述描述方式的混合。第11页
6VerilogHDL模型中的所有时延都根据时间单位定义。使用编译指令将时间单位与物理时间相关联。这样的编译器指令需在模块描述前定义。如果没有编译器指令,VerilogHDL模拟器会指定一个缺省时间单位。IEEEVerilogHDL标准中没有规定缺省时间单位。用数据流描述方式对一个设计建模的最根本的机制就是使用连续赋值语句。在连续赋值语句中,某个值被指派给线网变量。请注意连续赋值语句是如何对电路的数据流行为建模的;这种建模方式是隐式而非显式的建模方式。此外,连续赋值语句是并发执行的,也就是说各语句的执行顺序与其在描述中出现的顺序无关。设计的行为功能使用下述过程语句结构描述:(1)initial语句:此语句只执行一次。(2)always语句:此语句总是循环执行,或者说此语句重复执行。只有存放器类型数据能够在这两种语句中被赋值。存放器类型数据在被赋新值前保持原有值不变。所有的初始化语句和always语句在0时刻并发执行。在顺序过程中出现的语句是过程赋值模块化的实例。模块化过程赋值在下一条语句执行前完成执行。过程赋值可以有一个可选的时延。时延可以细分为两种类型:(1)语句间时延:这是时延语句执行的时延。(2)语句内时延:这是右边表达式数值计算与左边表达式赋值间的时延。在VerilogHDL中可使用如下方式描述结构:(1)内置门原语(在门级);(2)开关级原语(在晶体管级);(3)用户定义的原语(在门级);(4)模块实例(创立层次结构)。通过使用线网来相互连接。1应用VerilogHDL描述的简易电子钟1.1功能描述计时功能包括时、分、秒的计时,分别类似于模12、模60、模60计数器。输入变量:时钟clk,直接清零reset。输出变量:小时计时变量为q[15:8],其中q[15:12]为小时的十位,q[11:8]为小时的个位;q[7:0]为分计时变量,其中q[7:4]为分的十位,q[3:0]为分的个位,上述计时变量均采用8421BCD码。第11页
71.1简易电子钟变成流程图开始q[15:12]==1&&q[11:8]==2&&q[7:4]==5&&q[3:0]==9q[3:0]!==9Reset!=0q[3:0]==0q[3:0]==0q[7:4]!==5q[7:4]==0q[11:8]!==9q[11:8]==0q[15:12]=q[15:12]+1q[3:0]=q[3:0]+1q[7:4]=q[7:4]+1q[11:8]=q[11:8]+1q[15:12]=0;q[11:8]=1;q[7:0]=0;FalseFalseFalseFalseFalseTureTureTureTureTure第11页
81.1源程序moduleclock(reset,clk,q);output[15:0]q;//输出变量inputreset,clk;//输入变量reg[15:0]q;//类型always@(posedgeclkornegedgereset)if(!reset)//复位(低电平有效)q<=0;//清零电子钟elsebegin//如果当前状态为12:59时,计时器变为01:00。if((q[15:12]==1)&(q[11:8]==2)&(q[7:4]==5)&(q[3:0]==9))beginq[15:12]<=0;q[11:8]<=1;q[7:0]<=0;end//如果当前分钟状态为59时,计分器变为00。elseif(q[3:0]==9)beginq[3:0]<=0;if(q[7:4]==5)beginq[7:4]<=0;//假设当前小时个位态为9时,小时个位变为0,且十位加一。if(q[11:8]==9)beginq[11:8]<=0;q[15:12]<=q[15:12]+1;endelseq[11:8]<=q[11:8]+1;endelse//分十位和个位按计时规律分别加一计时。q[7:4]<=q[7:4]+1;endelseq[3:0]<=q[3:0]+1;endendmodule第11页
91应用VerilogHDL描述的简易电子钟功能模块及仿真1.1计时模块模块功能为正常计时,即每秒钟读一次数,秒表加1,秒计时满60进1给分计时,分计时满60进1给小时计时,小时计时满12清零。从功能上讲分别为模60计数器,模60计数器和模12计数器。模块程序代码:moduleclock(reset,clk,q);output[15:0]q;inputreset,clk;reg[15:0]q;always@(posedgeclkornegedgereset)if(!reset)//resetthedigitalclockbeginq<=0;endelsebeginif((q[15:12]==1)&(q[11:8]==2)&(q[7:4]==5)&(q[3:0]==9))beginq[15:12]<=0;q[11:8]<=1;q[7:0]<=0;endelseif(q[3:0]==9)beginq[3:0]<=0;if(q[7:4]==5)beginq[7:4]<=0;if(q[11:8]==9)beginq[11:8]<=0;第11页
10q[15:12]<=q[15:12]+1;endelseq[11:8]<=q[11:8]+1;endelseq[7:4]<=q[7:4]+1;endelseq[7:4]<=q[3:0]+1;endendmodule模块仿真:模块符号如下列图:电子钟HH:MMQ[15:0]CLKREST图 计时模块符号生成模块仿真波形如图4.2:图 仿真波形1.1译码显示模块3-8译码器的原理框图及真值表如图及表所示,3个输入a[2:0]可能出现8种组合情况:000,001,010,011,100,101,110,111,这样就可控制8个输出y[7:0]相应的某1位输出为“0”。第11页
11a[0]3-8译码器a[1]a[2]y[7:0]输入输出a[2:0]y[7:0]00011111110001111111010101111101101111110111输入输出a[2:0]y[7:0]10011101111101110111111101011111111101111111表3-8译码器真值表图3-8译码器的原理框图七段显示译码器的原理框图及真值表如图及表所示,4个输入d[3:0]可能出现16种组合情况;它的7个输出y[6:0]分别控制共阴LED数码管的a、b、c、d、e、f、g七段的亮/灭,从而显出对应的16个字符。abgcdefd[3:0]y[6:0]七段显示译码器图七段显示译码器的原理框图表8421BCD七段显示译码器真值表输入输出d[3:0]y[6:0]a,b,c,d,e,f,gH"0"1,1,1,1,1,1,0H"1"0,1,1,0,0,0,0H"2"1,1,0,1,1,0,1H"3"1,1,1,1,0,0,1输入输出d[3:0]y[6:0]a,b,c,d,e,f,gH"4"0,1,1,0,0,1,1H"5"1,0,1,1,0,1,1H"6"1,0,1,1,1,1,1H"7"1,1,1,0,0,0,0输入输出d[3:0]y[6:0]a,b,c,d,e,f,gH"8"1,1,1,1,1,1,1H"9"1,1,1,1,0,1,1H"A"1,1,1,0,1,1,1H"B"0,0,1,1,1,1,1输入输出d[3:0]y[6:0]a,b,c,d,e,f,gH"C"1,0,0,1,1,1,0H"D"0,1,1,1,1,0,1H"E"1,0,0,1,1,1,1H"F"1,0,0,0,1,1,1模块程序代码modulede_7(d,y);input[3:0]d;output[6:0]y;reg[6:0]y;always@(d)case(d)第11页
124’b0000:y=7’b1111110;4’b0001:y=7’b0110000;4’b0010:y=7’b1101101;4’b0011:y=7’b1111001;4’b0100:y=7’b0110011;4’b0101:y=7’b1011011;4’b0110:y=7’b1011111;4’b0111:y=7’b1110000;4’b1000:y=7’b1111111;4’b1001:y=7’b1111011;4’b1010:y=7’b1110111;4’b1011:y=7’b0011111;4’b1100:y=7’b1001110;4’b1101:y=7’b0111101;4’b1110:y=7’b1001111;4’b1111:y=7’b1000111;endcaseendmodule1.1仿真分析及结论由仿真波形图可以看出,当Q15…Q12为小时的十位,Q11…Q8为小时的个位,分别计数0001、0010〔即12〕,而Q7…Q4为分的十位,Q3…Q0为分的个位,分别计数为0101、1001〔即59〕时,在下一个时钟CLK作用下计时器翻转到01时00分,然后计数器继续自然递增累加计数,完成小时计数器“12翻1〞,分计数器为8421BCD码60进制的计时功能。设计及仿真结果符合设计要求,到达预期效果。第11页
131结束语VerilogHdl语言设计的出现从根本上改变了以往数字电路的设计模式,使电路设计由硬件设计转变为软件设计,这样提高了设计的灵活性,降低了电路的复杂程度,修改起来也很方便。利用VerilogHdl设计的灵活性,根据串行通信协议的要求,可以在实验室利用先进的EDA工具,设计出符合自己实际需求的多功能电子钟电路。经过两周的设计制作,该设计终于如期开发完毕,其功能根本上可以满足处理的需要。由于时间有限,本系统还有许多不尽人意的地方,需要将来做进一步的改善。这次课程设计,以方便实际操作为根底,以理论联系实际为准那么,不断完善,不断创新。2致谢在这次课程设计中,非常感谢课程设计于雷老师的指导,在老师的身上学到的不仅仅是知识的层面,更重要的是老师追求知识的热情,还重要的是老师对学生的尊重和关爱,却又不失老师本身工作的严谨的态度,他的工作作风以及对生活的态度让我受益匪浅。我在课程设计中碰到的很多个人困难,老师都能给予很大的体谅与帮助。在设计中遇到的试验的客观条件方面,老师都能给予最大力度的协助,让我有更好的设计学习环境,谢谢同学的相互帮助,感谢有了这些,我才能很好的顺利的完成我的这次课程设计。参考文献[1]张振荣,晋明武等.MCS-51单片机原理及实用技术[M].北京:人民邮电出版社,2000.[2]周兴华.手把手教你学单片机[M].北京:北京航空航天大学出版社,2005.[3]褚振勇,翁木云.FPGA设计及应用[M].西安:电子科技大学出版社,2002.[4]王新梅,肖国镇.纠错码——原理与方法(修订版)[M].电子科技大学出版社,2001.第11页