myhdl 约束将多个引脚关联到一个变量
myhdl constraints associating multiple pins to a variable
我将使用 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 作为单个字节一起处理...
最直接的方法是将约束更改为
set_io LED[2] A2
然后使用单个 LED 端口
def ledcount(leds, clk)
并且可以转换为
clk = Signal(bool(0))
leds = Signal(intbv(0)[8:])
myhdl.toVerilog(ledcount, leds, clk)
我将使用 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 作为单个字节一起处理...
最直接的方法是将约束更改为
set_io LED[2] A2
然后使用单个 LED 端口
def ledcount(leds, clk)
并且可以转换为
clk = Signal(bool(0))
leds = Signal(intbv(0)[8:])
myhdl.toVerilog(ledcount, leds, clk)