南理工eda2试验报告_第1页
南理工eda2试验报告_第2页
南理工eda2试验报告_第3页
南理工eda2试验报告_第4页
南理工eda2试验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA 设计(二) 课程设计报告 姓名 彭浩洋 学号 1110200129 学院(系) 自动化学院 专业 自动化 标题 基于 VHDL 语言的数字秒表的实现 南京理工大学 2014年 10 月 基于 VHDL语言的数字秒表的实现 摘要: 随着电子技术与计算机技术的发展,熟练掌握和运用EDA 技术已成为电子 类及相关专业本科人才不可或缺的一项技能。 电子信息产品随着科学技术的进步, 其电子器 件和设计方法更新换代的速度日新月异。 实现这种进步的原因就是电子设计技术和电子制造 技术的发展,其核心就是 EDA 技术,本文主要介绍用 VHDL 语言实现数字秒表设计。 关键字: EDA 技术; VHDL

2、 语言;数字秒表 1 设计方案 1. 1系统功能要求 (1) 具有时钟秒表系统功能要求显示功能 , 用 6个数码管分别显示时、分、秒 ; 计时范 围为 :00: 00 : 00 23: 59 : 59。 (2) 计时精度是 1s; (3) 具有启 / 停开关 , 复位开关 , 可以在任何情况下使用。 1. 2总体框图 二十四进制计数器模 根据系统设计要求 , 系统的底层设计主要由六十进制计数器模块、 块、分频模块、 LED显示模块组成。系统顶层设计图如图所示: 图1 图一中左边为三个输入信号 en, clk, reset,分为启 / 停开关,时钟信号和复位开关。 中间是从上倒下时 count2

3、4,count60,count60,fenpinqi;右边是 clock1和输出信号 wei3.0 , led6.0 。 由六十进制计数器模块、二十四进制计数器模块、分频模块执行计时功能 , 输入信号 是 256 Hz,通过分频后为 1hz ,时钟信号是 1 Hz 作为秒表的秒输入 , 秒为 60 进制计数器 , 分 也为 60 进制计数器 , 小时采用二十四进制计数器 , 各级进位作为高位的使能控制。 2. 1 六十进制计数器模块 图2 该模块部分 VHDL 源程序如下 : LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_log

4、ic_unsigned.ALL; ENTITY count60 IS PORT( en,Reset,clk: in STD_LOGIC; qa: out STD_LOGIC_VECTOR(3 DOWNTO 0); qb: out STD_LOGIC_VECTOR(3 DOWNTO 0); rco: OUT STD_LOGIC); END count60; ARCHITECTURE a OF count60 IS BEGIN process(clk) variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0); variable tmb: STD_LOGIC_VECTO

5、R(3 DOWNTO 0); begin If Reset =0then tma:=0000; tmb:=0000; elsif clkevent and clk=1 then if en=1 then rco=tmb(2)and tmb(0)and tma(3)and tma(0); if tma=1001 then tma:=0000; if tmb=0101 then tmb:=0000; else tmb:=tmb+1; end if; else tma:=tma+1; end if; end if; end if; qa=tma;qb=tmb; end process; END a;

6、 2. 2 二十四进制计数器模块 图3 该模块部分 VHDL 源程序如下 : LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY count24 IS PORT( en,Reset,clk: in STD_LOGIC; qa: out STD_LOGIC_VECTOR(3 DOWNTO 0); qb: out STD_LOGIC_VECTOR(3 DOWNTO 0); END count24; ARCHITECTURE a1 OF count24 IS BEGIN process(

7、clk)variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0); variable tmb: STD_LOGIC_VECTOR(3 DOWNTO 0); begin If Reset = 0then tma:=0000; tmb:=0000; else if clkevent and clk=1 then if en=1 then if tma=1001 then tma:=0000;tmb:=tmb+1; elsif tmb=0010 and tma=0011 then tma:=0000;tmb:=0000; else tma:=tma+1; end if;

8、end if; end if;end if; qa=tma;qb=tmb; end process; END a1; 2. 3 分频器模块 图4 该模块部分 VHDL 源程序如下 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinqi IS PORT (CLK,RST:in std_logic; CLK_OUT:out std_logic); END fenpinqi; ARCHITECTURE behav OF fenpinqi IS signal clk_data

9、:std_logic; SIGNAL CNT6 : INTEGER := 0; BEGIN PROCESS(CLK) BEGIN IF RST = 0 THEN CNT6=0 ; ELSIF CLKEVENT AND CLK=1 THEN IF CNT6=2 THEN clk_data=NOT clk_data;CNT6=0; ELSE CNT6=CNT6+1; END IF; END IF; CLK_OUT=clk_data; END PROCESS; END behav; 2. 4 LED 显示模块 该模块部分 VHDL 源程序如下 : LIBRARY IEEE; USE IEEE.STD

10、_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clock1 IS PORT(CLK: IN STD_LOGIC; S1, S2, S3, S4, S5, S6: IN STD_LOGIC_VECTOR(3 DOWNTO 0); WEI: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY; ARCHITECTURE behave OF clock1 IS SIGNAL CNT6 : INTEGER RANGE 0

11、 TO 5 := 0; SIGNAL SHUJU: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PRO1:PROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN CNT6 WEI = 000; SHUJU WEI = 001; SHUJU WEI = 010; SHUJU WEI = 011; SHUJU WEI = 100; SHUJU WEI = 101; SHUJU = S6;CNT6 NULL; END CASE; END IF; END PROCESS; PRO2: PROCESS(SHUJU) BEGIN CASE

12、 SHUJU IS WHEN 0000 = LED LED LED LED LED LED LED LED LED LED LED= 0000000 ; END CASE; END PROCESS; END ; 3 仿真波形及分析 各部分模块完成后 , 用Quartus 对程序编译、仿真、得到的仿真波形 , 各模块仿真波形 及顶层仿真波形如下: 3.1 六十进制计数器模块仿真 图5 图6 图5、 图 6 均为二十四进制计数器仿真波形图。 CLK :时钟信号 RST:复位信号 低电平清零 En:置数端低电平不让它继续计数 qb、 qa:分别为输出数的十位个位, qb 取值范围为 0-5 , qa

13、 取值范围为 0-9 rco :进位信号,当 qb=5, qa=0, rco=0 时, clk 上升沿来到后, qb=0, qa=0, rco=1 ; 当 qb=5,qa=0, rco=1 时,clk 上升沿来到后, qb=0, qa=0, rco=0 3.2 二十四进制计数器模块仿真 图7 图8 图7,图 8 均为二十四进制计数器仿真波形图。 CLK :时钟信号 RST:复位信号 低电平清零 En:置数端低电平不让它继续计数 qb、 qa:输出的四位二进制数,分别对于要输出数的十位个位 3.3 分频器模块仿真 因时钟脉冲(为 256hz )通过分频器 256分频后频率(为 1hz ),仿真波

14、形显示前一小段, 不能看出输出规律,所以做仿真是用3分频后的波形,真正在实验箱上验证是再改。 图9 CLK :输入分频前的时钟信号 RST:复位信号 低电平清零 Clkout :输出分频后的时钟信号 3.4 LED 显示模块仿真 图10 Clk :时钟信号 s1, s2, s3, s4, s5, s6: 输入的的四位二进制数 led :输出的七位二进制数,对应数码管脚的输出 gfedcba wei: 输出的三位而进制数(输出范围为 000-101 ),控制 led 输出: 当wei=000 时, led 输出 s1 对应的十进制数的数码管脚 gfedcba 当wei=001 时, led 输出

15、 s2 对应的十进制数的数码管脚 gfedcba 当wei=010 时, led 输出 s3 对应的十进制数的数码管脚 gfedcba 当wei=011 时, led 输出 s4 对应的十进制数的数码管脚 gfedcba 当wei=100 时, led 输出 s5 对应的十进制数的数码管脚 gfedcba 当wei=101 时, led 输出 s6 对应的十进制数的数码管脚 gfedcba 3.5 顶层仿真 因时钟脉冲 (为 256hz)通过分频器 256分频后频率(为 1hz ),仿真波形显示前一小段, 不能看出输出规律,所以做仿真是用3分频后的波形,真正在实验箱上验证是再改。 10 图11

16、 CLK :时钟信号 RST:复位信号 低电平清零 En:置数端 低电平不让它继续计数 led :输出的七位二进制数,对应数码管脚的输出 gfedcba wei: 输出的三位而进制数(输出范围为 000-101 ),控制 led 输出, 当 wei=000 时, led 输出对于秒钟的个位 当 wei=001 时, led 输出对于秒钟的十位 当 wei=010 时, led 输出对于分钟的个位 当 wei=011 时, led 输出对于分钟的十位 当 wei=100 时, led 输出对于时钟的个位 当wei=101时, led 输出对应时钟的十位 4 总结 VHDL硬件描述语言是我学过的较

17、为复杂的一门语言,之前一直学习的是高级编程语言, 如 c+ 、 c 语言、 VB 等,这些语言都不愧于它们的高级一词,因为语言包装得很好,用起来 确实简单易上手, 而且里面的各种语法可以让我们轻松的解决各种难题 (其中, 最让我惊叹 的便是递归语句的应用) 。然而,上述的高级语言都只是在第二系统中起到作用,并不能直 接对硬件进行操作, VHDL却是一种针对硬件的描述语言。 VHDL作为一种标准硬件描述语言,它除了含有许多具有硬件特征的语句外,其语言形 式和描述风格与句法是十分类似于一般的计算机高级语言。 但是由于其是针对硬件的描述语 言,孤儿许多高级语法都不能使用, 所以在学习的初始阶段, 并不适应这种简朴而又复杂的 语言,觉得它乱七八糟,看着语句毫无头绪。 然而, VHDL 课有着与其他科目截然不同的地方,那就是它的互动性很强。在实验室我 们还进行分组去完成项目

温馨提示

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

评论

0/150

提交评论