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