Сообщение от toxxinus
|
Для уменьшения кода хочу применить цикл for.
|
В always блоке это чаще всего бесполезно.
Собственно то что Вы хотите сделать это банальный сдвиговый регистр с параллельной загрузкой.
Ну вот и подумайте что должно получиться - по фронту wd Вам нужны все 8 сдвигов? Или все же 1?
![Улыбка](images/smilies/icon_smile.gif)
И придется блок разбить на загрузку и собственно сдвиг, иначе address будет перезагружаться каждый фронт, и в результате получите неизменный уровень на выходе.
Именно такую константу надо двигать?
Может тогда просто инвертировать port при каждом фронте wd?
А так сдвиг примерно выглядит так:
Код:
|
output reg dout;
input sck;
reg [7:0] data;
always @(posedge sck)
begin
dout ‹= data[0];
data[6:0] ‹= data[7:1];
// если нужно по кольцу
data[7] ‹= data[0];
end |
Добавьте загрузку в data "по вкусу".
Надеюсь не наврал, уже спать хочу