数码管在FPGA只玩过一次,简单地说说其原理。
一,任何设计都要基于原理图。控制数码管的方式有两种:1.每一段对应FPGA的一个IO口,如果要操作的话直接给IO口高低电平就可以了。2.译码器。这种算是比较常见的了。为什么呢?因为这种方式可以大大节约FPGA的引脚。要知道一个FPGA引脚虽多,但是还有其他很多外设需要连接。著名的译码器有74ls138.
二,就是设计部分。我们知道,1s=1000ms=1000_000us=1000_000_000ns.然后我们在看晶振的频率(一般是50M,我们就当50M来算吧)。50M的clk的周期为20ns(1/50M).那么1s也就需要1000_000_000/20=50_000_000个clk。FPGA里面的计时器实际就是一个计数器。我们需要实现的是1s的时候数码管从0变成1,再过1s的时候从1变成2...现在我们先reg [25:0] cnt, cnt的初始值为0,当计数到49_999_999的时候再让它置0.
always@(posedge clk_50M)
if(rst)
cnt<=0;
else if(cnt==49_999_999)
cnt<=0;
else
cnt<=cnt+1;
当cnt==49_999_999的时候代表正好是1s了,这时候就可以把数码管的0,变成1.当下一个cnt=49_999_999数码管的1变成2...
但是一位数码管只能显示到9,所以,当数码管显示9并且cnt又计数到49_999_999的时候就要把第一个数码管置0,第二个数码管从0变1.其他依此类推。
既然是4位数码管,最多计数到59分59秒.注意的是:第1 3位数码管是9->0;第2 4位数码管是5->0.当为59分59秒且cnt==49_999_999的时候全部归0.
标签:数码管线路板
地址:深圳市宝安区松岗街道东方社区大田洋南六路4号鑫浩顺智造创新园 B栋301
手机:15820766688
手机:18877857888
邮箱:feng61150700@126.com
深圳:0755-29917 109
广西:0771- 7555190
网址: