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