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

时间:2017-01-12 10:38:21

标签: yosys ice40

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

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

当我启动Adept时,程序说:

  

加载板信息...警告:找不到具体的板卡   信息已加载默认信息。

当我从iCEstorm中选择example.bin程序时,熟练的程序会说“无效的地址。地址必须输入为二进制,十进制或十六进制值。”。

所以我刚进入零,点击“文件>>设备”上传二进制文件,程序说:

  

从F:\ me \ fpga \ example.bin成功读取32220个字节。

然而,已经随板附带的“闪烁灯”演示一直在运行。似乎没有任何改变。

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

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

2 个答案:

答案 0 :(得分:0)

谢谢克利福德,现在它有效。

首先是一个迷你咆哮(针对布置PCB的人)。

  • HX1K评估套件(第4页)上的标题行旁边有数字: http://www.mouser.com/pdfdocs/iCEblink40Datasheet.pdf 这些与vq100封装上的实际引脚不对应,数据表中没有提到这些数字应该是什么意思。

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

  • 原理图人员甚至懒得去绘制vq100包裹?!

也很难找到带有vq100引脚的简单图像或表格。 莱迪思确实提供了一张excel表: http://www.latticesemi.com/~/media/LatticeSemi/Documents/PinPackage/iCE/iCE40PinoutHX1K.xlsx?document_id=49383 但它假设你知道什么" IOL_1A"手段。 HX1K数据表没有引脚概述..究竟是怎么回事?

无论如何,回到公司: 我注意到vq100封装上的引脚11是一个电源引脚,因此ice40stick的示例永远不会使用相同的引脚排列。 在将I / O引脚重新分配给引脚1,2和3之后,这个例子正常工作! 我使用iceutil.exe将其刷新,出于某种原因,Adept软件拒绝再做任何闪存。

非常感谢,现在是时候开始使用代码了。

答案 1 :(得分:-1)

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

  

初次上电时,起始地址始终为0x00_0000。后   等待8个额外的时钟周期,iCE40设备开始读取   来自SPI PROM的串行数据。

所以看起来编写.bin文件从0开始应该有效。

我尝试使用icecube2附带的iceutil程序员编程,如中所述 iCEblink40HX1KEvaluationKitUsersGuide.pdf http://www.latticesemi.com/view_document?document_id=45922

  

FPGA比特流配置文件所需的比特流图像是其中的一部分   iCEcube2项目。存储多个版本的比特流   在_Implmnt \ sbt \ outputs \ bitmap目录中。原始的   比特流的十六进制版本称为_bitmap.hex。   相同信息的备用格式是Intel十六进制   文件名为_bitmap_int.hex。   原始十六进制命令示例   / iceutil -d iCE40 -res -cr -m M25P10A -fh -w   _bitmap.hex   英特尔十六进制命令示例   / 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亮起,黄色“完成”LED亮起,而iceutil工具说:

  

部分擦除闪存设备   将文件/example.bin写入闪存设备   写入闪存的字节: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程序员一起使用,除非我使用了错误的语法。