FPGA课程设计多功能数字钟讲解.pdf

上传人:白大夫 文档编号:5402640 上传时间:2020-05-01 格式:PDF 页数:20 大小:1.80MB
返回 下载 相关 举报
FPGA课程设计多功能数字钟讲解.pdf_第1页
第1页 / 共20页
FPGA课程设计多功能数字钟讲解.pdf_第2页
第2页 / 共20页
FPGA课程设计多功能数字钟讲解.pdf_第3页
第3页 / 共20页
FPGA课程设计多功能数字钟讲解.pdf_第4页
第4页 / 共20页
FPGA课程设计多功能数字钟讲解.pdf_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《FPGA课程设计多功能数字钟讲解.pdf》由会员分享,可在线阅读,更多相关《FPGA课程设计多功能数字钟讲解.pdf(20页珍藏版)》请在三一文库上搜索。

1、多功能数字钟 开课学期: 20142015 学年第二学期 课程名称:FPGA 课程设计 学院:信息科学与工程学院 专业: 集成电路设计与集成系统 班级: 学号: 姓名: 任课教师: 2015 年 7 月 21 日 1 说明 一、论文书写要求与说明 1. 严格按照模板进行书写。自己可以自行修改标题的题目 2. 关于字体: a) 题目:三号黑体加粗。 b) 正文:小四号宋体,行距为1.25 倍。 3. 严禁抄袭和雷同,一经发现,成绩即判定为不及格! ! 二、设计提交说明 1.设计需要提交“电子稿”和“打印稿” ; 2. “打印稿”包括封面、说明(即本页内容)、设计内容三部分;订书机 左边装订。 3

2、. “电子稿”上交:文件名为“ FPGA 课程设计报告 - 班级- 学号-姓名.doc ” , 所有报告发送给班长,由班长统一打包后统一发送到付小倩老师。 4.“打印稿”由班长收齐后交到:12 教 305办公室; 5. 上交截止日期: 2015年 7 月 31日 17:00 之前。 2 第一章绪论 3 关键词: FPGA ,数字钟 3 第二章 FPGA 的相关介绍 . 4 2.1 FPGA 概述 4 2.2 FPGA 特点 . 4 2.3 FPGA 设计注意 . 5 第三章 Quartus II 与 Verilog HDL 相关介绍 7 3.1 Quartus II 7 3.2 Verilog

3、 HDL 7 第四章 设计方案 8 4.1 数字钟的工作原理 8 4.2 按键消抖 . 8 4.3 时钟复位 8 4.4 时钟校时 8 4.5 数码管显示模块。 8 第五章 方案实现与验证 9 5.1 产生秒脉冲 9 5.2 秒个位进位 9 5.3 按键消抖 9 5.4 复位按键设置 10 5.5 数码管显示。 . 10 5.6 RTL 结构总图 11 第六章 实验总结 14 第七章 Verilog HDL 源代码附录 15 3 第一章绪论 现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂 程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造 工

4、艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者 的代表就是电子设计自动化(electronic design automatic, EDA)技术。 本设计采用的 VHDL 是一种全方位的硬件描述语言, 具有极强的描述能力, 能支持 系统行为级、寄存器传输级和逻辑门级这三个不同层次的设计;支持结构、数据流、行 为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。 ASIC 是专用的系统集成电路,是一种带有逻辑处理的加速处理器;而FPGA 是特殊的 ASIC 芯片,与其它的ASIC 芯片相比,它具有设计开发周期短、设计制造成本低、开 发工具先进、

5、标准产品无需测试、质量稳定以及可实时在线检测等优点。 在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时 候,系统应该完成该键所对应的功能。因此,按键信息输入是与软件结构密切相关的过 程。根据键盘结构的不同,采用不同的编码方法,但无论有无编码以及采用什么样的编 码,最后都要转换成为相应的键值,以实现按键功能程序的转移。1 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报 时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种 定时电气的自动启用等,所有这些都是以钟表数字化为基础的。因此研究数字钟以及扩 大其应用有着非常现实的意

