Spp 0 16 июля, 2008 Опубликовано 16 июля, 2008 · Жалоба Хочется сделать функцию, осуществляющую задержку на такт, по сути Д-триггер. Объявлять его как компонент не хочется, много букв. Вводить промежуточные сигналы - тоже не охота напрягать человека, который будет код читать. Т.е., в идеале хочется видеть что-то типа " A <= delay(B) " Может всё же есть какой-нибудь красивый способ? Заранее предчувствую отрицательный ответ.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 июля, 2008 Опубликовано 17 июля, 2008 · Жалоба Хочется сделать функцию, осуществляющую задержку на такт, по сути Д-триггер. Объявлять его как компонент не хочется, много букв. Вводить промежуточные сигналы - тоже не охота напрягать человека, который будет код читать. Т.е., в идеале хочется видеть что-то типа " A <= delay(B) " Может всё же есть какой-нибудь красивый способ? Заранее предчувствую отрицательный ответ.. сделать можно, но : 1. Синтезироваться она не будет 2. В ВХДЛ функция будет блокирующей (в SV можно сделать и так и так). 3. Если для моделирования то атрибут 'last_value или 'delayed уже не рулит ? Удачи !!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 17 июля, 2008 Опубликовано 17 июля, 2008 · Жалоба Ну а если что-то типа такого : d_out <= d_in when (clk'event and clk = '1'); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 17 июля, 2008 Опубликовано 17 июля, 2008 · Жалоба Ну а если что-то типа такого : d_out <= d_in when (clk'event and clk = '1'); А Вы уверены в коректности кода? И какую схему сделает синтезатор? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 18 июля, 2008 Опубликовано 18 июля, 2008 · Жалоба А Вы уверены в коректности кода? И какую схему сделает синтезатор? Уверен :) Синтезатор сделает самый что нинаесть обычный D-триггер. Проверьте сами, если не верите. Вот результат : Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spp 0 21 июля, 2008 Опубликовано 21 июля, 2008 · Жалоба Все это конечно хорошо, но когда в двадцати местах нужно делать задержки на несколько тактов, получается некрасиво. И надо чтоб синтезировалось конечно. Ладно, раз программисты не хотят бороться с неудобствами, придётся мне бороться со своим идеализмом и жалостью к потомкам =) Где-то в соседней теме было упоминание про "объявление компонентов как функций". Возможно, это ключ к решению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 7 21 июля, 2008 Опубликовано 21 июля, 2008 · Жалоба Хочется сделать функцию, осуществляющую задержку на такт, по сути Д-триггер. Объявлять его как компонент не хочется, много букв. Вводить промежуточные сигналы - тоже не охота напрягать человека, который будет код читать. Т.е., в идеале хочется видеть что-то типа " A <= delay(B) " Может всё же есть какой-нибудь красивый способ? Заранее предчувствую отрицательный ответ.. КРАСИВЫЙ не всегда правильно при профессиональной деятельности, нужно использовать ПРАВИЛЬНЫЙ (то есть принятый большинством) подход, то есть описать process, в котором описан регистр, это будет понятно читающему конкурентное присваивание, предложенное Stewart Little тоже стандартно, но по-моему менее понятно, так как может встречаться в разных местах кода, а process группирует все тригера в одном месте. если при этом пользоваться какой-то разумной системой имен, то код станет совсем "прозрачным" regs : process(clk,rst) begin if rising_edge(clk) then r <= ri; if rst = '0' then r.icnt <= (others => '0'); end if; end if; if rst = '0' then r.bdrive <= '0'; r.sdcsn <= (others => '1'); end if; end process; типа так - здесь описаны и триггера без сброса, и с инхронным, и с асинхронным сбросом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 21 июля, 2008 Опубликовано 21 июля, 2008 · Жалоба Может всё же есть какой-нибудь красивый способ? Заранее предчувствую отрицательный ответ.. самый красивый способ - это изучить xst.pdf с сайта xilinx. Все, что Вам тут насоветовали - это усмешка профессионалов. Со студентами они гораздо корректнее обходятся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться