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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(时钟设计及数码管驱动论文.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

时钟设计及数码管驱动论文.docx

1、时钟设计及数码管驱动论文基于FPGA的时钟设计及数码管驱动(VHDL语言、实现)摘要本设计为一个显示10毫秒、秒钟、分钟、时钟的跑表。利用开发平台的8个数码管设计一个跑表,包括时钟、分钟、秒钟以及10毫秒的显示。它们分别占用两个数码管,显示其个位和十位。本设计采用FPGA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在xilinxISE工具软件环境下,由各个基本模块共同构建了一个基于FPGA的数字钟。本设计小组成员共有三人:其他两人采用Verilog HDL语言设计时钟代码。关键词:FPGA;数字时钟设计;数码管目录1 FPGA简介 1.1 FPGA概述 1.2 FPGA的应用领域

2、2 时钟设计方案 2.1时钟设计的原理 3 时钟总体设计 3.1 时钟代码程序的设计 3.2 引脚分配 4 实验步骤与结果 4.1 实验步骤 4.2 仿真波形 5 实验心得 1.1 FPGA概述FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74

3、电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步。1.2 FPGA的应用领域: FPGA所具有的无限次可重复编程能力,灵活的体系结构,丰富的触发器及布线资源等一系列的特点使得它可以满足电子产品设计的多种需

4、求。FPGA的应用领域主要集中在替换通用逻辑和复杂逻辑、重复编程使用、板极设计集成、高速计数器、加减法器、累加器和比较器的实现、总线接口逻辑等方面。 应用和开发FPGA必须对器件的性能有一个全面了解,例如对器件的容量、速度、功耗,接口要求和引脚数目等进行综合考虑,同时还要注意以下几个细节问题: 时序电路应用“上电”复位电路,保证开机加电后,置时序电路于初始状态; 器件的电源与地引脚必须并接一只0.1F的无感电容,起滤波和去耦作用; 不能采用数目是偶数的反向器串联的方法构成“延时电路”,一则延时的时间不准确,二则自动编译时会作为冗余电路被简化掉; 主要的全局缓冲器必须由半专用的焊盘驱动,次要的全

5、局缓冲器可以来源于半专用的焊盘或内部网线; 引脚之间严禁短路,忌用万用表直接测量器件引脚; 器件的I/ O口如被定义为输出端,忌对该端加信号,否则将损坏芯片; 低功耗的器件如接负载过大时,不仅会使所用器件的工作效率显著降低,甚至会损伤芯片。 2.1 实验原理:数码管引脚为10个,其中上下两排引脚的中间一个为公共极,其余八个为显示控制引脚。按照公共极有效电平的不同,分为共阳极和共阴极两种类型。其中,公共极是指公共端(上下两排引脚的中间一个)接高电平,控制显示引脚接低时对应的段发光。共阴极是指公共端接低电平,控制显示引脚接高时对应的段发光。数码管的发光颜色常见有红色和绿色。本开发平台采用的数码管为

6、共阴极数码管。该部分的原理图如下图所示,八个数码管用一个3-8译码器来选通当前显示的数码管。 首先需要将系统的50M时钟分频,产生10毫秒信号;其次,需要对10毫秒计数,每100次秒钟加1,秒钟满60,分钟加1,依次类推。10毫秒个位和十位之间为十进制,秒钟、分钟、时钟的十位和个位之间也是10进制,但是秒钟和分钟之间,分钟和时钟之间都是60进制,在显示部分,需要实现10进制数据的显示,要设计译码电路;最后,由于8个数码管3-8译码器控制,需要对数码管扫描显示,因此,还要有扫描电路。要注意的是,扫描的速度不能太快也不能太慢,否则将会看到闪烁,一般将扫描速度设为us级别。综上所述,时钟设计框图如图

7、所示:3.1 VHDL源代码:library ieee;use ieee.std_logic_1164.all;use ieee_std_logic_unsigned.all;entity clock is Port ( clk : in STD_LOGIC; SMG_CS : out STD_LOGIC; SMG_D : out STD_LOGIC_VECTOR (7 downto 0); SMG_SEL : out STD_LOGIC_VECTOR (1 to 3);end clock;architecture Behavioral of clock issignal sel:std_lo

8、gic_vector(2 downto 0);signal clk1,clk2:std_logic;signal a0,a1,a2,a3,a4:std_logic_vector(3 downto 0);signal a5:std_logic_vector(3 downto 0):1001;signal a6:std_logic_vector(3 downto 0):0101;signal a7:std_logic_vector(3 downto 0):0011;signal a8:std_logic_vector(3 downto 0):0010;signal disp:std_logic_v

9、ector(3 downto 0);signal smg_sl:std_logic_vector(3 downto 1);beginSMG_CS=1; process(clk) variable cnt:integer range 0 to 50000; begin if clkevent and clk=1then cnt:=cnt+1; if cnt 25000then clk1=0; elsif cnt50000 then clk1=1; else cnt:=0; clk1=0; end if; end if;end process;process (clk1)beginif clkev

10、ent and clk=1 then if a09 then a0=a0+1; elsif a19 then a1=a1+1; a0=0000; elsif a29 then a2=a2+1; a0=0000; a1=0000; elsif a39 then a3=a3+1; a0=0000; a1=0000; a2=0000; elsif a45 then a4=a4+1; a0=0000; a1=0000; a2=0000; a3=0000; elsif a59 then a5=a5+1; a0=0000; a1=0000; a2=0000; a3=0000; a4=0000; elsif

11、 a65 then a6=a6+1; a0=0000; a1=0000; a2=0000; a3=0000; a4=0000; a5=0000;elsif a73 then a7=a7+1; a0=0000; a1=0000; a2=0000; a3=0000; a4=0000; a5=0000; a6=0000;elsif a82 then a8=a8+1; a0=0000; a1=0000; a2=0000; a3=0000; a4=0000; a5=0000; a6=0000; a7=0000; elsif a0=0000; a1=0000; a2=0000; a3=0000; a4=0

12、000; a5=0000; a6=0000; a7=0000; a8=0000; end if; end if;end process; process(clk) variable cnt:integer range 0 to 25000; begin if clkevent and clk=1then cnt:=cnt+1; if cnt112500 then clk2=0; elsif cnt150000 then clk2=1; else cnt1:=0; clk2=0; end if; end if;end process; process(clk2) variable cnt:int

13、eger range 0 to 50000; begin if clk2event and clk2=1then seldisp=a1;smg_sldisp=a1;smg_sldisp=a1;smg_sldisp=a1;smg_sldisp=a1;smg_sldisp=a1;smg_sldisp=a1;smg_sldisp=a1;smg_sldisp=0000; end case; end if;end process; SMG_SELSMG_DSMG_DSMG_DSMG_DSMG_DSMG_DSMG_DSMG_DSMG_DSMG_DSMG_D=00000000; end case; end

14、process;end Behavioral;3.2 引脚分配表如下:名称信号名FPGA引脚时钟ClkAA12七段数码管片选SMG_CSA6七段数码管位选SMG_SELC8七段数码管位选SMG_SELB20七段数码管位选SMG_SELA20七段数码管输出SMG_DC11七段数码管输出SMG_DE11七段数码管输出SMG_DE10七段数码管输出SMG_DC12七段数码管输出SMG_DE12七段数码管输出SMG_DE13七段数码管输出SMG_DF13七段数码管输出SMG_DD134.1 实验步骤和结果: 实验步骤如下: 新建一个工程; 编辑HDL源代码; 编译并仿真; 仿真无误后,进行管脚分配,再

15、运行,生成.bit文件; 用下载电缆通过JTAG口将对应的.bit文件加载到FPGA中。观察实验结果是否与自己的编程思想一致。可以看到,8个共阴数码管开始显示计时时钟,其中8个数码管从低位到高位分别显示毫秒十位、毫秒百位、秒个位、秒十位、分钟个位、分钟十位、时钟个位、时钟十位。需要注意的是,为了验证程序进位是否正确而又不会让学生等待太久,可以设置初始值为23:59:50。只需等待10秒钟即可。4.2 仿真波形:5.1 实验心得:我们此次设计与制作时钟是为了了解数码管驱动的原理,从而学会制作时钟。而且通过时钟的制作进一步的了解各种在制作中用到的数码管的作用及实用方法。通过本次课程设计,我们可以进

16、一步学习和掌握各种电路的原理与使用方法。通过课程设计,使我加巩固和加深对电子电路基本知识的理解,学会方案设计,方案实施,进一步提高我综合运用所学知识的能力,提高分析解决实际问题的能力。锻炼分析、解决电子电路问题的实际本领,通过此综合训练,不仅学会了实验技术,掌握了实验方法即用实验检验理论的方法等。在FPGA实验中,提高了通过学会理解实验原理,熟练实验操作方法,实验数据处理方法的能力。我在老师的启发引导下,通过解决问题,获取知识,掌握实验思想和实验方法的实质,从而培养实验能力,在FPGA实验中使我受益非浅。同时,通过和伙伴的同心协力,使我深刻认识到团队合作的快乐重要与力量,也使我们提高了实验实践能力,和加深了对FPGA的认识!

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2