收藏 分销(赏)

EDA技术课程设计报告.doc

上传人:Fis****915 文档编号:551895 上传时间:2023-12-06 格式:DOC 页数:28 大小:7.26MB
下载 相关 举报
EDA技术课程设计报告.doc_第1页
第1页 / 共28页
EDA技术课程设计报告.doc_第2页
第2页 / 共28页
EDA技术课程设计报告.doc_第3页
第3页 / 共28页
EDA技术课程设计报告.doc_第4页
第4页 / 共28页
EDA技术课程设计报告.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、EDA技术课程设计报告课程设计任务书设计题目1:数码管显示数字钟设计学生姓名课程名称EDA技术课程设计专业班级地 点起止时间2017年6月19日 6月23日设计内容硬件设计及样品制作设计参数1、具有时、分、秒,计数显示功能,以24小时循环计时;2、具有清零,调节小时、分钟功能;3、具有整点报时功能,整点报时的同时LED花样显示。设计进度1. 2017年6月19日20日 查阅资料,确定设计方案2. 2017年6月21日22日 程序设计和硬件调试3. 2017年6月23日 撰写课程设计报告,答辩设计成果1. 设计说明书一份(不少于2000字);2. 样品一套。参考资料1. 周润景等,基于Quart

2、us II的FPGA/CPLD数字系统设计实例,电子工业出版社,20102. 夏宇闻,Verilog数字系统设计教程(第二版),北京航空航天大学出版社,2014说明1本表应在每次实施前由指导教师填写一式2份,审批后所在系(部)和指导教师各留1份。2多名学生共用一题的,在设计内容、参数、要求等方面应有所区别。3若填写内容较多可另纸附后。院(系)分管领导:教研室主任: 指导教师: 2017年 6月 23日目 录第1章 引言1第2章 电路原理2第3章 程序设计33.1 顶层模块设计33.2 时钟分频模块设计33.3 按键驱动模块设计43.4 时钟计数模块设计43.5 整点报时模块53.6 LED灯花

3、样显示模块73.7 数码管显示模块设计7第4章 调试、测试分析及结果104.1 调试104.2 测试分析104.3 结果12第5章 小结13参考文献14附录 电路图及程序15第1章 引言EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL或者Verilog HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、

4、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。此次课程设计我们运用Quartus这个软件,使用Verilog HDL语言进行编程。数字钟是一种用数字电路技术实现时、分、秒计时的钟表。与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用

5、专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。本次课程设计要求利用EDA技术,设计一个数码管显示数字钟的样品,数字钟要求具备以下功能:1、具有时、分、秒,计数显示功能,以24小时循环计时;2、具有清零,调节小时、分钟功能;3、具有整点报时功能,整点报时的同时LED花样显示。第2章 电路原理数码管显示数字钟设计,运用到8位数码管,要求其中6位数码管动态显示,分别显示时、分、秒的计数,同时对时间进行设置,数字钟的总体功能按照要求可以分为基本的数字时钟显示(具有时、分、秒,

6、计数显示功能,以24小时循环计时)、手动校准(具有清零,调节小时、分钟功能)、整点报时、LED灯花样显示四大部分。其总体功能设计框图如图2.1所示:数码管显示数字钟数字时钟显示手动校准整点报时LED灯花样显示图2.1 数字钟总体功能设计框图第3章 程序设计其中,“时钟分频模块”用于对芯片晶振提供的时钟信号进行分频,然后给其他模块分配需要的时钟频率。按键输入的信号经过按键去抖后传送给“时钟计数模块”。正常计数时,“时钟计数模块”将处理好的时、分、秒数据实时传送给“数码管显示模块”,当有来自“按键驱动模块”的信号时,改变相应的时、分、秒计数器中的值,实现调整时间的作用。“数码管显示模块”实时将“时

