我正在尝试这里提供的第一个示例: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程序的电路板信息是导致问题的原因。
无论如何,有人会知道它可能是什么地址吗?
答案 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程序员一起使用,除非我使用了错误的语法。