FPGA学习系列:18. 数码管的设计.doc

上传人:白大夫 文档编号:3251722 上传时间:2019-08-06 格式:DOC 页数:5 大小:23KB
返回 下载 相关 举报
FPGA学习系列:18. 数码管的设计.doc_第1页
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《FPGA学习系列:18. 数码管的设计.doc》由会员分享,可在线阅读,更多相关《FPGA学习系列:18. 数码管的设计.doc(5页珍藏版)》请在三一文库上搜索。

1、FPGA学习系列:18. 数码管的设计设计背景:数码管是一种半导体发光器件,其基本单元是发光二极管。数码管在我们的许多设计中都又用到,数码管的显示原理简单和显示效果清晰在我们的工业中的到了广泛的应用。数码管的应用很广泛,涉及众多领域,我们就拿数显仪表这个领域来讲,数显仪表是数字式显示仪表的简称,显示器常用的有LED、LCD为显示元件。设计原理:本次的设计是设计一个数码管的显示模,其设计原理图如下:数码管显示分为的动态和静态显示,为了让人眼可以看清数码管的显示,我们一般驱动数码管的频率为1K - 10K 之间。顾名思义,七段数码管就是使用七段点亮的线段来拼成常见的数字和某些字母,这种显示方式我们

2、在数字电路中非常容易见到。再加上右下角显示的小数点,实际上一个显示单元包括了8根信号线。根据电路设计的不同,这些信号线可能高有效也可能低有效。我们通过FPGA控制这些线段的亮灭,达到显示效果。对于多个数码管的显示模块,将每一个都连接到FPGA的管脚会耗用大量FPGA的管脚资源。因此我们同样引入一种类似矩阵键盘的扫描方式。任何时刻我们只使用8根信号点亮一个数码管,但是8个数码管是随着时钟步调交替点亮的,只要时钟的速度够快,我们观察到数码管就好像几个同时点亮一样。我们的开发板使用的动态显示来循环扫描显示。其原理图如下所示:如图所示,我们的开发板使用的是六位共阳极数码管,六个PNP型三极管分别作为六

3、组数码管电源的输入开关,也就是我们常说的位选信号,PNP三极管为低电平导通,所以我们的位选信号低有效。在这里,为了节约FPGA的IO资源,我们把六个位选信号连接到了三八译码器74HC138D。从我们的板子硬件原理图上我们可以看清,我们的数码管是红阳极,就是是给一个低电平就是点亮数码管的一个段,那么8段全部给8b0000000那么数码管显示的就是8这个数字了,我们用的是循环显示,是通过sel引脚来选择哪一个数码管亮,也就是说我们的sel的三位为3b000的时候也就是选择第一个数码亮,3b001第二个数码管亮依次类推。设计架构图:设计代码:顶层模块0moduleseg_x(clk,rst_n,se

4、l,seg7);/顶层端口1 inputclk; /输入2 inputrst_n;3 output2:0sel; /输出4 output7:0seg7;56 wire23:0num;78 num_in num_in( /例化输入模块9 .clk(clk),10 .rst_n(rst_n),11 .num(num)12 );1314 seg seg( /例化数码管模块15 .clk(clk),16 .rst_n(rst_n),17 .sel(sel),18 .seg7(seg7),19 .data_in(num)20 );21endmodule设计模块0moduleseg(clk,rst_n,s

5、el,seg7,data_in);/端口定义12 inputclk;3 inputrst_n;4 input23:0data_in;/输入6个灯的数据56 outputreg2:0sel;7 outputreg7:0seg7;89 parameters0 =3b000;10 parameters1 =3b001;11 parameters2 =3b010;12 parameters3 =3b011;13 parameters4 =3b100;14 parameters5 =3b101;1516 defineT1ms 50_000 /定义1k的计数值17 /define T1ms 518 reg

6、15:0count;19 wireflag;20 always(posedgeclk ornegedgerst_n)21 if(!rst_n)22 begin23 count 测试模块0timescale1ns/1ps/时间精度12moduleseg_tb;3 regclk; /端口定义4 regrst_n;567 wire2:0sel;8 wire7:0seg7;910 initialbegin11 clk =1b1;12 rst_n =1b0;1314 #100.1rst_n =1b1;1516 #20000017 $stop;1819 end20 always#10clk =clk;/模拟时钟2122 seg_x seg_x_dut( /例化顶层模块23 .clk(clk),24 .rst_n(rst_n),25 .sel(sel),26 .seg7(seg7)27 );28endmodule仿真图:在仿真中我们可以看到我们的设计是正确的,第一个灯亮的是f9,也就是也就是对应数码管显示的是1,a4就是2,和我们的输入是正确的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1