7、钟计数模块”的数据转换成数码管动态显示信号进行显示。最后,加上一个“整点报时”模块和“LED灯花样显示模块”经过时钟分频信号,传递给“数码管显示模块”,实现所需功能。数字钟设计原理如图3.1所示:时钟分频模块按键驱动模块时钟计数模块整点报时模块LED灯花样显示模块数码管显示模块图3.1 数字钟设计原理图3.1 顶层模块设计顶层模块设计如附录图3所示,其RTL电路图如附录图4所示。顶层模块包含四个输入:系统时钟输入“clk”,秒设置信号“sset”,分钟设置信号“mmset”,小时设置信号“hset”。一个8位的段选数码管显示值输出“seg”,一个8位的片选数码管显示哪一个数码管输出“dig”,

8、将输出给数码管进行动态显示。“时钟分频模块”电路符号名为“int _ div”,“按键驱动模块”电路符号名慰“an _ jian”,“时钟计数模块”内部采用三格计数器级联的方式分别驱动时、分、秒计数,秒计数器和分计数器均为60进制计数器,小时计数器为24进制计数器,电路符号名分别为两个“ji _ shu _ 60”和一个“ji _ shu _ 24”。3.2 时钟分频模块设计“时钟分频模块”直接使用老师上课所给的分频程序,加入两个分频模块,与“时钟计数模块”和“按键驱动模块”进行连接。3.3 按键驱动模块设计图3.2 按键驱动模块封装而成的电路元件按键驱动模块使用原理图方法设计,采用在按键信号

9、传输过程中串联触发器实现按键去抖,保证触发器两次触发的间隔远大于按键抖动的时间,而远小于人动作反应的时间。另外因为实例用独立按键按下后是低电平,所以在触发器后面串联一个非门,使其变为高电平有效。附录图1所示为按键驱动模块原理图,图3.2所示为按键驱动模块封装而成的电路元件。该模块包括四个输入,时钟信号clk,秒设置输入s _ in,分钟设置输入m _ in,小时设置输入h _ in;三个输出,秒设置输出s _ out,分钟设置输出m _ out,小时设置输出h _ out。从该模块的原理图可以看出,时、分、秒三个按键的去抖原理完全一样,这里提取小时输入和输出进行仿真验证,得到的结果如图4.1所

10、示,每一个时钟上升沿h _ out的值都保持和h _ in的值相反,该设计能够达到预期设计要求。3.4 时钟计数模块设计如附录图2所示。“时钟计数模块”内部采用三个计数器级联的方式分别驱动时、分、秒计数,秒计数器和分钟计数器均为60进制计数器,小时计数器为24进制计数器,为方便驱动数码管,三个计数器的输出均为两位的十进制数据。秒调整信号通过一个或门和秒进位信号一起驱动分钟计数器;小时调整和分钟调整同理。60进制计数器主要Verilog HDL代码如下:begin if(!rst) /0 begin q1=0; q2=0; end else begin q13:0=q13:0+1; co9) b

11、egin q13:0=0; q23:0=q23:0+1; if(q23:05) begin q23:0=0; co9) begin q13:0=0; q23:0=q23:0+1; end if(q1=4)if(q2=2) begin q1=0;q2=0; end end如图4.2所示该模块中60进制模块与24进制模块的仿真波形,60进制模块设置qs0、qs1分别为个位、十位,个位计数到9之后清零,十位计数到5之后清零,24进制模块设置qh0、qh1分别为个位、十位,个位计数到9之后清零,十位计数到2之后清零。3.5 整点报时模块整点报时模块的设计思路是当数字钟计数到一个整点时间时,蜂鸣器开始响

12、鸣。蜂鸣器的封装设计如图3.3所示,程序设计为一段乐谱,主要Verilog HDL代码如下:图3.3 蜂鸣器封装模块always (posedge clk_4Hz) begin case(j) d1:origin=d4916; /low d2:origin=d6168; d3:origin=d7281; d4:origin=d7791; d5:origin=d8730; d6:origin=d9565; d7:origin=d10310; d8:origin=d010647; /middle d9:origin=d011272; d10:origin=d011831; d11:origin=d

