Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по реверсивному счетчику.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Iptash
Здравствуйте все.
Объясните пожалуйста, почему реверсивный счетчик в виде:
Код
always @ (posedge UP, posedge DW) begin
if(UP)
   counter <= counter + 1'b1;
else if(DW)
   counter <= counter - 1'b1;
end

работает хаотично, неправильно (в симуляторе Quartus, а в Modelsim работает правильно). Хотя сигналы UP и DW выделяются синхронизирующим сигналом clk.
А если сделать так:
Код
always @ (negedge clk) begin
    if(UP) begin
     ck <= 1;
     end
    else if (DW) begin
     ck <= 1;
     end
    else
     ck <= 0;
end        

always @ (posedge ck) begin
if(UP)
   counter <= counter + 1'b1;
else if(DW)
   counter <= counter - 1'b1;
end

то работает отлично, и ресурсы на много меньше использует. Микросхема MAX II.
AlphaMil
Честно говоря не совсем понимаю, зачем вы здесь используете асинхронность (в первом случае). Во втором - понятно почему ресурсов меньше ест - счетчик синхронный.
murmel1
Потому что в MAX II, так же, как и в других ПЛИС, нет регистров, срабатывающих по 2 фронтам.
Iptash
Спасибо за ответы!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.