ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:507.99KB ,
资源ID:16505454      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16505454.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA技术课程设计报告Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EDA技术课程设计报告Word格式文档下载.docx

1、本次课程设计要求利用EDA技术,设计一个数码管显示数字钟的样品,数字钟要求具备以下功能:第2章 电路原理数码管显示数字钟设计,运用到8位数码管,要求其中6位数码管动态显示,分别显示时、分、秒的计数,同时对时间进行设置,数字钟的总体功能按照要求可以分为基本的数字时钟显示(具有时、分、秒,计数显示功能,以24小时循环计时)、手动校准(具有清零,调节小时、分钟功能)、整点报时、LED灯花样显示四大部分。其总体功能设计框图如图2.1所示:第3章 程序设计其中,“时钟分频模块”用于对芯片晶振提供的时钟信号进行分频,然后给其他模块分配需要的时钟频率。按键输入的信号经过按键去抖后传送给“时钟计数模块”。正常

2、计数时,“时钟计数模块”将处理好的时、分、秒数据实时传送给“数码管显示模块”,当有来自“按键驱动模块”的信号时,改变相应的时、分、秒计数器中的值,实现调整时间的作用。“数码管显示模块”实时将“时钟计数模块”的数据转换成数码管动态显示信号进行显示。最后,加上一个“整点报时”模块和“LED灯花样显示模块”经过时钟分频信号,传递给“数码管显示模块”,实现所需功能。数字钟设计原理如图3.1所示:3.1 顶层模块设计顶层模块设计如附录图3所示,其RTL电路图如附录图4所示。顶层模块包含四个输入:系统时钟输入“clk”,秒设置信号“sset”,分钟设置信号“mmset”,小时设置信号“hset”。一个8位

3、的段选数码管显示值输出“seg”,一个8位的片选数码管显示哪一个数码管输出“dig”,将输出给数码管进行动态显示。“时钟分频模块”电路符号名为“int _ div”,“按键驱动模块”电路符号名慰“an _ jian”,“时钟计数模块”内部采用三格计数器级联的方式分别驱动时、分、秒计数,秒计数器和分计数器均为60进制计数器,小时计数器为24进制计数器,电路符号名分别为两个“ji _ shu _ 60”和一个“ji _ shu _ 24”。3.2 时钟分频模块设计“时钟分频模块”直接使用老师上课所给的分频程序,加入两个分频模块,及“时钟计数模块”和“按键驱动模块”进行连接。3.3 按键驱动模块设计

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

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

6、13:0=q13:0+1; co9) begin q13:0=0; q23:0=q23: if(q23:5) begin q23:=1;end end else q1=q1;24进制计数器主要Verilog HDL代码如下: co=0; q13: if(q1=4)if(q2=2) begin q1=0;q2=0;如图4.2所示该模块中60进制模块及24进制模块的仿真波形,60进制模块设置qs0、qs1分别为个位、十位,个位计数到9之后清零,十位计数到5之后清零,24进制模块设置qh0、qh1分别为个位、十位,个位计数到9之后清零,十位计数到2之后清零。3.5 整点报时模块整点报时模块的设计思路

7、是当数字钟计数到一个整点时间时,蜂鸣器开始响鸣。蜂鸣器的封装设计如图3.3所示,程序设计为一段乐谱,主要Verilog HDL代码如下:always (posedge clk_4Hz) begin case(j) d1:origin=d4916; /lowd2:d6168;d3:d7281;d4:d7791;d5:d8730;d6:d9565;d7:d10310;d8:d010647; /middled9:d011272;d10:d011831;d11:d012087;d12:d012556;d13:d012974;d14:d013346;d15:d13516; /highd16:d13829

8、;d17:d14108;d18:d11535;d19:d14470;d20:d14678;d21:d14864; default:d011111; endcase always (posedge clk_4Hz) /乐谱begin if(len=63) len=0; len=len+1; case(len)0:j=3;1:2:3:4:j=5;5:6:7:j=6;8:j=8;9:10:11:12:13:14:15:j=12;16:17:18:j=15;19:20:21:22:23:j=9;24:25:26:j=927:28:29:30:31:32:33:34:j=10;35:j=7;36:37:

9、38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:62:63:endcase 3.6 LED灯花样显示模块LED灯花样显示模块是及整点报时模块同时工作,当蜂鸣器响鸣时LED灯闪烁。该模块设计思路较为简单,只需在时分秒的时钟输出端接入一个以低电平驱动的LED邓即可实现。3.7 数码管显示模块设计数码管动态显示的原理是利用人眼的视觉停留,依次点亮每个数码管的位选信号,当第一个数码管被点亮时,将段选信号变为第一个数码管要显示的信息,当第二个数码管被点亮时,将段选信号变为第二个数码管要显示的信息,以此类推,循