13、012087; d12:origin=d012556; d13:origin=d012974; d14:origin=d013346; d15:origin=d13516; /high d16:origin=d13829; d17:origin=d14108; d18:origin=d11535; d19:origin=d14470; d20:origin=d14678; d21:origin=d14864; default:origin=d011111; endcase endalways (posedge clk_4Hz) /乐谱begin if(len=63) len=0; else l

14、en=len+1; case(len)0:j=3;1:j=3;2:j=3;3:j=3;4:j=5;5:j=5;6:j=5;7:j=6;8:j=8;9:j=8;10:j=8;11:j=6;12:j=6;13:j=6;14:j=6;15:j=12;16:j=12;17:j=12;18:j=15;19:j=15;20:j=15;21:j=15;22:j=15;23:j=9;24:j=9;25:j=9;26:j=927:j=9;28:j=9;29:j=9;30:j=9;31:j=9;32:j=9;33:j=9;34:j=10;35:j=7;36:j=7;37:j=6;38:j=6;39:j=5;40:

15、j=5;41:j=5;42:j=6;43:j=8;44:j=8;45:j=9;46:j=9;47:j=3;48:j=3;49:j=8;50:j=8;51:j=8;52:j=5;53:j=5;54:j=8;55:j=5;56:j=5;57:j=5;58:j=5;59:j=5;60:j=5;61:j=5;62:j=5;63:j=5;endcase end3.6 LED灯花样显示模块LED灯花样显示模块是与整点报时模块同时工作,当蜂鸣器响鸣时LED灯闪烁。该模块设计思路较为简单,只需在时分秒的时钟输出端接入一个以低电平驱动的LED邓即可实现。3.7 数码管显示模块设计数码管动态显示的原理是利用人眼的

16、视觉停留,依次点亮每个数码管的位选信号,当第一个数码管被点亮时,将段选信号变为第一个数码管要显示的信息,当第二个数码管被点亮时,将段选信号变为第二个数码管要显示的信息,以此类推,循环扫描。当循环扫描一次所有数码管所用的时间在人眼能反应出图像变化的时间(约为0.02秒)之内时,人自然就会在视觉上看到完整的图像,而不会感到闪烁。“数码管显示模块”的作用就是将6位10进制的时间数据BCD码转化成供数码管动态显示的位选和段选数据。该模块在Verilog HDL语言描述下的主要段落如下:always (posedge clk_1k) begincase(count) /选择扫描显示数据3d0:disp_

17、dat = d0;/第一个数码管3d1:disp_dat = d1;/第二个数码管3d2:disp_dat = 4hf;/第三个数码管3d3:disp_dat = d2;/第四个数码管3d4:disp_dat = d3;/第五个数码管3d5:disp_dat = 4hf;/第六个数码管3d6:disp_dat = d4;/d7:4;/第七个数码管3d7:disp_dat = d5;/d3:0;/第八个数码管endcasecase(count)/选择数码管显示位3d0:dig_r = 8b01111111;/选择第一个数码管显示3d1:dig_r = 8b10111111;/选择第二个数码管显示

18、3d2:dig_r = 8b11011111;/选择第三个数码管显示3d3:dig_r = 8b11101111;/选择第四个数码管显示3d4:dig_r = 8b11110111;/选择第五个数码管显示3d5:dig_r = 8b11111011;/选择第六个数码管显示3d6:dig_r = 8b11111101;/选择第七个数码管显示3d7:dig_r = 8b11111110;/选择第八个数码管显示endcaseend如图3.4所示是“数码管显示模块”的封装图,输入包括时钟信号“clk”,复位信号“clr”;数码管显示数据BCD码输入,由低位到高位依次为“d0”、“d1”、“d2”、“d

