Как использовать verilog для мигания светодиодом

Я пытался сделать мигающий светодиод в Verilog, используя vivado. У меня есть FPGA 100 МГц. Мой код размещен ниже:

module Blinky(
input clk,
input reset,
output reg led
);


reg [26:0] count; 
wire state;
assign state = count[26];

always@ (posedge clk or posedge reset)
 begin
  if (reset)
   count <= 0;  
  else
   count <= count + 1;  //otherwise increment the register
  end

always@ (posedge state)
    if (led == 1'b1)
        led = 1'b0;
    else
        led = 1'b1;

endmodule

в этом коде я пытаюсь использовать делитель часов, чтобы замедлить часы. Затем я использовал замедленный тактовый сигнал для включения и выключения светодиода. Я знаю, что ограничения верны, потому что я могу жестко закодировать светодиод, чтобы он включался и выключался. Но когда я пробую это или его варианты, ничего не происходит. Кто-нибудь может помочь?


person mpyro    schedule 14.06.2016    source источник
comment
Полное отсутствие функциональности обычно указывает на что-то простое. Убедитесь, что ваши часы действительно работают (подключены к правильному контакту для внешнего источника часов) и что ваш сброс правильно подключен. Синхронизируйте PIN-код сброса.   -  person Guy    schedule 15.06.2016


Ответы (1)


Вы слишком все усложняете. Самый верхний бит счетчика может использоваться для непосредственного управления светодиодом; вам не нужно использовать его как часы для отдельного триггера. (Вообще говоря, вы должны использовать как можно меньше отдельных тактовых сигналов в конструкциях FPGA; структура маршрутизации FPGA поддерживает только небольшое количество глобальных тактовых импульсов.)

Замените output reg led на output led, удалите state и все, что на него ссылается (включая весь второй блок always), и добавьте:

assign led = count[26];
person Community    schedule 15.06.2016
comment
Спасибо за помощь. вроде должно работать, но все равно ничего не делает. - person mpyro; 15.06.2016