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

Управление сведодиодом при помощи sr защелки

Вс фев 26, 2023 16:18:07

У меня есть плата Altera C4E6/E10-CORE с Altera Cyclone IV. Я ее сконфигурировал такой реализацией триггера:

Код:
module sr_latch(input s, r, output p, q);
    assign q = ~(r | p);
    assign p = ~(s | q);
endmodule


Код:
module top(input clk,
           input [1:0] key,
           output [7:0] ledr);
          
   assign ledr[7:2] = 6'b0;
   sr_latch sr_latch
   (
      .s(~key[0]),
      .r(~key[1]),
      .q(ledr[0]),
      .p(ledr[1])
   );
endmodule


Почему при нажатии на кнопки (две штуки) загорается то один диод, то другой, чередуясь, и не гаснут, если кнопку отпустить? Вроде если кнопку отпускаешь, тогда сигнал на входе триггера меняется и триггер переходит в другое состояние. Если с s и r убрать инверсию, то тогда диоды загораются только в момент нажатия и гаснут, если кнопку отпустить:

Код:
module top(input clk,
           input [1:0] key,
           output [7:0] ledr);
          
   assign ledr[7:2] = 6'b0;
   sr_latch sr_latch
   (
      .s(key[0]),
      .r(key[1]),
      .q(ledr[0]),
      .p(ledr[1])
   );
endmodule


Объясните, пожалуйста, почему такая разница? В первом случае диод не гаснет, если кнопку отпустить, во втором гаснет.

Re: Управление сведодиодом при помощи sr защелки

Вс фев 26, 2023 16:31:33

В ПЛИС я не разбираюсь. :(
Есть 2 типа RS-триггеров. Есть на элементах И-НЕ и есть на элементах ИЛИ-НЕ.Логика работы у них одинаковая, а хранение состояния при обратном состоянии входов.

Re: Управление сведодиодом при помощи sr защелки

Вс фев 26, 2023 16:35:11

У меня там два элемента ИЛИ-НЕ. При каком состоянии он хранит значение?

Re: Управление сведодиодом при помощи sr защелки

Вс фев 26, 2023 16:37:27

При 2-х логических "0" на входах он будет сохранять своё предыдущее состояние.

Re: Управление сведодиодом при помощи sr защелки

Вс фев 26, 2023 17:27:35

такой реализацией триггера

Не увидел ни одного триггера — одна комбинаторика.
Ответить