Ограничения myhdl, связывающие несколько контактов с переменной

Я буду использовать iCE40HX8K

учитывая файл ограничений оценочных плат

set_io LED3 A2  
set_io LED7 B3  
...  
etc  

Каков наилучший способ объединить все 8 светодиодов в одну переменную? У меня возникли проблемы с привязкой вещей к файлу ограничений, и в итоге получилось что-то вроде этого

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

при записи регистра на светодиоды мне приходится прибегать к этому

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;

перед пунктом всегда и внутри всегда

reg LED1;
...
reg LED8;

Хотя все это компилируется (аппаратное обеспечение должно прибыть завтра!), И оно может (?) Даже работать... Я уверен, что это можно сделать лучше!

Я был бы очень рад обрабатывать светодиоды вместе как один байт, используя битовые манипуляции...

1 ответ

Решение

Самое простое - это изменить ограничения

set_io LED[2] A2

а затем использовать один светодиодный порт

def ledcount(leds, clk)

и это может быть преобразовано в

clk = Signal(bool(0))
leds = Signal(intbv(0)[8:])
myhdl.toVerilog(ledcount, leds, clk)
Другие вопросы по тегам