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数据流。轴流是带有就绪/数据信号的字节接口。
Wishbone master接收字节流并将其转换为Wishbone总线命令。读/写总线事务。
MUX:是一个总线多路复用器,它将地址空间分割成每个LED硬件的块。每个LED硬件接口都是一个wishbone外设。
Tang9LEDs: Wishbone总线外设,每个LED作为数据中的一个位。3不同的地址被暴露:
0:直接访问led。数据将反映led是什么
4: OR操作。led的当前状态与数据一致。这是一个开关。
8: NOT操作:当数据为1时,将led熄灭。
下面是verilog代码:
串行协议
在这个项目中有一个python脚本ledTester.py。这是对Tang9K nano上的led进行测试。
tang9K nano暴露了两个串行端口,第一个用于FPGA编程。第二个串行端口允许FPGA访问RX/TX引脚。
本例使用的波特率为3Mbps。板载锁相环需要创建一个130Mhz时钟来解码串行流并为其他LED模块生成时钟。
查看python代码:
A2:写命令
0,0,0,0:为地址。这是一个32位地址
0,4:表示跟随的数据字节数
Led_val, 0,0,0:为Led_val的32位数据
另外两个函数访问OR和NOT
本文编译自hackster.io