-
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 как-то привычней, чтоль. Или, это дурным тоном считается?
Спрашиваю, т.к. про "бесплатные" операции почитал.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.082 секунд