可编程逻辑器件实验报告完整版_第1页
可编程逻辑器件实验报告完整版_第2页
可编程逻辑器件实验报告完整版_第3页
可编程逻辑器件实验报告完整版_第4页
可编程逻辑器件实验报告完整版_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2012秋可编程逻辑器件课程设计报告2012秋可编程逻辑器件课程设计报告报告题目:数字钟实验报告 姓名学号邮箱成绩组长组员1 设计内容概述1.1 功能概述: 一个具有计秒、计分、复位的数字钟,数字钟从0开始计时,计满60秒后自动清零,分钟加1,最大计时显示59分59秒。用A7按键作为系统时钟复位,复位后全部显示00 00,重新开始计时。1.2 输入输出接口:NET clk LOC = B8 ; NET dula0 LOC = L14 ; NET dula1 LOC = H12 ; NET dula2 LOC = N14 ; NET dula3 LOC = N11 ; NET dula4 LOC

2、 = P12 ; NET dula5 LOC = L13 ;NET dula6 LOC = M12 ; NET dula7 LOC = N13 ; NET rst LOC = A7 ;NET wela0 LOC = F12 ; NET wela1 LOC = J12 ; NET wela2 LOC = M13 ; NET wela3 LOC = K14 ; 2 系统框图及模块划分 采用自顶向下分层设计思想的大概设计示意图如下:计时器 秒计数 分计数 动态显示 60进制3 组员任务划分 1:负责本课题的开展,组织,协调及任务分配与安排问题,查找课题相关资料,完成主程序,及接口控制文件的编写。 2

3、:完成分频器模块的程序编写,以及最后的报告整理。 3:查找课题相关资料,参与子程序计数器模块的编写。 4:完成数码管部分程序的编写,并完成程序的仿真及测试。张4 各模块详细设计4.1 模块1:分频器4.1.1 功能: 分频器,能将高频脉冲变换为低频脉冲,它可由触发器以及计数器来完成。由于一个触发器就是一个二分频器,N个触发器就是2N个分频器。如果用计数器作分频器,就要按进制数进行分频。例如十进制计数器就是十分频器,M进制计数器就为M分频器。 一般使用的石英晶体振荡器频率为32768HZ,要想用该振荡器得到一个频率为1HZ的秒脉冲信号,就需要用分频器进行分频,分频器的个数为2N= 32768HZ

4、,N =15 即有15个分频器。这样就将一个频率为32768HZ的振荡信号降低为1HZ的计时信号,这样就满足了计时规律的需求:60秒=1分钟,60分=1小时。 输入输出接口定义表1 模块1输入输出接口定义信号名称方向位宽说明rclkin1系统时钟rstin1系统复位信号,低有效dclkout1分频输出4.1.2 模块详细设计思路: 分频器模块用verilog语言实现采用“计数-翻转”的方法。在模块中,当计数变量计数至某一值n时输出信号翻转一次,如此循环,便可以输出占空比为50%的方波信号,设计程序为:module DIV_FRE(rclk,dclk,rst);input rclk;input

5、rst;output dclk;reg dclk;parameter DIV=50;reg25:0 buff=26d0;always (posedge rclk or posedge rst)beginif(rst)beginbuff=0;dclk=0;endelsebeginif(buff=DIV-1)beginbuff=0;dclk=1;endelsebegindclk=0;buff=buff+1;endendendEndmodule4.2 模块2:计数器4.2.1 功能:4.2.2 计时器包括分计数、秒计数,其中秒计数变化的频率和1Hz时钟信号的频率是一样的。在时钟运行的过程中有几个时间

6、节点是需要特别注意的:59秒、59分59秒,这两个时刻将会产生进位,59分59秒这个时刻时间将会归零,只要注意这几个时刻的判断并采取相应的措施便可完成正常的计数。表2 模块2输入输出接口定义信号名称方向位宽说明clkin1系统时钟rstin1系统复位信号,低有效numout1计数输出4.2.3 模块详细设计思路: 本设计中计时器模块完全采用verilog语言描述,计时器的基本原理是利用两个模60计数器,串连工作,同时采用一个时钟统一控制。其程序如下: module counter_num(clk,num,rst);input clk;input rst;output3:0 num;reg3:0

7、 num=4d0;parameter COUNTER=10;initial beginnum=4d0;endalways (posedge clk or posedge rst)beginif(rst)beginnum=4d0;endelsebeginif(num=COUNTER-1)num=4d0;else num=num+1;endendEndmodule4.3 模块3:数码管4.3.1 功能: 动态显示时间数据,前两位表示分,后两位表示秒。4.3.2 设计思路: 动态显示4位数据时,需要一个4选1数据选择器、一个16选4数据选择器,和一个7段显示译码器协调工作。4选1数据选择器的作用是选

8、择点亮的数码管,16选4数据选择器的作用是选择对应数码管应该输出的数据,7段显示译码器的作用是对BCD码进行译码,便于数码管显示。分为控制部分和计数部分。控制模块:module digit_num_fluid_display_4bit(clk,num0,num1,num2,num3,wela,dula,rst ); input clk; input rst; input3:0 num0; input3:0 num1; input3:0 num2; input3:0 num3; output3:0 wela; output7:0 dula; wire3:0 num; reg3:0 num_buf

9、f; wire1:0 pos; reg1:0 pos_buff; reg1:0 i=2b0; assign num=num_buff; assign pos=pos_buff; digit_led_display_1bit led_display ( .clk(clk), .num(num), .pos(pos), .dula(dula), .wela(wela) ); always(posedge clk or posedge rst) beginif(rst)begini=2b00;pos_buff=2b00;num_buff=0;endelsebegincase(i)2b00: begi

10、n pos_buff=2b00;num_buff=num0;end2b01:begin pos_buff=2b01;num_buff=num1;end2b10:begin pos_buff=2b10;num_buff=num2;end2b11: begin pos_buff=2b11;num_buff=num3;endendcasei=i+1;end endendmodule计数模块:module digit_led_display_1bit( /display digit led 1bit clk, /clk of refresh num, /the num to display pos,

11、/the position dula, /duan bianma wela); input clk; input3:0 num; input1:0 pos; output7:0 dula; output3:0 wela; reg7:0 dula=8b1111_1111; reg3:0 wela=4b1111; parameter7:0 num_0=8b1100_0000, num_1=8b1111_1001, num_2=8b1010_0100, num_3=8b1011_0000, num_4=8b1001_1001, num_5=8b1001_0010, num_6=8b1000_0010

12、, num_7=8b1111_1000, num_8=8b1000_0000, num_9=8b1001_0000 ;always(posedge clk)begincase(pos)2b00: wela=4b1110;2b01: wela=4b1101;2b10: wela=4b1011;2b11: wela=4b0111;endcasecase(num)4b0000: dula=num_0;4b0001: dula=num_1;4b0010: dula=num_2;4b0011: dula=num_3;4b0100: dula=num_4;4b0101: dula=num_5;4b0110

13、: dula=num_6;4b0111: dula=num_7;4b1000: dula=num_8;4b1001: dula=num_9;endcaseendEndmodule5 仿真与测试及实验结果: 测试文件: module testclock;/ Inputsreg clk;reg rst;/ Outputswire 7:0 dula;wire 3:0 wela;/ Instantiate the Unit Under Test (UUT)clock uut (.clk(clk), .dula(dula), .wela(wela), .rst(rst);initial begin/ I

14、nitialize Inputsclk = 0;rst = 1;/ Wait 100 ns for global reset to finish#100;rst = 1b0; / Add stimulus hereend always #5 clk = clk; endmodule仿真时序图:实验结果:在实验板上显示如下:59分08秒:0分1秒:18分04秒:6 课程设计总结及设计心得 通过本次设计,学习了FPGA的知识,对FPGA的应用有了一定的认识,本次设计的主要工作和成果如下 1、在学习了verilong语言的基础上,能地运用verilong语言进行电路设计。 2、运用自顶向下的设计思想

15、,对计时器各个功能模块进行分解设计。 3、进行仿真验证了整个模块功能的正确性。 4、将各个模块连接,组成一个系统,并在不断调试中发现问题,并及时解决。 5、在实验板上形成计时器的完整作品。个人心得: 1: 在此次实验的过程中我也有过挫折有不太清楚明了的地方,但是我并没有气馁,遇到困难我总是先自己寻找失败的原因,仔细的检查分析,请教同学、请教老师。在这一过程中我对FPGA的掌握有了更进一步的见解, 我和我的组员分工合作,各自完成自己的模块,大家相互学习,相互提高。我相信自己定能在以后的实验课中能学到更多方面的知识,成为一个全面发展的学践型学生。2:通过参加这次实验,我学到了很多东西,首先我通过听

16、老师讲述、查阅书本、网络等多种渠道学习了FPGA的知识。在学习的过程中,我既体会到了学习的乐趣,又提高了合作能力,还懂得了对于我们在做事过程中发现的问题要冷静的思考,不要盲目的进行。在这次设计过程中所得到的体会,在过去是没有过的,在书本中是也是无法找到的。我以后将更努力的学习这方面的知识。3: 在学习FPGA的整个过程中,我建立起对FPGA学习的兴趣,遇到困难时要勇于面对它,并想办法解决。要对数字系统设计有比较全面的把握,如寄存器、内存、计数器、DSP等,尽力拓宽自己的知识面,比如数字电路、高速时钟系统、电路工艺方面及系统设计等。 结合具体项目进行设计开发应用,这样才能有一个明确的进步方向。尝试着从硬件底层起进行一些开发和设计。多动手,增加实践经验。多借用成功者的经

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论