19、3”、“d4”、“d5”。输出包括:一个8位的段选数码管显示值输出“seg”,一个8位的片选数码管显示哪一个数码管输出“dig”。 图3.4 数码管显示模块第4章 调试、测试分析及结果4.1 调试调试使用的是睿智FPGA开发板,开发板采用核心板与接口板分离的方式,核心板上除FPGA,各类存储器以及用户扩展PACK外,还有按键、LED及电源插座等。因为有用户扩展PACK,核心板完全可以脱离接口板而单独使用,通过PACK,用于自己的设计或电子设计大赛,扩展性很好。接口板上集成了最常用和最经典外围接口,所有的外设经过精心分配及设计,不需要进行任何跳线设置,实验时非常方便!总之,睿智开发板是完全站在用

20、户的角度精心设计开发,简约不简单!同时,睿智FPGA开发板的配套光盘提供相当丰富的实验代码及各种参考文献。4.2 测试分析按键驱动模块波形仿真分析:图4.1 波形仿真结果时、分、秒三个按键的去抖原理完全一样,这里提取小时输入和输出进行波形仿真验证,每一个时钟上升沿h _ out的值都保持和h _ in的值相反,该设计能够达到预期设计要求。按键所绑的开关在开发板上是S1、S2、S3,分别控制小时进位、分钟进位、秒清零。60进制和24进制模块(时、分、秒模块)波形仿真分析:图4.2 波形仿真结果这里提取60进制模块与24进制模块的仿真波形,60进制模块设置qs0、qs1分别为个位、十位,个位计数到

21、9之后清零,十位计数到5之后清零,24进制模块设置qh0、qh1分别为个位、十位,个位计数到9之后清零,十位计数到2之后清零。该设计能够达到预期设计效果。图4.3 按下S3,秒清零,LED1亮 图4.4 按下S2,分钟进位,LED2亮,蜂鸣器响4.3 结果图4.5 按下S1,小时进位,LED3亮图4.6 整点报时,蜂鸣器响1minute第5章 小结在此次课程设计中,遇到的问题主要有以下几个方面:(1)由于Verilog HDL这门语言对自己来说属于一个从未接触过的东西,所以学习起来比较困难。此次课程设计选择的课题是数码管显示数字钟,开始是资料的搜集与设计思路的理清,再有了一定的基础之后,开始对

22、整个大的模块进行分模块分析设计。(2)在实验的过程中,遇到了许多的问题,首先发现自己对软件的运用上存在的一些问题,如刚开始的时候没有生成功能网表,导致最后运行出错;还有没有选功能仿真的时候,波形出现了一些毛刺和延时。(3)设计60进制计数器和24进制计数器也发生了一些问题,原本的设计思路是将个位数字与十位数字分别拆开,用进位信号控制输出,但发现在连接蜂鸣器模块时,进位信号延时太短,导致秒计数器计数计到59以后分钟计数器进位但蜂鸣器和LED灯没有反应,手动按键却可以控制蜂鸣器报警和LED灯闪烁。实验过程中,遇到的小问题不计其数,在多方努力之下,问题基本解决,这里就不一一列举。总结出的宝贵经验就是

23、要多看书,学会自己解决问题,一般的问题在看书找资料之后基本都能解决;还有就是一定要细心,这样可以避免很多不必要的麻烦。对于这一个课程,我依然属于半懂不懂的状态,在今后的学习中,对老师的建议就是可以在刚开始上课的时候就可以给同学布置一些小的作业,然后可以让同学慢慢接触一下软件,学一点浅显的编程,这样在最后写大作业的时候就不会感觉无从下手,以便起到一个循序渐进的作用。参考文献1、周润景等,基于Quartus II的FPGA/CPLD数字系统设计实例,电子工业出版社,20102、夏宇闻,Verilog数字系统设计教程(第二版),北京航空航天大学出版社,2014附录 电路图及程序1. 时钟分频模块mo

