




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘摘 要要 随着 EDA 技术的发展和应用领域的扩大与深入,EDA 技术在电子信息、通信、 自动控制及计算机应用领域的重要性日益突出。EDA 技术就是依赖功能强大的计 算机,在 EDA 工具软件平台上,对以硬件描述语言 VHDL 为系统逻辑描述手段完 成的设计文件,自动地完成逻辑优化和仿真测试,直至实现既定的电子线路系 统功能。本文介绍了基于 VHDL 硬件描述语言设计的多功能数字闹钟的思路和技 巧。在 Quartus 11 开发环境中编译和仿真了所设计的程序,并逐一调试验证程 序的运行状况。仿真和验证的结果表明,该设计方法切实可行,该数字闹钟可 以实现调时定时闹钟播放音乐功能具有一定的实际应
2、用性。 关键词关键词: 闹钟 FPGA VHDL 目目 录录 摘摘 要要.I 目目 录录 .III 第一章第一章 选题背景选题背景.1 1.1 选题研究内容.1 1.2 课题研究功能.1 1.3 课题相关技术应用.1 第二章第二章 FPGA 简介简介.3 2.1 FPGA 概述.3 2.1.1 FPGA 基本结构.3 2.2 FPGA 编程原理.3 2.3 FPGA 设计流程.4 第三章第三章 数字闹钟整体方案设计数字闹钟整体方案设计.7 3.1 数字闹钟整体设计.7 3.1.1 数字闹钟各部分作用.7 3.2 数字钟的工作原理.7 第四章第四章 模块电路设计模块电路设计.9 4.1 模块电路
3、图设计.9 4.2 各模块电路设计.9 第五章第五章 实验结果实验结果.16 5.1 实验概述.16 5.2 实验仿真结果.16 第六章第六章 总结与展望总结与展望.18 研究结论.18 研究展望.18 致致 谢谢.20 参考文献参考文献.22 附录附录 1 部分模块代码部分模块代码.24 附录附录 2 动态扫描模块程序动态扫描模块程序.33 第一章第一章 选题背景选题背景 1.1 选题研究内容选题研究内容 设计一个 24 小时的闹钟,该闹钟由显示屏、数字键、TIME 键、ALARM 键、 扬声器组成。 闹钟总体系统包括如下几步分组成:用于键盘输入预置数字的键盘缓冲器; 用于时钟计数的计数器;
4、用于保存闹钟时间的闹钟寄存器;用于显示的七段数 码显示器及控制以上各个部分协同工作的闹钟控制器。 1.2 课题研究功能课题研究功能 (1)计时功能:这是本计时器设计的基本功能,可进行时、分、秒计时,并 显示。 (2)闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出一段音 乐,并维持一分钟。 (3) 调时调分调闹钟功能:当需要校时或者要重新设置闹钟的时间时,可 通过实验箱上的按键控制。 1.3 课题相关技术应用课题相关技术应用 EDA 技术和硬件描述语言 VHDL 的基础知识,通过对工程实例的系统分析、 程序设计和仿真,深入细致地讨论了它们在数字系统设计中的广泛应用。电子 设计自动化(E
5、lectronic Design Automation,即 EDA)技术是指包括电路系统设 计、系统仿真、设计综合、PCB 版图设计和制版的一整套自动化流程。随着计算 机、集成电路和电子设计技术的高速发展,EDA 技术已经渗透到百姓生活的各个 角落,日益成为电子信息类产品的支柱产业。 秒表、彩灯控制器、抢答器、电梯控制器、出租车计费器、微波炉控制器、 FIR 滤波器、I2C 控制器、DDS、序列检测器、自动售货机、函数发生器、调制 解调器和 UART 等 15 个数字系统的 VHDL 设计范例,给用户演示了数字电路的设 计方法和思路。 当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发
6、展。它与 传统的电子产品在设计上的显著区别师大量使用大规模可编程逻辑器件,使产 品的性能提高,体积缩小,功耗降低.同时广泛运用现代计算机技术,提高产品 的自动化程度和竞争力,缩短研发周期。EDA 技术正是为了适应现代电子技术的 要求,吸收众多学科最新科技成果而形成的一门新技术。 第二章第二章 FPGAFPGA 简介简介 2.1 FPGA 概述概述 FPGA 是现场可编程门阵列(Field Programmable Gate Array)的简称, 与之相应的 CPLD 是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原
7、理略有不同,所以有时可 以忽略这两者的区别,统称为可编程逻辑器件或 CPLD/PGFA。CPLD/PGFA 几乎能 完成任何数字器件的功能,上至高性能 CPU,下至简单的 74 电路。它如同一张 白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的 设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在 PCB 完成以 后,利用 CPLD/FPGA 的在线修改功能,随时修改设计而不必改动硬件电路。使 用 CPLA/FPGA 开发数字电路,可以大大缩短设计时间,减少 PCB 面积,提高系 统的可靠性。这些优点使得 CPLA/FPGA 技术在 20 世纪 90 年代以后得到飞速
8、的 发展,同时也大大推动了 EDA 软件和硬件描述语言 HDL 的进步。 2.1.1 FPGA 基本结构基本结构 FPGA 一般由 3 种可编程电路和一个用于存放编程数据的静态存储器 SRAM 组 成。这 3 种可编程电路是:可编程逻辑模块(CLB-Configurable Logic Block)、输入/输出模块(IOB-I/O Block)和互连资源(IRInterconnect Resource)。可编程逻辑模块 CLB 是实现逻辑功能的基本单元,它们通常规则 的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成 芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周
9、;可编程互连资 源包括各种长度的连接线段和一些可编程连接开关,它们将各个 CLB 之间或 CLB、IOB 之间以及 IOB 之间连接起来,构成特定功能的电路 2.2 FPGA 编程原理编程原理 硬件设计需要根据各种性能指标、成本、开发周期等因素,确定最佳的实 现方案,画出系统框图,选择芯片,设计 PCB 并最终形成样机。 CPLD/FPGA 软件设计可分为两大块:编程语言和编程工具。编程语言主要有 VHDL 和 Verilog 两种硬件描述语言;编程工具主要是两大厂家 Altera 和 Xilinx 的集成综合 EDA 软件(如 MAX+plusII、QuartusII、Foundation、
10、ISE) 以及第三方工具(如 FPGA Express、Modelsim、Synposys SVS 等)。具体的设 计输入方式有以下几种: 1.HDL 语言方式。HDL 既可以描述底层设计,也可以描述顶层的设计,但它 不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达 到的性能与设计人员的水平、经验以及综合软件有很大的关系。 2.图形方式。可以分为电路原理图描述,状态机描述和波形描述 3 种形式。 有的软件 3 种输入方法都支持,如 Active-HDL。MAX+plusII 图形输入方式只支 持电路原理图描述和波形描述两种。电路原理图方式描述比较直观和高效,对 综合软件的要
11、求不高。一般大都使用成熟的 IP 核和中小规模集成电路所搭成的 现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片 利用率很高,但是但项目很大的时候,该方法就显得有些繁琐;状态机描述主 要用来设计基于状态机思想的时序电路。在图形的方式下定义好各个工作状态, 然后在各个状态上输入转换条件以及相应的输入输出,最后生成 HDL 语言描述, 送去综合软件综合到可编程逻辑器件的内部。由于状态机到 HDL 语言有一种标 准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率 主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接 描述输入与输出的波形关系。这种
12、输入方式最后所能达到的工作速度和芯片利 用率也是主要取决于综合软件。 2.3 FPGA 设计流程设计流程 一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几 个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实 现,这就是 TOP DOWN(自顶向下)的设计方法。目前这种高层次的设计方法已 被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因 此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对 某种工艺优化的网络表,使工艺转化变得轻而易举。CPLD/FPGA 系统设计的工作 流程如图 2-2 所示。 系统划分 编译器 代码级功能仿
13、真 综合器 适配前时序仿真 适配器 CPLD/FPGA实现 适配后仿真模型 适配后时序仿真 适配报告 ASIC 实现 VHDL 代码或图形方式输入 仿真综合库 器件编程文件 图图 2.32.3 FPGAFPGA 设计流程设计流程 第三章第三章 数字闹钟整体方案设计数字闹钟整体方案设计 3.13.1 数字闹钟整体设计数字闹钟整体设计 1)各个输入输出端口 1、CLK 为外部时钟信号,RESET 为复位信号。 2、KEYPAD 若其中某一位为高电平,则表示用户按下了相应的数 字键 3、当 KEYDOWN 为高电平,表示用户按下某一数字键。 4、当 ALAR-BUTTON 为高电平时,表示用户按下
14、ALARM 键。 5、当 TIME-BUTTON 为高电平时表示用户按下 TIME 键 6、DISPLAY 实际上表示了 4 个 7 段数码管,用于显示时间。 7、SOUND-ALARM 用于控制扬声器发声,当 SOUND-ALARM=1时, 扬声器发出蜂鸣,表示到了设定时间。 2)各部分的组成 根据系统的设计要求,整个系统分为 7 个模块:闹钟控制器,译 码器,键盘缓冲器,闹钟寄存器,时间计数器,显示驱动器,分频器。 3.1.13.1.1 数字闹钟各部分作用数字闹钟各部分作用 1、 闹钟控制器:整个系统正常有序工作的核心,按设计要求产生相应的 控制逻辑以控制其他部分工作。 2、 译码器:可将
15、 KEYPAD 信号转换为 09 的整形数,以直观地表示和处理 用户输入的数字。 3、 键盘缓冲器:是一个移位寄存器,暂存用户键入的数字,并且实现用 户键入数字在显示器上从左到右依次显示。 4、 分频器:将较高的外部时钟频率分成每分钟一次的时钟频率,以便进 行时钟计数。 5、 时间计数器:实际上是一个异步复位、异步置数的累加器,通常情况 下进行时钟累加计数,必要时可置入新的时钟值,然后从该值开始新的计数。 6、 闹钟寄存器:用于保存用户设置的闹钟时间,是一个异步复位寄存器。 7、 显示驱动器:根据需要显示当前时间、用户设置的闹钟时间或用户通 过键盘输入新的时间,同时判断当前时间是否已到了闹钟时
16、间,实际上是一个 多路选择器加比较器。 3.2 数字钟的工作原理数字钟的工作原理 数字闹钟电路的基本结构由两个 60 进制计数器和一个 24 进制计数器组成, 分别对秒、分、小时进行计时,当计时到 23 时 59 分 59 秒时,再来一个计数脉 冲,则计数器清零,重新开始计时。秒计数器的计数时钟 CLK 为 1Hz 的标准信 号。当数字闹钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的 计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号时、分、 秒的计时结果通过 4 个数码管来动态显示。数字闹钟除了能够正常计时外,还 应能够对时间进行调整。因此,通过模式选择信号 KEY1、K
17、EY2 控制数字钟的工 作状态,即控制数字钟,使其分别工作于正常计时,调整分、时和设定闹钟分、 时 5 个状态。当数字闹钟处于计时状态时,3 个计数器允许计数,且秒、分、时 计数器的计数时钟信号分别为 CLK,秒的进位, 分的进位;当数字闹钟处于调整时 间状态时,被调的分或时会一秒一秒地增加;当数字钟处于闹钟定时状态时, 可以设定小时和分;当计时到所设定的时刻时,speak 将会被赋予梁祝音乐信号 用于驱动扬声器,持续 1 分钟。 第四章第四章 模块电路设计模块电路设计 4.1 模块电路图设计模块电路图设计 图图 4.1-14.1-1 模块电路图模块电路图 4.2 各模块电路设计各模块电路设计
18、 1) 时钟控制模块: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shizhong is port( clk: in std_logic; md1:in std_logic; md2:in std_logic_vector(1 downto 0); clken:out std_logic; h1,h2,m1,m2,s1,s2:out std_logic_vector(3 downto 0); end shizhong; architecture one of shizho
19、ng is signal hou1:std_logic_vector(3 downto 0); signal hou2:std_logic_vector(3 downto 0); signal min1:std_logic_vector(3 downto 0); signal min2:std_logic_vector(3 downto 0); signal seth1:std_logic_vector(3 downto 0); signal seth2:std_logic_vector(3 downto 0); signal setm1:std_logic_vector(3 downto 0
20、); signal setm2:std_logic_vector(3 downto 0); signal sec1:std_logic_vector(3 downto 0); signal sec2:std_logic_vector(3 downto 0); begin -小时十位 h110:process(clk,hou2,min1,min2,sec1,sec2,md1,md2) begin if clkevent and clk=1 then if (hou1=0010 and hou2=0011)and(min1=0101 and min2=1001) and (sec1=0101 an
21、d sec2=1001) then hou1=0000; elsif hou1=0010and hou2=0011and md1=0 and md2=01 then-当时间为 23 点且处于校时状态时 hou1=0000; elsif (hou2=1001and(min1=0101 and min2=1001) and (sec1=0101 and sec2=1001)or (hou2=1001and md1=0 and md2=01) then hou1=hou1+1; end if; end if; end process h110; -小时个位 h220:process(clk,min1
22、,min2,sec1,sec2,md1,md2,hou1) begin if clkevent and clk=1 then if (hou1=0010 and hou2=0011)and(min1=0101 and min2=1001) and (sec1=0101 and sec2=1001) then hou2=0000; elsif hou2=1001and(min1=0101 and min2=1001) and (sec1=0101 and sec2=1001) then hou2=0000; elsif (hou2=1001and md1=0 and md2=01) or (ho
23、u1=0010and hou2=0011) then hou2=0000;-md=1;- elsif (min1=0101 and min2=1001) and (sec1=0101 and sec2=1001) or (md1=0 and md2=01) then hou2=hou2+1;-speak=clk;- end if; end if; end process h220; -分钟十位 m110:process(clk,min2,sec1,sec2,md1,md2) begin if clkevent and clk=1 then if (min1=0101 and min2=1001
24、) and (sec1=0101 and sec2=1001) then min1=0000; elsif min1=0101and min2=1001and (md1=0 and md2=00)then min1=0000; elsif (min2=1001and (sec1=0101 and sec2=1001) or (min2=1001and md1=0 and md2=00)then min1=min1+1; end if; end if;-end if; end process m110; -分钟个位 m220:process(clk,sec1,sec2,md1,md2) begi
25、n if clkevent and clk=1 then if min2=1001and (sec1=0101 and sec2=1001)then min2=0000; elsif min2=1001and (md1=0 and md2=00)then min2=0000; else if (sec1=0101 and sec2=1001) or(md1=0 and md2=00)then min2=min2+1; end if; end if;end if; end process m220; -秒十位 s110:process(clk) begin if clkevent and clk
26、=1 then if (sec1=0101 and sec2=1001)then sec1=0000; else if sec2=1001then sec1=sec1+1; end if; end if;end if; end process s110; -秒个位 s220:process(clk) begin if clkevent and clk=1 then if sec2=1001 then sec2=0000; else sec2=sec2+1; end if; end if; end process s220; -时间设置小时部分 sethour1:process(clk,seth
27、2) begin if clkevent and clk=1 then if seth1=0010and seth2=0011 then seth1=0000; elsif seth2=1001 then seth1=seth1+1; end if; end if; end process sethour1; sethour2:process(clk,md1,md2,seth1) begin if clkevent and clk=1 then if (seth1=0010and seth2=0011)or seth2=1001then seth2=0000; elsif md1=1 and
28、md2=00 then seth2=seth2+1; end if; end if; end process sethour2; -时间设置分钟部分 setmin1:process(clk,setm2) begin if clkevent and clk=1 then if setm1=0101and setm2=1001then setm1=0000; elsif setm2=1001then setm1=setm1+1; end if; end if; end process setmin1; setmin2:process(clk,md1,md2) begin if clkevent a
29、nd clk=1then if setm2=1001then setm2=0000; elsif md1=1 and md2=01then setm2=setm2+1; end if; end if; end process setmin2; -闹铃 speaker:process(clk,hou1,hou2,min1,min2) begin if clkevent and clk=1then if seth1=hou1 and seth2=hou2 and setm1=min1 and setm2=min2 then clken=1; else clken=0; end if; end if
30、; end process speaker; disp:process(md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2) begin if md1=0 then-计时时间显示和设置模式 h1=hou1;h2=hou2; m1=min1;m2=min2; s1=sec1;s2=sec2; else -闹铃时间现实和设置模式 h1=seth1;h2=seth2; m1=setm1;m2=setm2; s1=1111;s2=1111; end if; end process disp; end one; 3)乐曲演奏模块: LIBR
31、ARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Speakera IS PORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC ); END; ARCHITECTURE one OF Speakera IS SIGNAL PreCLK, FullSpkS : STD_LOGIC; BEGIN DivideCLK : PROCESS(clk) VARIABLE Co
32、unt4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PreCLK 11 THEN PreCLK = 1; Count4 := 0000; ELSIF clkEVENT AND clk = 1 THEN Count4 := Count4 + 1; END IF; END PROCESS; GenSpkS : PROCESS(PreCLK, Tone)- 11 位可预置计数器 VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0); BEGIN IF PreCLKEVENT AND PreCLK = 1 THEN I
33、F Count11 = 16#7FF# THEN Count11 := Tone ; FullSpkS = 1; ELSE Count11 := Count11 + 1; FullSpkS = 0; END IF; END IF; END PROCESS; DelaySpkS : PROCESS(FullSpkS)-将输出再 2 分频,展宽脉冲,使扬声器有足 够功率发音 VARIABLE Count2 : STD_LOGIC; BEGIN IF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2; IF Count2 = 1 THE
34、N SpkS = 1; ELSE SpkS = 0; END IF; END IF; END PROCESS; END; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY NoteTabs IS PORT (clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END; ARCHITECTURE one OF NoteTabs IS COMPONENT MUSIC -音符数据 ROM PORT(a
35、ddress : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); END COMPONENT; SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN CNT8 : PROCESS(clk,Counter) BEGIN IF Counter=138 THEN Counter = ; ELSIF (clkEVENT AND clk = 1) THEN Counter Counter , q=Tone
36、Index, inclock=clk); END; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ToneTaba IS PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0); en : IN STD_LOGIC); END; ARCHITECTURE one OF ToneTaba IS BEGIN PROCESS(Index,en) BEGIN IF en=0 THEN Tone Tone Tone Tone
37、 Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone NULL; END CASE; END IF; END PROCESS; END; LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY altera_mf; USE altera_mf.altera_mf_components.all; ENTITY music IS PORT ( address: IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock: IN STD_LOGIC ; q: OUT STD_LOGI
38、C_VECTOR (3 DOWNTO 0); END music; ARCHITECTURE SYN OF music IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); COMPONENT altsyncram GENERIC (intended_device_family: STRING; width_a: NATURAL; widthad_a: NATURAL; numwords_a: NATURAL; operation_mode: STRING; outdata_reg_a: STRING; address_aclr_a: STR
39、ING; outdata_aclr_a: STRING; width_byteena_a: NATURAL; init_file: STRING; lpm_hint: STRING; lpm_type: STRING); PORT ( clock0: IN STD_LOGIC ; address_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); q_a : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); END COMPONENT; BEGIN q Cyclone, width_a = 4, widthad_a = 8, numwords_a =
40、256, operation_mode = ROM, outdata_reg_a = UNREGISTERED, address_aclr_a = NONE, outdata_aclr_a = NONE, width_byteena_a = 1, init_file = data1.mif, lpm_hint = ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=rom2, lpm_type = altsyncram) PORT MAP ( clock0 = inclock, address_a = address, q_a = sub_wire0); END SYN
41、; 第五章第五章 实验结果实验结果 5.1 实验概述实验概述 本实验是以 KEY2、KEY1 为控制整个闹钟的校时,校分,校闹钟时、分,分 别将 KEY21,KEY20,KEY1,送到实验上的三个键,由这三个键来控制整个校 时,校分,校闹钟时,校闹钟分的过程,加上分别连接的键叫 A,B,C 键. 5.2 实验仿真结果实验仿真结果 则当 A=0,B=1,C=0 时是对时钟进行校时,时个位和时十位会以二十四进制 循环自动增加。仿真波形: 图图 5.2-15.2-1 当 A=0,B=0,C=0 时是对时钟进行校分,分个位和分十位会以六十进制循环 增加,并且不对时进位。仿真波形: 图 5.2-2 当
42、A=0,B=1,C=1 时是对闹钟进行校分,闹钟时个位和时十位会以二十四进 制循环自动增加。仿真波形: 图图 5.2-35.2-3 当 A=0,B=0,C=1 时是对闹钟进行校时,闹钟分个位和分十位会以六十进制 循环增加,并且不对时进位。仿真波形: 图图 5.2-45.2-4 而当 A=1,B=0,C=0 或者 A=1,B=1,C=0 是正常的计时时间,秒从零开始计 时,每秒加一,当到达五十九在来一个脉冲后,秒十位和秒个位清零,从零开 始直到六十一直循环,并且向分个位清零;分位的原理同秒的一样;而时与秒, 分的不同之处是,当时计数到二十三时清零并且不向任何位进位。仿真波形: 图图 5.2-55
43、.2-5 另外当计数的时,分和闹钟所事先设置时、分相等时,“梁祝”这首歌会 响起,作为闹钟并且维持一分钟,一分钟歌曲自动停止。在有条件的情况下, 为验证所设计程序是否正确,将程序下载到 FPGA 器件中进行硬件测试。在 Quartus开发环境中进行管脚锁定,连接好数码管驱动电路,然后将目标文件 下载到器件中。最终可以看到时、分、秒正常显示 第六章第六章 总结与展望总结与展望 研究结论研究结论 通过本次实验,系统的复习整个 EDA 的知识,并且了解了 CPLD 可编程芯片 的结构和引脚,能够熟练的运用 quartus II 这个软件,尤其可贵的是,学会了 使用这个软件来给程序配置引脚,并且实际的
44、通过实验箱的几个按键就可以控 制整个操作的过程,终于感到自己所学到的知识可以付诸到实践了。 在此次的数字钟设计过程中,更进一步地熟悉有关数字电路的知识和具体 应用。学会了利 Max+plus 和 QuarterII 软件进行原理图的绘制,硬件描述语言 VHDL 的编写,程序的仿真等工作。并能根据仿真结果分析设计的存在的问题和 缺陷,从而进行程序的调试和完善。 在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并 不是完全一致的,例如在对具体模块的仿真的过程中,往往没有考虑到整体设 计的层面以及与上下模块接口的设计。再加上器件对信号的延时等问题,实际 下载到实验箱上后会出现一系列的问
45、题,因此仿真图和电路连接图还是有一定 区别的。 此次的数字钟设计重在于按键的控制和各个模块代码的编写,虽然能把键 盘接口和各个模块的代码编写出来,并能正常显示,但对于各个模块的优化设 计还有一定的缺陷和不足。总的来说,通过这次的设计实验更进一步地增强了 实验的动手能力,对数字钟的工作原理也有了更加透彻的理解。在本设计调试 过程中遇到了一些问题如下: 1.当程序下载到实验箱上后,数码管显示全部为零,计数器不工作,经分 析得知程序中的总的清零信号保持有效状态,改动程序后计数器开始计数。 2.当秒时钟计数到 59 时变 0 时,分计数模块滞后计数,考虑的器件的延时, 将程序中秒的进位信号提前 1 秒
46、。 3 在检测按键时,由于有些按键控制是秒时钟同步的,所以控制起来显得梢 慢些,但是工作正常,能满足实际的需要。 研究展望研究展望 本设计中虽然有控制键对时钟进行控制,但是用到的按键太多,在实际应 用上存在不足。故提出改进方案为用一个按键控制数码管的片选,再用两个按 键控制计数的加减。这样可以节省按键资源,以供更多的功能的使用。 本设计是采用硬件描述语言和 FPGA 芯片相结合进行的数字钟的研究,从中 可以看出 EDA 技术的发展在一定程度上实现了硬件设计的软件化。设计的过程 变的相对简单,容易修改等优点,相信随着电子技术的发展,数字钟的功能会 更加多样化,满足人们的各种需要。 致致 谢谢 在
47、论文完成之际,我首先向关心帮助和指导我的指导老师许金星表示衷心 的感谢并致以崇高的敬意! 在论文工作中,遇到了许多难题,一直得到许金星老师的亲切关怀和悉心 指导,使我不断进步。许金星老师以其渊博的学识、严谨的治学态度、求实的 工作作风和他敏捷的思维给我留下了深刻的印象,我将终生难忘。再一次向他 表示衷心的感谢,感谢他为学生营造的浓郁学术氛围,以及学习、生活上的无 私帮助! 值此论文完成之际,谨向许金星老师致以最崇高的谢意! 在学校的学习生活即将结束,回顾两年多来的学习经历,面对现在的收获, 我感到无限欣慰。为此,我向热心帮助过我的所有老师和同学表示由衷的感谢! 特别感谢我的师姐吴谦谦对我的学习
48、和生活所提供的大力支持和关心!还要 感谢一直关心帮助我成长的室友 邓森、王蒙! 在我即将完成学业之际,我深深地感谢我的家人给予我的全力支持! 最后,衷心地感谢在百忙之中评阅论文和参加答辩的各位专家、教授! 参考文献参考文献 1. 张竹生.微分半动力系统的不变集D:博士学位论文.北京:北京大学数学系, 1983 2. 刘君,常明,秦娟,基于硬件描述语言(VHDL)的数字时钟设计,天津理 工大学学报,2007,第 23 卷 第 4 期,40-41 3. 廖日坤,CPLD/FPGA 嵌入式应用开发技术白金手册,中国电力出版社, 2003,212-218。 4. 王开军,姜宇柏,面向 CPLD/FPGA 的 VHDL 设计,机械工业出版社,2006,28- 65。 5. 赵保经,中国集成电路大全,国防工业出版社,1985。 6. 高吉祥,电子技术基础实验与课程设计,电子工业出版社,2002。 7. 吕思忠,数子电路实验与课程设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 缓解亲子冲突的培训课件
- 美甲店合作战略合同10篇
- 二手手机转让协议书范本8篇
- 集团公司员工绩效考核实施方案
- 煤矿企业生产经营借款合同10篇
- 民间借款纠纷保证合同7篇
- 带租约销售商铺合同9篇
- 小松鼠壁挂炉买卖合同7篇
- 智能家居安全系统设计与安装方案
- 婚内财产协议离婚
- 抚养费纠纷答辩状范文
- 《专业技术人才管理》课件
- 跨国合作:应对全球传染病挑战
- 大班韵律《朱迪警官破案记》
- 《永辉超市S店库存管理问题及产生原因和优化建议》8700字(论文)
- 《光储充一体化电站技术规范》标准编制说明+征求意见稿
- 【MOOC】中国传统艺术-篆刻、书法、水墨画体验与欣赏-哈尔滨工业大学 中国大学慕课MOOC答案
- 财报分析-伊利
- 菜鸟驿站转让合同协议书范本
- 多物理场模拟仿真
- 神经外科科室质量管理小组工作制度
评论
0/150
提交评论