У меня есть массив размером 2400. Я хочу иметь возможность обновлять определенный бит в этом массиве на основе комбинационной логики, которая определяет индекс этого бита.SystemVerilog: нужно изменить 2 бита в очень большом массиве
Доступ к биту напрямую дает мне ошибку с несколькими драйверами из-за того, что уже назначил массив начальному значению, и после попытки реализовать конечный автомат я нашел его почти невозможным из-за того, что ему потребовалось предыдущее значение всего массив. т.е.: Нельзя назначать диапазоны с переменной.
logic [0:2400] big_array;
assign big_array = {ALL BITS ASSIGNED};
//Here is where I want to be able to update
logic [11:0] index;
//INDEX Determined via logic
assign big_array[index] = 1'b0;
Любая помощь была бы замечательной!
Примечание: Я уверен, что смогу выполнить это через некоторый тип конечного автомата, потому что я назначаю исходное значение, но я не могу понять это. Возможно ли присвоить приоритет?
Вычитание из вопросов, так как число будет слишком большим.
Удалить все инструкции 'assign'. Используйте цикл 'for' в' always @ (*) 'для назначения значений всем переменным. Всякий раз, когда 'i == index' (' i' является итератором цикла), тогда присвойте '1'b0' в этом индексе. – sharvil111
@ sharvil111 SystemVerilog должен использовать 'always_comb' вместо' always @ (*) ' – Greg
@Greg Oh ya, событие с нулевым временем и повышенная чувствительность для функций. 'always_comb' - это хорошо. Благодарю. – sharvil111