10、环扫描。当循环扫描一次所有数码管所用的时间在人眼能反应出图像变化的时间(约为0.02秒)之内时,人自然就会在视觉上看到完整的图像,而不会感到闪烁。“数码管显示模块”的作用就是将6位10进制的时间数据BCD码转化成供数码管动态显示的位选和段选数据。该模块在Verilog HDL语言描述下的主要段落如下:always (posedge clk_1k) case(count) /选择扫描显示数据 3d0:disp_dat = d0; /第一个数码管disp_dat = d1; /第二个数码管disp_dat = 4hf; /第三个数码管disp_dat = d2; /第四个数码管disp_dat =

11、 d3; /第五个数码管 /第六个数码管disp_dat = d4;/d7:4; /第七个数码管disp_dat = d5;/d3:0; /第八个数码管 endcase case(count) /选择数码管显示位dig_r = 8b01111111; /选择第一个数码管显示b10111111; /选择第二个数码管显示b11011111; /选择第三个数码管显示b11101111; /选择第四个数码管显示b11110111; /选择第五个数码管显示b11111011; /选择第六个数码管显示b11111101; /选择第七个数码管显示b11111110; /选择第八个数码管显示如图3.4所示是“

12、数码管显示模块”的封装图,输入包括时钟信号“clk”,复位信号“clr”;数码管显示数据BCD码输入,由低位到高位依次为“d0”、“d1”、“d2”、“d3”、“d4”、“d5”。输出包括:一个8位的段选数码管显示值输出“seg”,一个8位的片选数码管显示哪一个数码管输出“dig”。第4章 调试、测试分析及结果4.1 调试调试使用的是睿智FPGA开发板,开发板采用核心板及接口板分离的方式,核心板上除FPGA,各类存储器以及用户扩展PACK外,还有按键、LED及电源插座等。因为有用户扩展PACK,核心板完全可以脱离接口板而单独使用,通过PACK,用于自己的设计或电子设计大赛,扩展性很好。接口板上

13、集成了最常用和最经典外围接口,所有的外设经过精心分配及设计,不需要进行任何跳线设置,实验时非常方便!总之,睿智开发板是完全站在用户的角度精心设计开发,简约不简单!同时,睿智FPGA开发板的配套光盘提供相当丰富的实验代码及各种参考文献。4.2 测试分析按键驱动模块波形仿真分析:时、分、秒三个按键的去抖原理完全一样,这里提取小时输入和输出进行波形仿真验证,每一个时钟上升沿h _ out的值都保持和h _ in的值相反,该设计能够达到预期设计要求。按键所绑的开关在开发板上是S1、S2、S3,分别控制小时进位、分钟进位、秒清零。60进制和24进制模块(时、分、秒模块)波形仿真分析:这里提取60进制模块

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

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

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

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

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

19、+ 1b1; if(half_p) clk_p = 1b0; else= 0; clk_p /下降沿脉冲计数always (negedge clock) if(full_n) count_n = count_n + 1 if(half_n) clk_n clk_n clk_nendmodule2.按键驱动模块附录图1 按键驱动模块原理图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;al

20、ways (posedge clk or negedge rst ) /assign co=(q2,q1=8b01011001) ? 1:0); endmodule 3.2 24进制计数器模块(控制小时)module ji_shu_24(clk,q1,q2);input clk;reg co;always (posedge clk )q13:9) begin q13:q23: if(q1=4)if(q2=2) begin q1=0;4.整点报时模块module buffer_music ( audio , sys_CLK ,button);output audio; input sys_CLK

21、; input button;reg 23:0 counter4Hz,counter1MHz,counter6MHz;reg 13:0 count,origin;reg audiof;reg clk_6MHz,clk_4Hz;reg clk_1MHz;reg 4:0 j;reg 7:0 len;/assign audio=audiof ; /控制开关assign audio= button? audiof : 1b1 ;/控制开关 always (posedge sys_CLK) /6MHz分频 开发板晶振为50MHz if(counter6MHz=4) counter6MHz=0; clk_6MHz=clk_6MHz; counter6MHz=counter6MHz+1; / end/ always (posedge sys_CLK) /4Hz分频 / if(counter4Hz=2500000) if(counter4Hz=6250000) /50M/4/2 counter4Hz=0; clk_4Hz=clk_4Hz; counter4Hz=counter4Hz+1; always (posedge clk_6MHz)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1