6、义。 关键词 :FPGA ,数字钟 4 第二章FPGA 的相关介绍 FPGA (FieldProgrammable Gate Array ) , 即现场可编程门阵列, 它是在 PAL、 GAL 、 CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域 中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门 电路数有限的缺点。 2.1 FPGA 概述 系统设计师可以根据需要通过可编辑的连接把FPGA 内部的逻辑块连接起来, 就好 像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA 的逻辑块和连接可以 按照设计者而改变,所以FPGA

7、可以完成所需要的逻辑功能。 FPGA 一般由 3 种可编程电路和一个用于存放编程数据的静态存储器SRAM 组成。 这 3 种可编程电路是:可编程逻辑模块(CLB-Configurable Logic Block ) 、输入/输出模 块(IOB-I/O Block)和互连资源( IRInterconnect Resource ) 。可编程逻辑模块CLB 是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编 程输入 /输出模块( IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯 片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各 个

8、CLB 之间或 CLB、IOB 之间以及 IOB 之间连接起来,构成特定功能的电路。 FPGA 一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而 且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程 序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为 这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA 上完成的,然 后将设计转移到一个类似于ASIC 的芯片上。另外一种方法是用CPLD(复杂可编程逻 辑器件备)。 2.2 FPGA 特点 FPGA 的基本特点主要有: 1)采用 FPGA 设计 ASIC 电路,

9、用户不需要投片生产,就能得到合用的芯片。 2)FPGA 可做其它全定制或半定制ASIC 电路的中试样片。 3)FPGA 内部有丰富的触发器和IO 引脚。 5 4)FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。 5)FPGA 采用高速 CHMOS 工艺,功耗低,可以与CMOS、TTL 电平兼容。 可以说, FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 编程互连资源 IR 可以将 FPGA 内部的 CLB 和 CLB 之间、 CLB 和 IOB 之间连接起 来,构成各种具有复杂功能的系统。 FPGA 是由存放在片内RAM 中的程序来设置其工作状态

10、的,因此,工作时需要对 片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时, FPGA 芯片将 EPROM 中数据读入片内编程RAM 中,配置完成后, FPGA 进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反 复使用。 FPGA 的编程无须专用的FPGA 编程器,只须用通用的EPROM、PROM 编程 器即可。当需要修改FPGA 功能时,只需换一片EPROM 即可。这样,同一片FPGA, 不同的编程数据,可以产生不同的电路功能。因此,FPGA 的使用非常灵活。 FPGA 有多种配置模式:并行主模式为一片FPGA 加一片 EP

11、ROM 的方式;主从模 式可以支持一片 PROM 编程多片 FPGA;串行模式可以采用串行PROM 编程 FPGA; 外 设模式可以将 FPGA 作为微处理器的外设,由微处理器对其编程。 2.3 FPGA 设计注意 不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只 要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好 器件配置、电源管理、 IP 集成、信号完整性和其他的一些关键设计问题。不过,你不必 独自面对这些挑战, 因为在当前业内领先的FPGA 公司里工作的应用工程师每天都会面 对这些问题, 而且他们已经提出了一些将令你的设计工作变得更轻松

12、的设计指导原则和 解决方案。 本次实验所采用的FPGA 器件是 Altera Cyclone V 5CSEMA5F31C6N FPGA 实物图 6 FPGA 数码管介绍,每节数码管低电平点亮高电平熄灭。 LED 序号如下图所示: 根据上图所示的顺序,可以得出显示的数组代码。 4d0: HEX0=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX0=7b1111001; /1 4d2: HEX0=7b0100100; /2 4d3: HEX0=7b0110000; /3 4d4: HEX0=7b0011001; /4 4d5: HEX0=7b0010010; /5 4d6: HE

13、X0=7b0000010; /6 4d7: HEX0=7b1111000; /7 4d8: HEX0=7b0000000; /8 4d9: HEX0=7b0010000; /9 default: HEX0=7b1111111; /不符合条件的显示零 7 第三章Quartus II 与 Verilog HDL 相关介绍 3.1 Quartus II Quartus II 是 Altera 公司的综合性 PLD/FPGA 开发软件,原理图、 VHDL 、 VerilogHDL 以及 AHDL (Altera Hardware 支持 Description Language )等多种设计输入形式,内

