Поскольку вы просите мысли, а не исправление к коду (который не генерирует случайное число - точка 4), у меня есть несколько моментов:
1) данных представляет собой 2 бита выходной порт. Тем не менее, после перезагрузки, вы настраиваете его
data<= 4'hf; // 4 bits
Это должно быть изменено на 2'b11
2) Как сказал Грег, вы должны изменить свой выходной порт для
output reg [1:0] data
Поскольку вы выполняете процедурное присвоение данных, это должен быть рег, а не провод.
3) Вы должны понимать, что с помощью следующего кода:
data <= {data[1:0], feedback} ;
Вы по существу назначая 3-битный сигнал в 2-битном регистре. В этом случае MSB вашего сигнала (т.е. данные [1]) будет усечен. Вы могли бы существенно изменить это
data <= {data[0], feedback} ;
и вы бы иметь такую же функциональность.
4) Я создал рабочий пример кода: https://www.edaplayground.com/x/3YgQ
Глядя на результаты моделирования, вы можете увидеть, что ваш код не на самом деле генерации случайных 2-разрядное число, а следует за четкий рисунок. Ваша формула не будет работать для 2-битного номера. Вы можете понять, почему в качестве мысленного эксперимента.
Создайте тестовый стенд и запустите симуляцию, чтобы увидеть, является ли случайное распределение тем, что вы ожидаете. – toolic
Это выглядит странно: 'data <= {data [1: 0], обратная связь};' Вы назначаете 3-битное значение в 2-битный регистр. – toolic
@toolic, вы знаете, что мне следует устанавливать? – Rain74