Я буду использовать 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;
перед предложением always и внутри всегда
reg LED1;
...
reg LED8;
Пока все это компилируется (оборудование должно прибыть завтра!) и может (?) даже работать... Я уверен, что это можно сделать лучше!
Я был бы очень рад обрабатывать светодиоды вместе как один байт, используя манипуляции с битами...