问题标签 [ice40]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1550 浏览

verilog - 理解 Lattice ICE40 中的 SB_IO 原语

我正在玩clifordwolf/picorv32,并且在理解以下代码段时遇到了一些问题picosoc链接到源代码):

我在Lattice iCE40 技术库文档中找到了SB_IO原语的图形描述,但我仍然无法理解它的用途,因为它对我来说太复杂了无法解释。还有一个问题关于原语的问题,在阅读后我认为它会创建某种双向连接,但我不明白这与使输出引脚“三态”有什么关系。

SB_IO我将不胜感激在此特定配置下对单元效果的高级描述。哪个引脚连接到哪个引脚?哪些是输入,哪些是输出?实例化这个单元格的目的是什么?

0 投票
1 回答
48 浏览

verilog - Verilog If 语句 - 似乎在 Condition 之前触发

为什么r_D <= 8'h40之前w_Rx_DV == 1'b1按照下面的代码和波形执行?在变高R_D之前不应分配任何值。w_Rx_DV

感谢您的任何评论

波形

0 投票
3 回答
544 浏览

verilog - 让 YOSYS 无法推断块 ram 阵列(而不是使用逻辑单元)verilog ice40

最近一段时间,我在一个使用查找表数组并让 yosys 将它们推断为块 ram 的项目中遇到了麻烦。Yosys 一直认为我的阵列中的一个或另一个应该使用逻辑单元来实现。

例子:

被推断为 IceStorm LC,因此很快超出了我的逻辑单元预算。

我读过一个数组需要有一个注册的输出,或者 Yosys 不认为它是 ram(这是真的吗?)我试图修改一些东西,以便我的数组最终在每个时钟计数时路由到一个寄存器。但我仍然无法让它工作。使用多个阵列,将它们一个一个复制到另一个,并让 yosys 将它们推断为块 RAM 的正确方法是什么?我需要避免什么?

0 投票
1 回答
51 浏览

yosys - 了解逻辑块 LC_5 位

我是 yosys 和 arachne-pnr 的新手。这是来自 .asc 和 .icebox_explain 的片段。我无法理解 LC_5 的位是如何从 .logic_tile 1 11 派生的。

例子.v

例子.asc

icebox_example.asc

如何从此流生成 LC_5 0000000000001111 0000?

这是不正确的。你能帮忙和指导吗?

0 投票
1 回答
46 浏览

fpga - arachne-pnr 中的 PIP 替代方案是什么?

在浏览router.cc文件时arcahne-pnr,我无法理解,可编程互连引脚 PIP 是如何路由的?看起来 PLL 是否代表代码中的 PIP?有人可以帮我弄清楚,什么对应于 PIP in arachne-pnr?谢谢

0 投票
1 回答
337 浏览

verilog - ice40 时钟延迟,输出时序分析

我有一个驱动 ASIC 的时钟和数据输入的 ice40。

ice40 驱动 ASIC 的时钟与驱动 ice40 内部逻辑的时钟相同。问题是上升时钟触发了ice40的内部逻辑并在上升时钟到达ASIC之前几纳秒改变了ice40的数据输出,因此ASIC在其上升时钟观察到错误的数据。

我已经通过使用逆变器链来延迟ice40 的内部时钟而不延迟驱动ASIC 的时钟来解决这个问题。这样,上升时钟在ice40 的数据输出改变之前到达ASIC。但这提出了几个问题:

  1. 我的策略——使用逆变器链来延迟ice40 内部时钟——是一个好策略吗?

  2. 为了诊断问题,我使用 Lattice 的 iCEcube2 来分析内部时钟和输出引脚之间的最小/最大延迟:

在此处输入图像描述

请注意,asic_dataX延迟比clk_out延迟短,表明存在问题。

有没有办法从 yosys/nextpnr 获取这些信息?

感谢您的任何见解!

0 投票
1 回答
373 浏览

arrays - 在一个写时钟周期内读取多个块 RAM 索引

我有一个应用程序,我以低时钟速度(clk_a)连续写入块内存,并且在这个慢时钟周期内需要以快速时钟速度(clk_b)从块内存读取三个索引以使用这些值作为数学模块中的操作数,结果在下一个慢时钟上写回块 ram。这三个索引是在慢时钟 posedge 写入的当前地址,加上两个直接相邻地址(addr_a -1 和 addr_a +1)。

什么是合成它的有效方法?迄今为止,我最好的尝试是使用一个以快速时钟速率运行的小计数器(三元组)来增加地址,但我最终用尽了逻辑,因为看起来 Yosys 没有正确推断出 ram。对此有什么好的策略?

这是我所拥有的:

0 投票
1 回答
62 浏览

yosys - 了解比特流 .bin 文件中 CRAM 位的组织

对于 iCE40 1k 设备,以下是命令“ iceunpack -vv example.bin ”输出的片段我不明白为什么有 332x144 位?我的理解是 [1],CRAM BLOCK[0] 从逻辑块 (1,1) 开始,它应该包含:

  • 48 个逻辑块,每个 54x16,
  • 14 个 IO 瓦片,每个 18x16

如何计算“332 x 144”?

IO 块和逻辑块位在 CRAM BLOCK[0] 位中映射到哪里?

例如,CRAM BLOCK[0] 的哪些位指示逻辑块 (1,1) 的位和 IO 块 (0,1) 的位?

[1]。http://www.clifford.at/icestorm/format.html

谢谢。

0 投票
1 回答
595 浏览

verilog - 在 Verilog 中使用门级描述的 JK 触发器给了我一个计时错误

我还在玩最低的 Verilog 级别(门级)。我发现了这篇文章: https : //electronics.stackexchange.com/questions/390661/is-it-possible-to-create-a-working-jk-flip-flop-using-gate-level-description-in我可以理解这个想法应该可行,我可以解决有一个主从 JK 触发器将其用作分频器。我使用 Icestorm 工具链,Yosys 没有抱怨,但 Next-PNR 给了我这个错误:

错误:由于存在组合循环、时序端口规范不完整等原因,时序分析失败。

这是我的代码:

好吧,如果我问发生了什么,我可以想象答案,我想知道为什么以及如何使它起作用!谢谢大家!

0 投票
1 回答
70 浏览

fpga - ICE40 SB_IO 原语的 Xilinx 等效原语?

我在 Verilog 中有一个示例项目,最初是用于 ICE40 FPGA,出于资源原因,我想将其导入 Xilinx FPGA。ICE40 中有一个定义输入/输出端口的 SB_IO 原语。我不太了解它,想知道 Xilinx FPGA 中是否有类似或等效的原语?或者如何将其转化为 Xilinx FPGA 域?

示例代码如下:

请帮忙,谢谢!