Перейти к содержанию
    

работа с одним регистром в разных блоках

Здравствуйте, уважаемые форумчане!

Кратко о себе - Xilinx ISE WebPack, язык - Verilog=)

Проблема такова: есть две кнопки - but1/but2 . Реакция на них, к примеру, зажигание диодa led.

Пишу код:

output reg led;
input bu1,but2;

always @(posedge but1) led<=1;
always @(posedge but2) led<=0;

 

В результате - ошибка типа "изменение регистра led в двух блоках одновременно..."

Как с этим бороться?

И еще вдогонку (очень смешной, просто хочется удостоверится на 200%): led<=1 - диод включится и останется гореть или с ним будет происходить что-то неадекватное?

 

Спасибо за помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возьмите документацию на микросхему, для которой пишете. Если вам все равно какая, то и возьмите datasheet на первую попавшуюся.

Теперь посмотрите, во что бы такое могла синтезироваться ваша конструкция.

Искать нужно в разделах с примерно такими названиями: Functional Description->Configurable Logic Block->Slices (так в datasheet на Spartan 3E)

Еще стоит заглянуть в Functional Description->Input/Output Blocks-> IOB Overview. Там тоже есть регистры.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После чего заглянуть в тему http://electronix.ru/forum/index.php?s=&am...st&p=831264 за решением задачи на двух регистрах.

Хотя именно для кнопок и светодиодов асинхронный RS-триггер самое оно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы посоветовал сначала с Verilog-ом разобраться - явно нет осознания что далеко не все написанное может быть просинтезировано и, в некоторых случаях, даже промоделировано. HDL-языки это не языки программирования.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще вдогонку (очень смешной, просто хочется удостоверится на 200%): led<=1 - диод включится и останется гореть или с ним будет происходить что-то неадекватное?

ну если надо аж 200%, то светодиод включится при led<=1, если он подключен анодом к плис (если катодом то надо led<=0)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пара примеров. Посмотрите в RTL Viewer, как выглядят схемы.

module exTwoEdges (
  input wire clk1, clk2,
  output logic dout
);

  always @(posedge clk1, posedge clk2) begin
    if (clk1) dout = 0;
    if (clk2) dout = 1;
  end
endmodule

module exTwoEdges (
  input wire clk1, clk2,
  output logic dout
);

  always @(posedge clk1, posedge clk2)
    if (clk1) dout = 0;
    else dout = 1;
endmodule

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...