МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Оптимизация

Оптимизация 10 мес. 5 дн. назад #7529

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Тут на примерчик простенький наткнулся и не могу допетрить, чем это эффективно?

module ledwater (clk_50M,rst,dataout);

input clk_50M,rst;
output [7:0] dataout;

reg [7:0] dataout;
reg [25:0] count;

always @ ( posedge clk_50M )
begin
count<=count+1;
end

always @ ( posedge clk_50M or negedge rst)

begin
case ( count[25:22] )
0: dataout<=12'b11111110;
1: dataout<=12'b11111101;
2: dataout<=12'b11111011;
3: dataout<=12'b11110111;
4: dataout<=12'b11101111;
5: dataout<=12'b11011111;
6: dataout<=12'b10111111;
7: dataout<=12'b01111111;
8: dataout<=12'b01111111;
9: dataout<=12'b10111111;
10:dataout<=12'b11011111;
11:dataout<=12'b11101111;
12:dataout<=12'b11110111;
13:dataout<=12'b11111011;
14:dataout<=12'b11111101;
15:dataout<=12'b11111110;

endcase
end
endmodule

По сути, светодиодик бегает и зажигается. Но чем эффективно использовать деление частоты так:
case ( count[25:22] )

А не просто коунтер завести и мотать его в разные стороны. (?)

И case!!! Когда проще сразу фигачить для dataout +/-. Тогда и деление не надо. Дошел счетчик до определенного места - прибавляем, в другую сторону - вычитаем. И if как-то привычней, чтоль. Или, это дурным тоном считается?

Спрашиваю, т.к. про "бесплатные" операции почитал.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.107 секунд

facebook  GitHub  YouTube  Twitter