在數(shù)字FPGA電路中,作為入門級(jí)別的外設(shè)除LED燈外,數(shù)碼管算是使用頻率最多、應(yīng)用范圍最廣的一個(gè)核心集成外設(shè)了,因此學(xué)習(xí)數(shù)碼管的使用非常有必要,下面一起來看看數(shù)碼管的顯示原理及其實(shí)現(xiàn)方式吧!
1. 數(shù)碼管顯示原理
數(shù)碼管是電子設(shè)計(jì)中常用的外設(shè)設(shè)備之一,用來顯示一些數(shù)據(jù)數(shù)值。常見的數(shù)碼管有單個(gè)的以及多個(gè)共用一起的,那么首先由最簡(jiǎn)單的單個(gè)數(shù)碼管的原理介紹,方便大家的理解。如下圖a所示:
圖a單個(gè)數(shù)碼管內(nèi)部結(jié)構(gòu)
這就是一個(gè)常見的單個(gè)數(shù)碼管內(nèi)部的結(jié)構(gòu)造型,可以理解成7個(gè)長(zhǎng)方形的LED小燈組成,由這些小燈的亮滅狀況來組成數(shù)碼管顯示的不同數(shù)值,下面我以手繪圖展示幾個(gè)數(shù)字的情況,大家應(yīng)該能更清楚直觀的明白其工作原理,如下圖b所示:
圖b顯示數(shù)字024
這里是三個(gè)單獨(dú)的數(shù)碼管,分別顯示數(shù)字0、2、4,所以數(shù)碼管的原理可以簡(jiǎn)單的理解為點(diǎn)亮小燈的組合排列即可(具體內(nèi)部電路的可以參考后面的附錄,因?yàn)槠洳粚儆?a href="http://wenjunhu.com/v/tag/8791/" target="_blank">數(shù)字電路的內(nèi)容,故放在附錄中),明白了數(shù)碼管的原理那么再來實(shí)現(xiàn)這部分的操作就很簡(jiǎn)單啦,下面就一起具體看看是如何實(shí)現(xiàn)的吧。
2. 數(shù)碼管顯示部分的程序?qū)崿F(xiàn)
在日常生活中燈的亮滅是通過開關(guān)來進(jìn)行控制,開可以理解為一個(gè)高電平的指令,關(guān)則相反,而在數(shù)字電路中,邏輯電平高低分別用1和0來進(jìn)行表示,因此要實(shí)現(xiàn)點(diǎn)亮數(shù)碼管的功能,也就可以通過0和1來進(jìn)行控制a~g這七個(gè)小燈,比如讓數(shù)碼管顯示1那么只需要b、c這兩個(gè)小燈點(diǎn)亮就可以了,那么下面就來實(shí)現(xiàn)數(shù)碼管顯示部分的程序,使用的Verilog語言:
module one_digit(
input [3:0] data,
output [7:0] seg
);
reg [7:0] seg;
always @(data) begin
case(data)
4'h0:seg = 8'b11000000;
4'h1:seg = 8'b11111001;
4'h2:seg = 8'b10100100;
4'h3:seg = 8'b10110000;
4'h5:seg = 8'b10010010;
4'h4:seg = 8'b10011001;
4'h6:seg = 8'b10000010;
4'h7:seg = 8'b11111000;
4'h8:seg = 8'b10000000;
4'h9:seg = 8'b10010000;
4'ha:seg = 8'b10001000;
4'hb:seg = 8'b10000011;
4'hc:seg = 8'b11000110;
4'hd:seg = 8'b10100001;
4'he:seg = 8'b10000110;
4'hf:seg = 8'b10111111;
endcase
end
endmodule
以上就是基于的是LUT查找表的原理所寫的單個(gè)數(shù)碼管顯示的程序。
3. 數(shù)碼管程序的驗(yàn)證
當(dāng)寫完一部分語法驗(yàn)證沒有錯(cuò)誤、編譯能夠成功的程序后,下面要做的就是核心的功能驗(yàn)證,那么對(duì)于上面的數(shù)碼管程序如何進(jìn)行驗(yàn)證呢?
對(duì)于FPGA設(shè)計(jì)的驗(yàn)證來說,常見的驗(yàn)證方式有兩種:a.仿真驗(yàn)證b.下板驗(yàn)證,當(dāng)身邊沒有合適硬件板卡的時(shí)候,仿真驗(yàn)證往往是不錯(cuò)的選擇,這個(gè)時(shí)候借助一些EDA工具,可以方便的驗(yàn)證好設(shè)計(jì)的程序邏輯功能是否正確,Modelsim就是這樣一款便于仿真驗(yàn)證的工具,當(dāng)然進(jìn)行仿真驗(yàn)證的時(shí)候也需要進(jìn)行激勵(lì)的輸入(編寫一部分代碼),下面對(duì)這個(gè)數(shù)碼管的程序使用仿真驗(yàn)證的方式看看效果吧,如下圖c所示:
圖c數(shù)碼管仿真結(jié)果
可以從仿真波形的高低判斷出對(duì)應(yīng)的數(shù)碼管內(nèi)部LED小燈的亮滅情況,由此排列組合推斷出實(shí)際的數(shù)碼管顯示情況,以此作為仿真驗(yàn)證判斷的依據(jù),下面給出仿真驗(yàn)證的程序:
`timescale 1ns/1ns
module TB_one_dight;
reg [3:0]data;
wire[7:0]seg ;
one_digituut(
data,
seg
);
initial begin
data= 0;
#100;
repeat(16)begin
data= data+ 1;
#100;
end
$stop;
end
endmodule
至于實(shí)物驗(yàn)證的部分的話,建議結(jié)合相關(guān)的硬件板塊配套例程來進(jìn)行學(xué)習(xí)驗(yàn)證,這里就不做板卡推薦了,F(xiàn)PGA板卡以實(shí)物配套為文檔教程為準(zhǔn)。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603419 -
led
+關(guān)注
關(guān)注
242文章
23277瀏覽量
660893 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110101 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1882瀏覽量
91124 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1605瀏覽量
80625
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論