logo资料库

华南理工大学VHDL实验数码管与分频器.docx

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
实验三 数码管及分频器
数字系统(课程)设计 实 验 报 告 课 程 名 称 : 数字系统设计 学生姓名: 学生学号: 学生专业: 开 课 学 期 : 1
电子与信息学院 2
实验三 数码管及分频器 地 点: 实验日期与时间: 预 习 检 查 纪 录 : 实验台号: 评 分: 批改教师: 一、实验要求 (1)利用硬件描述语言设计分频器模块和七段显示码模块; (2)学习数码管驱动芯片 74HC595 的时序,请同学根据时序写出 VHDL 代码; (3)设计数据产生模块,每秒输出数字加 1; (4)设计顶层文件,驱动数码管模块,使(3)产生数据显示在数码管上。 二、实验内容 1、预期顶层设计图(可自行设计) 图 1 预期顶层设计图 说明:seg 模块实验直接提供 Verilog 版本(文档最后附有下载链接);实验 要求自行设计 divider 模块及 data_gen 模块和参考 Verilog 版本的 seg 模块编 写其 VHDL 版本。 2、Seg 模块(Verilog 版本)使用说明 数码管驱动模块已经写好译码时序及 74HC595 驱动时序,提供 clk,rst_n, en 及 ids_data 四个接口供同学们使用。 (1) clk:输入系统时钟 (2) rst_n:复位按键,可为板卡上的 SW0~SW3 (3) en :模块使能端口,高定平有效 (4) ids_data 为十六位输入口,每 4bits 对应一个数码管,例如 ids_data 写 入 1111_1111_1111_1111 则 数 码 管 将 显 示 FFFF ; ids_data 写 入 1010_0101_1010_0101 则数码管将显示 E5E5。 三、实验设计原理 3
1、divider 模块 开发板的时钟频率为 50MHZ,查阅文献可知,人眼能够分辨的最高频率为 24HZ。开发板的时钟频率远远超出人眼分辨范围,因此需要对时钟信号进行分 频处理,以便后续计时模块产生的输出到数码管上可被人眼分辨。题目要求分频 器模块时钟周期为 1HZ,在代码实体中设置一个范围为 1-50M 的信号 count,当 count≥25M 时分频器输出为‘1’,反之输出为’0’,当 count=50M 时,count=1。以 此编程得到的输出时钟信号频率为 1HZ,每 1s 产生一个上升沿。 2、data_gen 模块 题目要求数据产生模块,每秒输出数字加 1,且数码管可显示 16 进制数,故 data-gen 模块的输出为一个 16 位二进制信号。该模块以 divider 模块输出的 1HZ 信号为时钟,模块内部有一信号 q,当时钟上升沿到来时 q=q+1。当 q 为’FFFF’ 时,q 复位。最后将 q 值赋给 data_gen 模块的输出 odata_gen。 3、seg 模块 74HC595 是一个 8 位串行输入,8 位并行输出的位移缓存器。其 14 脚(DS) 为串行数据输入端。11 脚(SHCP)为数据输入时钟,上升沿时数据寄存器的数 据移位。12 脚(STCP)为输出存储器锁存时钟,上升沿时移位寄存器的数据进 入数据存储寄存器。基于以上特点,74HC595 需要三个信号进行控制。seg 模块 为 74HC595 的控制模块,以开发板时钟为时钟信号,输入为 data_gen 模块输出 的 16 位信号,seg 的输出为时钟 ds_shcp、ds_stcp、ds_data,以这三个信号来控 制两片 74HC595。在 seg 模块中,预先存储数码管的段码和位码。 表 1 74HC595 引脚功能图 两片 74HC595 级联控制 4 位数码管,一片控制段选,一片控制位选。开始 时,先将 seg 模块的并口输入数据转变为段码进行暂存,同时暂存四个位码。之 后在系统时钟的每个上升沿,seg 的数据输出口 ds_data 从高位到低位依次发送 4
段码的每一位。与此同时,ds_shcp 产生上升沿使段码移位,这样模块发送完段 码之后就从高位到低位一次发送位码。当段码和位码发送完毕之后,ds_stcp 产 生上升沿,将移位寄存器中的数据发送到数据存储寄存器,最后显示在数码管上。 每发送完一位数码管的段码和位码之后,要将 74HC595 的并口输入参数全部置 位,这样可以防止前后数据之间产生干扰,之后再显示后一位数码管。按照这种 方式,就可以点亮四位数码管。由于人的视觉暂留现象及发光二极管的余辉效应, 尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就 是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的。 在总体设计过程中,设置复位信号 rst。当复位信号为低电平时,设计的模块 中的输出和计时信号全部复位。设置复位信号是为了异步复位,达到重新计数的 目的。 各个模块的程序流程图见图 2。 4、程序仿真与下载 图 2 程序流程图 5
在 QuartusII 平台上新建工程,编写代码建立三个 VHDL 文件并设置为顶层 文件,之后生成对应模块。然后连接模块并添加输入输出口,编译之后分配引脚, 之后再进行编译,将程序下载至开发板中。最后通过硬件测试来验证程序功能。 四、实验过程记录 实验总体流程图如图 3 所示。 在 Quartus 中输入三个模块的 VHDL 代码,都设置为顶层文件,编译成功。 图 3 实验总体流程图 6
代码编译成功后生成三个模块的 block 块,添加输入输出口,连接模块为 bdf 图 4 编译结果 文件。 7
为测试模块是否能够正确工作,对 data_gen 模块添加输入输出口后建立波形仿真文件 进行时序仿真如图 6 所示,模块功能正常。 图 5 顶层模块连接图 图 6 data_gen 模块输出波形仿真图 bdf 文件编译成功后进行管脚分配,之后再编译文件,最后将程序通过下载 线下载到开发板中,管脚分配图如图 7 所示。 8
分享到:
收藏