24、dule int_div(clock,clk_out);inputclock;/输入时钟outputclk_out;/输出时钟/内部寄存器reg clk_p;/上升沿输出时钟reg clk_n;/下降沿输出时钟regF_WIDTH - 1:0 count_p;/上升沿脉冲计数器regF_WIDTH - 1:0 count_n;/下降沿脉冲计数器/参数-分频系数parameter F_DIV = 48000000;/分频系数-修改这里parameter F_WIDTH = 32; /分频计数器宽度wire full_p;/上升沿计数满标志wire half_p;/上升沿计数半满标志wire fu

25、ll_n;/下降沿计数满标志wire half_n;/下降沿计数半满标志/判断计数标志位置位与否assign full_p = (count_p F_DIV - 1);assign half_p = (count_p 1) - 1);assign full_n = (count_n F_DIV - 1);assign half_n = (count_n 1) - 1);/时钟输出assignclk_out = (F_DIV = 1) ? clock : (F_DIV0 ? (clk_p & clk_n) : clk_p);/上升沿脉冲计数always (posedge clock)begini

26、f(full_p)begincount_p = count_p + 1b1;if(half_p)clk_p = 1b0;elseclk_p = 1b1;endelsebegincount_p = 0;clk_p = 1b0;endend/下降沿脉冲计数always (negedge clock)beginif(full_n)begincount_n = count_n + 1b1;if(half_n)clk_n= 1b0;elseclk_n = 1b1;endelsebegincount_n = 0;clk_n= 1b0;endendendmodule2. 按键驱动模块附录图1 按键驱动模块原

27、理图3. 时钟计数模块3.1 60进制计数器模块(控制分钟、秒)module ji_shu_60(clk,q1,q2,co,rst);output 3:0q1,q2;output co;input clk,rst;reg 3:0q1=0,q2=0; reg co;always (posedge clk or negedge rst )begin if(!rst) /0 begin q1=0; q2=0; end else begin q13:0=q13:0+1; co9) begin q13:0=0; q23:0=q23:0+1; if(q23:05) begin q23:0=0; co9)

28、begin q13:0=0;q23:0=q23:0+1; end if(q1=4)if(q2=2) begin q1=0;q2=0; end end附录图2 时钟计数模块内部原理图 endmodule 4. 整点报时模块module buffer_music ( audio , sys_CLK ,button);output audio; input sys_CLK; input button;reg 23:0 counter4Hz,counter1MHz,counter6MHz;reg 13:0 count,origin;reg audiof;reg clk_6MHz,clk_4Hz;reg

29、 clk_1MHz;reg 4:0 j;reg 7:0 len;/assign audio=audiof ; /控制开关assign audio= button? audiof : 1b1 ;/控制开关 always (posedge sys_CLK) /6MHz分频 开发板晶振为50MHz begin if(counter6MHz=4) begin counter6MHz=0; clk_6MHz=clk_6MHz; end else begin counter6MHz=counter6MHz+1; / end end end/ always (posedge sys_CLK) /4Hz分频

30、begin / if(counter4Hz=2500000) if(counter4Hz=6250000) /50M/4/2 begin counter4Hz=0; clk_4Hz=clk_4Hz; end else begin counter4Hz=counter4Hz+1; end end always (posedge clk_6MHz) begin if(count=16383) begin count=origin; audiof=audiof; end else count=count+1; end always (posedge clk_4Hz) begin case(j) d1

31、:origin=d4916; /low d2:origin=d6168; d3:origin=d7281; d4:origin=d7791; d5:origin=d8730; d6:origin=d9565; d7:origin=d10310; d8:origin=d010647; /middle d9:origin=d011272; d10:origin=d011831; d11:origin=d012087; d12:origin=d012556; d13:origin=d012974; d14:origin=d013346; d15:origin=d13516; /high d16:or

