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

Синхронный reset для триггеров на VHDL в Xilinx

Появился вопрос - как на VHDL в Xilinx ISE при поведенческом описании архитектуры принудительно указать, что reset будет синхронным?

 

В Foundationе можно было сделать следующим образом:

library SYNOPSYS;

use SYNOPSYS.attributes.all;

 

А потом в описании архитектуры добавить следующие записи:

attribute sync_set_reset of R: signal is "true";

 

А в ISE?

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


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

Появился вопрос - как на VHDL в Xilinx ISE при поведенческом описании архитектуры принудительно указать, что reset будет синхронным?

 

В Foundationе можно было сделать следующим образом:

library SYNOPSYS;

use SYNOPSYS.attributes.all;

 

А потом в описании архитектуры добавить следующие записи:

attribute sync_set_reset of R: signal is "true";

 

А в ISE?

 

А в чем проблемы-то? Синхронный сброс очень просто реализуется. Например, для D-триггера достаточно поставить на входе один вентиль - умножить (логически) сигнал, подаваемый на вход D с сигналом reset. Получиться D-триггер с синхронным сбросом. Сбрасыватся будет при нуле на reset. Для других триггеров можно сделать примерно также.

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


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

А в чем проблемы-то? Синхронный сброс очень просто реализуется. Например, для D-триггера достаточно поставить на входе один вентиль - умножить (логически) сигнал, подаваемый на вход D с сигналом reset. Получиться D-триггер с синхронным сбросом. Сбрасыватся будет при нуле на reset. Для других триггеров можно сделать примерно также.

 

Ну это-то мне понятно... ;) Очевидныое решение. Однако если посмотреть на библиотеку элементов ксайлинкса для спартанов, то там можно обнаружить интересный элемент FDRE, который является D-триггером с синхронным ресетом. При этом ресет реализован несколько не так, как ты предлагаешь - он подается непосредственно на вход ресета триггера в ПЛИС.

 

Транслятор VHDL делает точно так, как ты и сказал. Но в случае реализации сложной логики, например, FSM, это приводит к увеличению длин комбинаторных путей, в то время, как их хотелось бы сократить... Значит нужно подсказать транслятору, что именно этот вход будет синхронным ресетом. Но непонятно как. В этом и заключается мой вопрос.

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


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

Вы это описание имеете ввиду?

 

-- D F/F with synchronous Reset

-- CLK: in STD_LOGIC;

-- RESET: in STD_LOGIC;

-- DIN: in STD_LOGIC;

-- DOUT: out STD_LOGIC;

 

process (CLK)

begin

if CLK'event and CLK='1' then --CLK rising edge

if RESET='1' then --synchronous RESET active High

DOUT <= '0';

else

DOUT <= DIN;

end if;

end if;

end process;

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


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

Вы это описание имеете ввиду?

 

-- D F/F with synchronous Reset

-- CLK: in STD_LOGIC;

-- RESET: in STD_LOGIC;

-- DIN: in STD_LOGIC;

-- DOUT: out STD_LOGIC;

 

process (CLK)

begin

if CLK'event and CLK='1' then  --CLK rising edge

  if RESET='1' then --synchronous RESET active High

DOUT <= '0';

  else

DOUT <= DIN;

  end if;

end if;

end process;

 

Да, все понял. Спасибо.

Дело в том, что я еще не полностью ушел от наследния схемного редактора Foundation и поэтому иногда торможу с очевидными вещами... :smile3046:

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


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

To Andre_2006, а разве не так правильно:

always @(posedge CLK, posedge RESET)

if(RESET) DATA=0;

else DATA=DATA+1;

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


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

To Andre_2006, а разве не так правильно:

always @(posedge CLK, posedge RESET)

if(RESET) DATA=0;

else DATA=DATA+1;

Это асинхронный ресет.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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