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