32、igin=d13829; d17:origin=d14108; d18:origin=d11535; d19:origin=d14470; d20:origin=d14678; d21:origin=d14864; default:origin=d011111; endcase endalways (posedge clk_4Hz) /乐谱begin if(len=63) len=0; else len=len+1; case(len)0:j=3;1:j=3;2:j=3;3:j=3;4:j=5;5:j=5;6:j=5;7:j=6;8:j=8;9:j=8;10:j=8;11:j=6;12:j=6

33、;13:j=6;14:j=6;15:j=12;16:j=12;17:j=12;18:j=15;19:j=15;20:j=15;21:j=15;22:j=15;23:j=9;24:j=9;25:j=9;26:j=927:j=9;28:j=9;29:j=9;30:j=9;31:j=9;32:j=9;33:j=9;34:j=10;35:j=7;36:j=7;37:j=6;38:j=6;39:j=5;40:j=5;41:j=5;42:j=6;43:j=8;44:j=8;45:j=9;46:j=9;47:j=3;48:j=3;49:j=8;50:j=8;51:j=8;52:j=5;53:j=5;54:j

34、=8;55:j=5;56:j=5;57:j=5;58:j=5;59:j=5;60:j=5;61:j=5;62:j=5;63:j=5;endcase endendmodule5. 数码管显示模块module scan_led(clk_1k,d0,d1,d2,d3,d4,d5,dig,seg); /模块名scan_ledinput clk_1k; /输入时钟input3:0 d0,d1,d2,d3,d4,d5;/输入要显示的数据output7:0dig; /数码管选择输出引脚output7:0 seg; /数码管段输出引脚reg7:0 seg_r;/定义数码管输出寄存器reg7:0 dig_r;/

35、定义数码管选择输出寄存器reg3:0 disp_dat;/定义显示数据寄存器reg2:0count; /定义计数寄存器assign dig = dig_r;/输出数码管选择assign seg = seg_r;/输出数码管译码结果always (posedge clk_1k) /定义上升沿触发进程begincount = count + 1b1;endalways (posedge clk_1k) begincase(count) /选择扫描显示数据3d0:disp_dat = d0;/第一个数码管3d1:disp_dat = d1;/第二个数码管3d2:disp_dat = 4hf;/第三个

36、数码管3d3:disp_dat = d2;/第四个数码管3d4:disp_dat = d3;/第五个数码管3d5:disp_dat = 4hf;/第六个数码管3d6:disp_dat = d4;/d7:4;/第七个数码管3d7:disp_dat = d5;/d3:0;/第八个数码管endcasecase(count)/选择数码管显示位3d0:dig_r = 8b01111111;/选择第一个数码管显示3d1:dig_r = 8b10111111;/选择第二个数码管显示3d2:dig_r = 8b11011111;/选择第三个数码管显示3d3:dig_r = 8b11101111;/选择第四个数

37、码管显示3d4:dig_r = 8b11110111;/选择第五个数码管显示3d5:dig_r = 8b11111011;/选择第六个数码管显示3d6:dig_r = 8b11111101;/选择第七个数码管显示3d7:dig_r = 8b11111110;/选择第八个数码管显示endcaseendalways (disp_dat)begincase(disp_dat)/七段译码4h0:seg_r = 8hc0;/显示04h1:seg_r = 8hf9;/显示14h2:seg_r = 8ha4;/显示24h3:seg_r = 8hb0;/显示34h4:seg_r = 8h99;/显示44h5:seg_r = 8h92;/显示54h6:seg_r = 8h82;/显示64h7:seg_r = 8hf8;/显示74h8:seg_r = 8h80;/显示84h9:seg_r = 8h90;/显示94ha:seg_r = 8h88;/显示a4hb:seg_r = 8h83;/显示b4hc:seg_r = 8hc6;/显示c4hd:seg_r = 8ha1;/显示

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服