FPGA实战篇 您所在的位置:网站首页 数码管smg是什么意思 FPGA实战篇

FPGA实战篇

2024-05-31 18:34| 来源: 网络整理| 查看: 265

FPGA实战——动态数码管 rtl文件模块设计:计数模块,产生数码管的数据数码管显示驱动模块时钟分频数字转码(二进制—>BCD码)位选信号切换 调试warning: ucf文件

**任务:**使用开发板上的 6 位数码管以动态方式从 0 开始计数,每 100ms 计数值加1,计数值从 0 到 999999 循环计数。 硬件设计:与上节相同。 共阳极的6个数码管 在这里插入图片描述

rtl文件

此次使用动态模式,相比静态模式,动态扫描就是利用人眼的余辉效果,先只打开第一个数码管,让第一个数码管显示一个数字,比如1ms,然后马上关掉第一个,再让第二个显示另一个数字,持续1ms,再关掉第二个,然后重复循环刷新,这样两个位就显示了不一样的数字。

对于要显示的数字的拆解,比如234,三位分别是 2 = 234/100 ; 3 = 234 /10 % 10; 4 = 234%10; 6位数据则以此类推。 模块设计:

首先需要一个数码管动态显示模块,能够依次点亮 6 个数码管,并将对应的数据输出至数码管,也就是需要分别控制段选和位选信号;同时还需要一个计数模块,能够将 0—999999 依次输出至数码管动态显示模块。

data:计数模块将计数值通过 data 端口传递给数码管动态显示模块,en:使能信号 en 使能数码管显示数据,point:小数点显示信号 point 控制小数点的显示,sign:符号信号 sign 可以让数码管显示负号。

计数模块(count):显示的数字每 100ms 加“1”。 数码管动态显示模块(seg_dig):数码管动态显示模块在数码管上以动态方式显示数值。每1ms动态刷新一次。

也就是100ms显示的数值加1,而每1ms位选加1,最多6ms刷新完一周期,这样一个数值就可以显示多次,人眼就可以看到数字。这个1ms。如果再大(也就是变慢)可能会让我们看到闪烁,而如果再快,那就会浪费资源。

计数模块,产生数码管的数据 module count( input sys_clk, input sys_rst_n, output reg [19:0] data, //显示的数据 0-999999 ,20位 output reg [5:0] point, //小数点 output reg sign, //负号 output reg en //使能显示 ); reg [22:0] cnt; //100ms计数器 reg flag; //100ms标志 parameter MAX_CNT = 5_000_000; //计数器100ms always @(posedge sys_clk or negedge sys_rst_n)begin if(!sys_rst_n)begin cnt


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有