编程iceStorm二进制文件到哪个地址?

programming iceStorm binary file to which address?

我正在尝试此处提供的第一个示例:http://www.clifford.at/icestorm/

我正在尝试使用 digilent adept 程序在 windows 中对 iCEblink40-HX1K 板进行编程 https://reference.digilentinc.com/reference/software/adept/start?redirect=1#software_downloads

当我启动 Adept 时,程序显示:

Loading board information... Warning: Could not find specific board information Default information loaded.

当我从 iCEstorm 选择 example.bin 程序时,专家程序显示 "Invalid address. Address must be entered as Binary, DEcimal, or Hexadecimal value."。

所以我只输入了零,点击"file>>Device"上传二进制文件,程序说:

Successfully read 32220 bytes from F:\me\fpga\example.bin.

然而,板子已经自带的"blinking lights"演示只保留运行。似乎什么都没有改变。

我认为 example.bin 文件中的地址不正确,或者 digilent adept 程序缺少板信息是问题的原因。

无论如何,有人知道地址是什么吗?

我还没有解决方案,但是 iCE40ProgrammingandConfiguration.pdf http://www.latticesemi.com/view_document?document_id=46502 在第 12 页上说:

Upon initial power-up, the start address is always 0x00_0000. After waiting eight additional clock cycles, the iCE40 device begins reading serial data from the SPI PROM.

看来从 0 开始对 .bin 文件进行编程应该可行。

我已经尝试使用 icecube2 附带的 iceutil 编程器进行编程,如 iCEblink40HX1KEvaluationKitUsersGuide.pdf http://www.latticesemi.com/view_document?document_id=45922

FPGA Bitstream Configuration File The required bitstream image is part of the iCEcube2 project. Multiple versions of the bitstream are stored in the _Implmnt\sbt\outputs\bitmap directory. The raw hexadecimal version of the bitstream is called _bitmap.hex. The alternate format of the same information is an Intel hexadecimal file called _bitmap_int.hex. Raw Hexadecimal Command Example /iceutil -d iCE40 -res -cr -m M25P10A -fh -w _bitmap.hex Intel Hexadecimal Command Example /iceutil -d iCE40 -res -cr -m M25P10A -fi -w _bitmap_int.hex

我假设我的文件应该被编程为二进制文件,使用 -fb

iceutil -d iCE40 -res -cr -m M25P10A -fb -w <my path>/example.bin

这似乎已经编程,capsense 演示停止在板上工作,红色电源 LED 亮起,黄色 "done" LED 亮起,iceutil 工具显示:

Doing partial erase of flash memory device Writing file /example.bin to flash memory device Bytes written to flash: 32220

但是,示例文件应该是输入 1 和 10,并在 11 上产生输出。这是行不通的。而且所有的 LED 灯都暗淡地亮着,这似乎是错误的。

// example.v
module top (input a, b, output y);
  assign y = a & b;
endmodule

# example.pcf
set_io a 1
set_io b 10
set_io y 11

我已经尝试使用 iceutil 对 capsense 演示进行编程,效果很好。

开始看起来我不能将 yosys 二进制文件与 iceutil 编程器一起使用,除非我使用了错误的语法。

谢谢克利福德,现在可以了。

首先是一点小小的吐槽(针对设计 PCB 的人)。

  • HX1K 评估套件(第 4 页)上的 header 行旁边有数字: http://www.mouser.com/pdfdocs/iCEblink40Datasheet.pdf 这些与 vq100 封装上的实际引脚不对应,数据 sheet 也没有提及这些数字的含义。

  • 但是,在第 14 页上它确实提到了哪个 fpga 引脚最终连接到哪个连接器。

  • 原理图大佬连vq100封装都懒得画了?!

带有 vq100 引出线的简单图像或 table 也很难找到。 Lattice 确实提供了一个 excel sheet: http://www.latticesemi.com/~/media/LatticeSemi/Documents/PinPackage/iCE/iCE40PinoutHX1K.xlsx?document_id=49383 但它假定您知道 "IOL_1A" 的含义。 HX1K 数据sheet 没有引出线概览。到底是怎么回事?

总之,言归正传: 我注意到 vq100 封装上的引脚 11 是电源引脚,因此 ice40stick 的示例永远不会使用相同的引脚分配。 将 I/O 引脚重新分配给引脚 1、2 和 3 后,该示例就可以正常工作了! 我用 iceutil.exe 刷了它,出于某种原因,Adept 软件拒绝再刷任何东西。

非常感谢,现在是时候开始尝试一下代码了。