TangNano 9K控制多個(gè)LED目標(biāo)--part 1
正文:
開(kāi)始
這個(gè)項(xiàng)目建立在其他幾個(gè)HacksterIO項(xiàng)目之上
?速度唐9k納米與OSS CAD套件
?使用串口控制Tang9K Nano上的led
本系列項(xiàng)目的目標(biāo)是展示如何通過(guò)串口控制幾個(gè)LED目標(biāo)。LED的硬件目標(biāo)是:
?Tang9K Nano上的6個(gè)led
?NeoPix棒8 x 5050 led冷白色
?Blinkt! Pimoroni board
最基本的
為了訪問(wèn)每個(gè)LED硬件板,該設(shè)計(jì)利用了一個(gè)開(kāi)放的標(biāo)準(zhǔn)總線架構(gòu):每個(gè)LED硬件板都是一個(gè)可以在唯一總線地址訪問(wèn)的WishBone外圍設(shè)備。從串行端口,每個(gè)LED硬件板可以通過(guò)簡(jiǎn)單的總線寫(xiě)入命令訪問(wèn)。
這是一個(gè)框圖,顯示了Tang9k Nano中verilog代碼的基本組件
TX/RX串行:來(lái)自BL702的串行流。最大串行速率為8Mbps,對(duì)于本設(shè)計(jì)將使用3Mbps
串行:解碼/編碼串行流信息的Axis數(shù)據(jù)流。軸流是帶有就緒/數(shù)據(jù)信號(hào)的字節(jié)接口。
Wishbone master接收字節(jié)流并將其轉(zhuǎn)換為Wishbone總線命令。讀/寫(xiě)總線事務(wù)。
MUX:是一個(gè)總線多路復(fù)用器,它將地址空間分割成每個(gè)LED硬件的塊。每個(gè)LED硬件接口都是一個(gè)wishbone外設(shè)。
Tang9LEDs: Wishbone總線外設(shè),每個(gè)LED作為數(shù)據(jù)中的一個(gè)位。3不同的地址被暴露:
0:直接訪問(wèn)led。數(shù)據(jù)將反映led是什么
4: OR操作。led的當(dāng)前狀態(tài)與數(shù)據(jù)一致。這是一個(gè)開(kāi)關(guān)。
8: NOT操作:當(dāng)數(shù)據(jù)為1時(shí),將led熄滅。
下面是verilog代碼:
串行協(xié)議
在這個(gè)項(xiàng)目中有一個(gè)python腳本ledTester.py。這是對(duì)Tang9K nano上的led進(jìn)行測(cè)試。
tang9K nano暴露了兩個(gè)串行端口,第一個(gè)用于FPGA編程。第二個(gè)串行端口允許FPGA訪問(wèn)RX/TX引腳。
本例使用的波特率為3Mbps。板載鎖相環(huán)需要?jiǎng)?chuàng)建一個(gè)130Mhz時(shí)鐘來(lái)解碼串行流并為其他LED模塊生成時(shí)鐘。
查看python代碼:
A2:寫(xiě)命令
0,0,0,0:為地址。這是一個(gè)32位地址
0,4:表示跟隨的數(shù)據(jù)字節(jié)數(shù)
Led_val, 0,0,0:為L(zhǎng)ed_val的32位數(shù)據(jù)
另外兩個(gè)函數(shù)訪問(wèn)OR和NOT
本文編譯自hackster.io