FPGA实战篇 | 您所在的位置:网站首页 › 数码管smg是什么意思 › FPGA实战篇 |
FPGA实战——动态数码管
rtl文件模块设计:计数模块,产生数码管的数据数码管显示驱动模块时钟分频数字转码(二进制—>BCD码)位选信号切换
调试warning:
ucf文件
**任务:**使用开发板上的 6 位数码管以动态方式从 0 开始计数,每 100ms 计数值加1,计数值从 0 到 999999 循环计数。 硬件设计:与上节相同。 共阳极的6个数码管 此次使用动态模式,相比静态模式,动态扫描就是利用人眼的余辉效果,先只打开第一个数码管,让第一个数码管显示一个数字,比如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 实验室设备网 版权所有 |