數(shù)碼管是一種常見的用于顯示的電子器件,根據(jù)數(shù)碼管大致可以分為共陰極和共陽極兩種,下圖所示的是一個(gè)共陽極的數(shù)碼管的電路圖(摘自金沙灘工作室的 51 開發(fā)板電路圖),我的 AX301 開發(fā)板與這張圖的情況類似,幾乎所有的教科書上都會(huì)講到數(shù)碼管的原理,這里我就不再詳述了。
由于多個(gè)數(shù)碼管的段選信號(hào)(下圖中的 DB0~DB7)是共用的,想要顯示多個(gè)數(shù)字需要用到動(dòng)態(tài)掃描,動(dòng)態(tài)掃描電路需要使用時(shí)鐘。冒然的使用時(shí)鐘會(huì)使得初學(xué)者不知所措,所以在這篇基礎(chǔ)的組合邏輯電路中只點(diǎn)亮單個(gè)數(shù)碼管,這樣就不必涉及到時(shí)鐘了。時(shí)鐘、時(shí)序邏輯這些概念則會(huì)留到后面的章節(jié)中介紹。
由上圖可知,所有的引腳都是低電平有效的,如果想要在上圖中的 DS6 上顯示 8,需要把 LEDS5、DB7 ~ DB10 都置為低電平。
這次我們的實(shí)驗(yàn)?zāi)康氖窃跀?shù)碼管上顯示一個(gè) 8,在查看自己開發(fā)板的電路圖后得知,需要將 FPGA 的輸出管腳 SEL0、DIG0~DIG6 設(shè)為低電平(DIG7 為小數(shù)點(diǎn) DP),需要注意的是 SEL0 控制的是最右邊的數(shù)碼管。
我的開發(fā)板電路圖(摘自 黑金AX301 提供的 PDF 文件):
根據(jù)上面的總結(jié),新建名為 seg 的工程,為了使我們的代碼有一定的通用性,這里用到了參數(shù)聲明。
數(shù)碼管顯示模塊 seg_display 接受輸入信號(hào) num 的值,并轉(zhuǎn)化編碼用于顯示。
頂層模塊 seg(必須和工程同名),在頂層模塊中調(diào)用了 seg_display 顯示模塊,并且告訴 seg_display 模塊需要在 SEL0 上顯示 8,這段代碼如下:
由于工程需要用到的管腳較多,如果手動(dòng)分配可能會(huì)出現(xiàn)錯(cuò)誤,這里介紹使用 tcl 腳本來分配管腳的方法。
如圖新建一個(gè) TCL 文件:
板子附帶的資料有一個(gè)廠家寫好名為 ax301.tcl 的管腳分配文件,粘貼以下內(nèi)容并保存為 ax301.tcl。
可以看到,tcl 文件在第 2 行定義了芯片家族,第 3 行定義芯片型號(hào),第 4 行設(shè)置不用的管腳為三態(tài)……
在 Quartus 主窗口下點(diǎn)擊 Tools,找到以下選項(xiàng):
運(yùn)行 tcl 文件。
最后編譯整個(gè)工程,編譯結(jié)束后查看管腳分配窗口,可以看到所有的管腳都自動(dòng)分配成功了。
最后下載 sof 文件到您的板子上,看到您期待的數(shù)字了嗎?(*^__^*) ,此外如需顯示其他的數(shù)字,只需要修改 seg.v 中 num 的值即可。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618554 -
電子器件
+關(guān)注
關(guān)注
2文章
603瀏覽量
32797 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1889瀏覽量
92625 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5682瀏覽量
104808
發(fā)布評論請先 登錄
數(shù)碼管共陰和共陽的區(qū)別
基于FPGA實(shí)現(xiàn)數(shù)碼管顯示

評論