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