14、嵌 自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程。 Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模块库, 使用户可 以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA 工具 的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA 工具。 Quartus II 软件拥有友好的界面,使用便捷,功能强大,当中可编程逻辑设计环境 采用完成集成化,是先进的EDA 工具软件。该软件具备诸多特点(例如:开放性,与 结构无联系,多平台设计,完全集成化,设计库丰富、工具模块化等),支持原理图

15、、 VHDL 、VerilogHDL 以及 AHDL 等多种设计输入形式。 Quartus II 能够在多系统上使用, 为用户的设计方式提供了完善的图形界面。具有运行速度快,界面统一,功能集中,学 用简单等特点。 图形或 HDL 编辑 Analysis if(count=32d50000000) /产生一个一秒的脉冲 , begin count=0; count_s0=count_s0+1; /秒个位计数 end 如代码展现,当计数器count 记到 50000000个时钟上升沿的时候,向秒个位进1. 5.2 秒个位进位 if(count_s0=4d10) begin count_s0=0;

16、count_s1=count_s1+1; /产生秒十位进位 end 当秒的个位计数到10 的时候,向秒的十位进位。 5.3 按键消抖 if (!inrst_m0) count0=count0+1; if(count0=32d8000000 count_m0=count_m0+1; end 10 对时钟秒冲进行计数, 计数达到 8000000时, 判断此时的电平是否为0, 若还是为 0, 则判断按键按下,执行分钟个位加1 操作。 5.4 复位按键设置 begin if (!reset) /按键按下为逻辑0 begin count=0; /复位置零 count_s0=0;count_s1=0; c

17、ount_m0=0;count_m1=0; count_h0=0;count_h1=0; end else 复位按键按下后所有位置零。 5.5 数码管显示。 always(count_s0) /秒个位显示 begin case(count_s0) 4d0: HEX0=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX0=7b1111001; /1 4d2: HEX0=7b0100100; /2 4d3: HEX0=7b0110000; /3 4d4: HEX0=7b0011001; /4 4d5: HEX0=7b0010010; /5 4d6: HEX0=7b0000010;

18、/6 4d7: HEX0=7b1111000; /7 4d8: HEX0=7b0000000; /8 4d9: HEX0=7b0010000; /9 default: HEX0=7b1111111; /不符合条件的显示零 endcase end 11 5.6 RTL 结构总图 显示部分如下图: 判断主体如下图: 12 部分引脚图展现 13 最终实验现象: 14 第六章 实验总结 其实本次的多功能数字钟设计其实应该还有很多其他的方法,比如用到外部中断功 能进行时钟的校时,采用按键输入加数码管闪烁的方式进行校时位的选择,但限于时间 较短,这部分知识空白,所以本次设计实有所缺陷。 经历了本次 FPG

19、A 的设计,有很多感受,首先就是看了一点数字钟设计方面的资料, 遇到很多不理解的地方,于是就需要再和同学进行研究讨论,在讨论的过程中,能听到 其他人的思路,感觉特别有意思,同样的功能,实现的方法有许许多多,努力把自己的 想法实现,或是选择一种你喜欢的设计借鉴一下,两者都是很好的选择。 通过这次设计实验,着实培养了我们独立思考、解决问题的能力,从最一开始的一 筹莫展,没有一点思路,感觉像平底拔楼一样,从两手空空到产生一个控制电路,从无 到有,这是创造的力量。同时,和其他同学讨论的过程也很重要, 要说的还有就是最后实验成功的喜悦是无可替代的,就好像你亲手种的果树长出了 果实,养的鸡下了鸡蛋, 是一

20、种创造的喜悦, 整个心就像是一个大箱子里面放着一块糖, 隐隐约约总能感觉到一丝甜蜜。 数码管显示的数字钟是常见的技术,这次基于FPGA 的多功能数字钟设计具有很高 的工程价值和现实意义。让我们将知识服务于生活,将知识用于实践,锻炼了我们发现 问题解决问题的能力。 这次 FPGA 的多功能数字钟设计,加深了我们对FPGA 设计的理解,培养了我们的 逻辑思维和动手操作能力,使我们将知识与技能链接起来,使我们每个人的都在不断进 步,提高了专业技能,提高了动手实践的综合能力。 15 第七章 Verilog HDL 源代码附录 module clock (reset,inrst_m0,inrst_h0,

21、clk,HEX0,HEX1,HEX2,HEX3,HEX4,HEX5); input clk,reset,inrst_m0,inrst_h0; output reg 6:0 HEX0,HEX1,HEX2,HEX3,HEX4,HEX5; reg 31:0 count=0,count0=0,count1=0; /实际宽度为 25 reg 3:0 count_s0=0,count_s1=0, count_m0=0,count_m1=0, count_h0=0,count_h1=0; always(posedge clk) begin if (!inrst_m0) count0=count0+1; if

22、(count0=32d8000000 count_m0=count_m0+1; end if (!inrst_h0) count1=count1+1; if(count1=32d8000000 count_h0=count_h0+1; end if (!reset) /按键按下为逻辑0 begin count=0; /复位置零 count_s0=0;count_s1=0; count_m0=0;count_m1=0; count_h0=0;count_h1=0; end else count=count+1; if(count=32d50000000) /产生一个一秒的脉冲 , begin 1

23、6 count=0; count_s0=count_s0+1; /秒个位计数 end else if(count_s0=4d10) begin count_s0=0; count_s1=count_s1+1; /产生秒十位进位 end else if(count_s1=4d6) begin count_s1=0; count_m0=count_m0+1; end else if(count_m0=4d10) /分个位计数 begin count_m0=0; count_m1=count_m1+1; end else if(count_m1=4d6) /分十位计数 begin count_m1=

24、0; count_h0=count_h0+1; end else if(count_h0=4d10) /时个位计数 begin count_h0=0; count_h1=count_h1+1; end else if(count_h0=4 count_h1=0; end end always(count_s0) /秒个位显示 begin case(count_s0) 4d0: HEX0=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX0=7b1111001; /1 4d2: HEX0=7b0100100; /2 4d3: HEX0=7b0110000; /3 4d4: HEX

25、0=7b0011001; /4 4d5: HEX0=7b0010010; /5 4d6: HEX0=7b0000010; /6 4d7: HEX0=7b1111000; /7 4d8: HEX0=7b0000000; /8 4d9: HEX0=7b0010000; /9 default: HEX0=7b1111111; /不符合条件的显示零 endcase end always(count_s1) /秒十位显示 begin case(count_s1) 4d0: HEX1=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX1=7b1111001; /1 4d2: HEX1=7b

26、0100100; /2 4d3: HEX1=7b0110000; /3 4d4: HEX1=7b0011001; /4 4d5: HEX1=7b0010010; /5 default: HEX1=7b1111111; /不符合条件的显示零 endcase 18 end always(count_m0) /分个位显示 begin case(count_m0) 4d0: HEX2=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX2=7b1111001; /1 4d2: HEX2=7b0100100; /2 4d3: HEX2=7b0110000; /3 4d4: HEX2=7b0

27、011001; /4 4d5: HEX2=7b0010010; /5 4d6: HEX2=7b0000010; /6 4d7: HEX2=7b1111000; /7 4d8: HEX2=7b0000000; /8 4d9: HEX2=7b0010000; /9 default: HEX2=7b1111111; /不符合条件的显示零 endcase end always(count_m1) /分十位显示 begin case(count_m1) 4d0: HEX3=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX3=7b1111001; /1 4d2: HEX3=7b01001

28、00; /2 4d3: HEX3=7b0110000; /3 4d4: HEX3=7b0011001; /4 4d5: HEX3=7b0010010; /5 default: HEX3=7b1111111; /不符合条件的显示零 endcase end always(count_h0) /时个位显示 begin case(count_h0) 4d0: HEX4=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX4=7b1111001; /1 19 4d2: HEX4=7b0100100; /2 4d3: HEX4=7b0110000; /3 4d4: HEX4=7b001100

29、1; /4 4d5: HEX4=7b0010010; /5 4d6: HEX4=7b0000010; /6 4d7: HEX4=7b1111000; /7 4d8: HEX4=7b0000000; /8 4d9: HEX4=7b0010000; /9 default: HEX4=7b1111111; /不符合条件的显示零 endcase End always(count_h1) /时十位显示 begin case(count_h1) 4d0: HEX5=7b1000000; /0 低电平点亮高电平熄灭 4d1: HEX5=7b1111001; /1 4d2: HEX5=7b0100100; /2 default: HEX5=7b1111111; /不符合条件的显示零 endcase end endmodule

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1