Делаю в рамках самообразования проект на плате DE1-SoC от terasic
периодически появляются вопросы, с которыми не могу справится самостоятельно. Очень надеюсь что здесь подкинут свежих идей!
В частности назрело 2 вопроса.
1) Как просто и правильно поделить 24 бита на 3 куска по 8?
Я сейчас делаю это так, но может это не совсем удобно, и есть более прозрачные и удобные способы?
Спойлер
module bytemode (enter_data,drop_data,clk,uartOK);input uartOK; // сюда уарт сообщает о том что он все отправил
input clk; // тактирование
input [23:0] enter_data; // входящая 24битная шина
output [7:0] drop_data; // нужный результат 8бит
reg [0:23] testmode=24'hFDB044; // тестовая переменная
reg [7:0] temp1 [0:3]; // массив пакетов
reg [7:0] automat=1; // счетчик
always @ (posedge clk)
if (automat!=3) begin
if (uartOK) begin // если счетчик и уарт готовы
automat=automat+1; // мотаем счетчик
if (automat==1) // можно было сделать и через case, но вот так пока. 1 этап разделки туши.
begin
if (enter_data!=0) // если ненулевые данные
temp1[0]=enter_data[7:0]; // отгрызаем кусок
end
else if (automat==2) // 2 этап
begin
if (enter_data!=0)
temp1[1]=enter_data[15:8]; // еще кусок
end
else if (automat==3) // 3 и последний этап
begin
if (enter_data!=0)
temp1[2]=enter_data[23:16]; // последний кусок
automat=0;
end
end
end
assign drop_data=temp1[automat]; // каждый этап формирует выходной сигнал в виде нашего 8битного куска
endmodule
Заранее спасибо!


