1

我将使用 iCE40HX8K

给定评估板约束文件

set_io LED3 A2  
set_io LED7 B3  
...  
etc  

将所有 8 个 LED 捆绑到一个变量中的最佳方法是什么

#main module
def ledcount(LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, clk):

在向 LED 写入寄存器时,我不得不求助于这个

op.next = op + 1
LED1 = op[0]
...
LED8 = op[7] 

我正在生成这样的verilog ...(我在这里确实有来自单个信号的单个切片位,但它似乎会导致问题 - 即约束中的 LED3 不分配给任何东西)

clock = Signal(bool(0))
l1 = Signal(bool(0))
...
l8 = Signal(bool(0))
toVerilog(ledcount, l1, l2, l3, l4, l5, l6, l7, l8, clock)

已经够糟糕了,但它会因为并行地址和数据总线而变得笨拙......

我注意到在生成的verilog LED1-8 是这样指定的

input LED1;
...
input LED8;

在 always 子句之前和 always 里面

reg LED1;
...
reg LED8;

虽然所有这些都可以编译(硬件应该明天到货!)并且它可能(?)甚至可以工作......我相信它可以做得更好!

我很乐意使用位操作将 LED 一起作为单个字节处理......

4

1 回答 1

1

最直接的方法是将您的约束更改为

set_io LED[2] A2

然后使用单个 LED 端口

def ledcount(leds, clk)

它可以转换为

clk = Signal(bool(0))
leds = Signal(intbv(0)[8:])
myhdl.toVerilog(ledcount, leds, clk)
于 2016-02-25T14:01:06.673 回答