#spi #programmers #fpga #lattice #family #ftdi #chip

app iceprogrs

针对Lattice iCE40系列FPGA的基于SPI的SRAM编程器

2个版本

0.1.1 2023年3月6日
0.1.0 2023年1月3日

#1269硬件支持

Apache-2.0 OR MIT

10KB
141

iceprogrs

针对Lattice iCE40系列FPGA的基于SPI的SRAM编程器。

描述

它的工作方式类似于 iceprog,但不需要在常用开发板上提供的FTDI芯片。它通过Linux内核驱动程序spidevgpiochip使用GPIO线和SPI设备,使用spidevgpiod-rs存储库。

用法

您需要以下内容

  • 一个由spidev驱动的SPI端口,其中
    • SCK(时钟)线连接到iCE40的SPI_SCK引脚
    • MOSI(或数据输出)线连接到iCE40的SPI_SI引脚
  • 两个GPIO线
    • 一个连接到SS_B引脚
    • 一个连接到CREST引脚

由于该信号在传输期间需要保持低电平,因此不使用SPI从机选择线。在正常的SPI使用中,从机选择线在数据包(字节)之间释放。

但是,在许多设备中,您可以配置您喜欢的引脚,因此您可以使用标有SS的引脚作为GPIO引脚。

使用Beaglebone Black和Lattice iCE40HX8K扩展板的示例

板上的修改

  • 移除所有跳线
  • 使用热风枪或加热镊子移除R1、R4、R5和R6
  • 焊接+5V和地线。PCB的另一侧USB连接器下方有一个大的5V迹线,刮除焊膏以到达铜,找到一个方便的地点。
  • 将线焊接到R1(以获得SCK)、R4(以获得SS_B)、R5(以获得CDONE)和R6(以获得CREST)的北端焊盘
  • CDONE上拉到VCCIO(用于SPI的电压,通常是3.3V)
  • SDO连接到J6的4号引脚(西北角)

引脚配置

按照以下方式配置您的引脚。我建议在Beaglebone附近放置100到150欧姆的串联电阻以提供保护和信号完整性。

config-pin P9.17 gpio
config-pin P9.18 spi
config-pin P9.21 spi
config-pin P9.22 spi_sclk
config-pin P9.23 gpio

按照以下方式连接

BBone引脚 类型 iCE40引脚
P9.17 GPIO SS_B
P9.18 SPI SDO
P9.22 SPI SCK
P9.23 GPIO CREST
P9.2 GND

运行命令

./iceprogrs --bitstream blinky.bin --spi-speed 5000000

使用5 MHz频率,配合20至30厘米的自制线缆工作。

作者

伯克·杜拉克 [email protected]

依赖项

约2MB
约39K SLoC