Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Не работает счетчик.

Вс апр 02, 2017 16:49:39

Здравствуйте. Написал простую реализацию счетчика.
Код вот
Код:
module modulesd
(
   input hz,
   input reset,
   output reg clk = 1'b0
);

   reg [0:47] cmd;
   reg [23:0] counter = 24'b0;
//----------
always @(posedge reset or posedge hz)
begin
  if(reset)
    counter <= 24'b0;

  else
    begin
      counter <= counter + 1'b1;
      if(counter+1==24'd2)
          begin
                       counter <= 24'b0;
                       clk <= ~clk;
         end
    end
     
end
//----------
endmodule

Счетчик 24-разрядный. Досчитав до 2-х - сбрасывается, и инвертирует состояние ножки clk. Однако, после запуска на ножке clk неизменно висит высокий уровень. Клоки подаются с частотой 1 Гц. Но линия clk поднявшись один раз, более ни на что не реагирует. А в симуляции всё нормально. Что это может быть? :dont_know:

Re: Не работает счетчик.

Вт апр 18, 2017 00:57:38

Вы одновременно увеличиваете счётчик на единицу, сравниваете и присваиваете нулю - из-за этого наверное и не работает. В предупреждениях наверняка выдало подобные сообщения. К тому же, сравниваете число предварительно сложив его с единицей - это лишний сумматор.
А вообще - не ясно, что хотите от кода. В итоге - вы реализовали делитель на 2, для реализации которого можно было просто выполнять в каждом такте clk <= clk + 1.
Ответить