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

Verilog, управляющие сигналы триггера

Написать так можно, другое дело что это будет не синтезируемая конструкция...

Мне об этом сам Quartus уже сказал :) И я его вполне понимаю и принимаю, осознавая логику Verilog.

to all

А хотите еще напрячь мыслительные способности? Опишите триггер с синхронным входом d, тактовым clk, и двумя аcинхронными rst_n, prn_n сброса и установки, которые были во всех триггерах ACEX, и в Cyclone, а в Cyclone II и III уже нет (и, кажется, я догадываюсь, почему :)).

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


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

Мне об этом сам Quartus уже сказал :) И я его вполне понимаю и принимаю, осознавая логику Verilog.

to all

А хотите еще напрячь мыслительные способности? Опишите триггер с синхронным входом d, тактовым clk, и двумя аcинхронными rst_n, prn_n сброса и установки, которые были во всех триггерах ACEX, и в Cyclone, а в Cyclone II и III уже нет (и, кажется, я догадываюсь, почему :) ).

Может, вот так?  :)

 

 

always @(posedge clk_i, posedge rst_i, posedge set_i)
  if(rst_i)
     data_o <= 0;
  else
     if(set_i)
         data_o <= 1;
     else
         data_o <= data_i;

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


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

А процент альтеровцев на HDL - 100%
AHDL тоже HDL

Конечно приходиться держать единицы AHDLовцев. На сопровождении уже устаревшего. Так ведь деваться некуда.

Но заслуженный отдых на горизонте им маячит.

Так вы начальник? Это сразу все обьясняет.

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


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

AHDL тоже HDL

Так вы начальник? Это сразу все обьясняет.

 

У Вас готова куча разных объяснений, кроме самого простого и правдивого.  :)

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


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

to putnik

частный случай - уровень сброса в 1
с этим исправлением согласен :)

 

Предлагаю закрыть тему, а то посторонние темы наплодились, многие из которых в офтопик перенести следует. Сам виноват немного, каюсь :maniac:

Попробую тему новую открыть насчет синхронного сброса в триггерах конкретно к квартусу 9 и выше применительно к новым семействам stratix4. Самому некоторые вещи непонятны, хотя предыдущие темы вроде читал внимательно ...

Изменено пользователем bogaev_roman

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


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

Может, вот так?  :)

always @(posedge clk_i, posedge rst_i, posedge set_i)
  if(rst_i)
     data_o <= 0;
  else
     if(set_i)
         data_o <= 1;
     else
         data_o <= data_i;

Обьясните мне несмышленому, зачем тратить столько буковок и плодить кучу неясностей при этом, когда в AHDL данная проблема решается всего одной короткой строчкой- D_trigger: dff ?

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


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

Обьясните мне несмышленому, зачем тратить столько буковок и плодить кучу неясностей при этом, когда в AHDL данная проблема решается всего одной короткой строчкой- D_trigger: dff ?

Проблема не решается :rolleyes: ответьте сначала на вопросы к Вам по AHDL, даже в котором, у Вас, судя по вашим примерам, явные проблемы..

 

To bogaev_roman - офтопика действительно очень много, пора закрыть тему, а синхронный сброс мне тоже интересен, было бы интересно и применительно к Xilinx в нем разобраться

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


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

Обьясните мне несмышленому, зачем тратить столько буковок и плодить кучу неясностей при этом, когда в AHDL данная проблема решается всего одной короткой строчкой- D_trigger: dff ?

Да, потому, что это тестовый пример, который для простоты вырожден. А в реальных устройствах описание делается под нужную функциональность, например:

always @(posedge clk_i, posedge rst_i, posedge set_i)
  if(rst_i)
     data_o <= 0;
  else
     if(set_i)
         data_o <= 1;
     else if(load)
         data_o <= data_i;
     else if(inc)
         data_o <= data_i + 2;
     else if(dec)
         data_o <= data_i - 3;
     else if(shift_l)
         data_o <= data_i << 1;
     else if(shift_r)
         data_o <= data_i >> 1;
     else if(scale)
         data_o <= data_i*coef;
     ...

И где тут ваша одна строчка? Напишите аналог этого кода на AHDL и сравните.

 

Вы никак не хотите понять, что описании на Verilog/VHDL никто не оперирует этими низкоуровневыми понятиями - триггер, счетчик. Точнее, может, кто-то и оперирует, но в этом нет необходимости. Ведь целевая задача не заставляет специально городить именно счетчик. Она требует, чтобы что-то было подсчитано - на языке это описывается как инкремент некой переменной. И уже потом, при синтезе рождается счетчик. Понимать это разработчику безусловно надо, он должен четко себе представлять, во что выливается та или иная конструкция. Но одно дело понимать, иное - описывать модель в деталях, базируюясь на низкоуровневых понятиях (как триггер). Уровень абстракции совсем иной, а значит и доступная сложность (при прочих равных) проекта тоже иная.

 

Не говоря уже о том, что на AHDL в принципе невозможно моделировать систему. И удобство моделирования не сравнимо с функциональной симуляцией xHDL, т.к. описание на AHDL отдается симулятору уже после синтеза, и симулируется по сути нетлист - а это много низкоуровневых сигналов, потеря имен уровня исходника и потеря скорости.

 

Ваше упорство мне не понятно. Вы же видите, что все, кто тут участвует, не выражает никаких сомнений в полезности и необходимости xHDL, по-вашему же получается, что все идут "не в ногу", а вы один "в ногу". Вам не кажется это странным? Некоторые ваши посты выглядят как откровенный, извините, троллинг, причем грубый: вкинуть в дискуссию безапелляционное заявление, граничащее с бредом, и наслаждаться неистовой реакцией остальных участников.

 

Какую цель вы преследуете? Научить остальных, что AHDL лучше Verilog/VHDL? Не выйдет - многие альтероводы (если не все) прошли этап AHDL, была у них ломка при освоении того же Verilog'а, пока не понимали ключевых моментов и пытались использовать Verilog в стиле AHDL. Когда понимание пришло, все встало на свои места. Не знаю никого, кто бы вернулся обратно. Несравнимые это вещи.

 

Или вы преследуете цель понять, что же в этом верилоге такого, что все его так любят, и научиться самому? Тоже не похоже. Когда хотят понять и научиться, задают конкретные вопросы, внимательно слушают советы, пытаются делать, как учат, и не пытаются учить других.

 

Еще причиной может быть желание высказать мнение. Это было сделано уже не раз. Все давно поняли вашу точку зрения. Зачем повторять то, что и так понятно?

 

Если не эти три причины, то остается, извините, троллинг. Хочется надеяться, что это не так.

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


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

Да, потому, что это тестовый пример, который для простоты вырожден. А в реальных устройствах описание делается под нужную функциональность, например:

always @(posedge clk_i, posedge rst_i, posedge set_i)
  if(rst_i)
     data_o <= 0;
  else
     if(set_i)
         data_o <= 1;
     else if(load)
         data_o <= data_i;
     else if(inc)
         data_o <= data_i + 2;
     else if(dec)
         data_o <= data_i - 3;
     else if(shift_l)
         data_o <= data_i << 1;
     else if(shift_r)
         data_o <= data_i >> 1;
     else if(scale)
         data_o <= data_i*coef;
     ...

И где тут ваша одна строчка? Напишите аналог этого кода на AHDL и сравните.

Hе могу написать аналог потому, что в представленном вами примере неизвестен формат данных-разрядность слов и тип арифметики signed/unsigned. Если вы представите реальный и законченный пример модуля на veriloge, то я тогда попробую написать аналог его на AHDL более компактно и однозначно для синтезатора.

Вы никак не хотите понять, что описании на Verilog/VHDL никто не оперирует этими низкоуровневыми понятиями - триггер, счетчик. Точнее, может, кто-то и оперирует, но в этом нет необходимости. Ведь целевая задача не заставляет специально городить именно счетчик. Она требует, чтобы что-то было подсчитано - на языке это описывается как инкремент некой переменной. И уже потом, при синтезе рождается счетчик. Понимать это разработчику безусловно надо, он должен четко себе представлять, во что выливается та или иная конструкция. Но одно дело понимать, иное - описывать модель в деталях, базируюясь на низкоуровневых понятиях (как триггер). Уровень абстракции совсем иной, а значит и доступная сложность (при прочих равных) проекта тоже иная.

Прекрасно понимаю, что Verilog/VHDL - это попытка чистых программистов уйти в прекрасный мир абстракций, оторванный от конкретной схематики. Hо и вы поймите, что это сразу путь к проигрышу в характеристиках получаемого продукта. Например, если вам наплевать, что в альтеровских матрицах размещены логические элементы с уже готовыми D-триггерами и не станете использовать в проекте соответствующее firmware, то почти наверняка ваш проект окажется в разы хуже по быстродействию. Разве стоит уход в абстракции такой цены? Что касается провозглашенного вами "больше абстракций -> больше доступная сложность", то извините- сильно неверно. Мой учитель говорил на заре электронники: "Все, что сложнее закона Ома,- неправильно. И работать не будет".

Не говоря уже о том, что на AHDL в принципе невозможно моделировать систему. И удобство моделирования не сравнимо с функциональной симуляцией xHDL, т.к. описание на AHDL отдается симулятору уже после синтеза, и симулируется по сути нетлист - а это много низкоуровневых сигналов, потеря имен уровня исходника и потеря скорости.

По третьему кругу обсуждать сомнительную ценность моделирования на Verilog, я думаю, нам не стоит. Я по прежнему считаю, что проверять в софте надо только регистровую скорость готового проекта. А для этого нетлист из-под ADHL прекрасно годиться. И производится такая проверка удивительно быстро, одним кликом в Quartus.

Ваше упорство мне не понятно. Вы же видите, что все, кто тут участвует, не выражает никаких сомнений в полезности и необходимости xHDL, по-вашему же получается, что все идут "не в ногу", а вы один "в ногу". Вам не кажется это странным?

Кому-то все равно придется сказать: "А король-то голый!"

Какую цель вы преследуете? Научить остальных, что AHDL лучше Verilog/VHDL? Не выйдет - многие альтероводы (если не все) прошли этап AHDL, была у них ломка при освоении того же Verilog'а, пока не понимали ключевых моментов и пытались использовать Verilog в стиле AHDL. Когда понимание пришло, все встало на свои места. Не знаю никого, кто бы вернулся обратно. Несравнимые это вещи.

Цель у меня проста- я исследую целесообразность перехода на Verilog. Пытаюсь выяснить у поднаторевших в этом деле - какие преимущества мне это даст, в чем будет качественный скачек, оправдывающий все усилия и время по освоению нового языка и инструмента. Естественно, что все поступающие сведения примериваю на свою область деятельности, на свои практические задачи.

Или вы преследуете цель понять, что же в этом верилоге такого, что все его так любят, и научиться самому? Тоже не похоже. Когда хотят понять и научиться, задают конкретные вопросы, внимательно слушают советы, пытаются делать, как учат, и не пытаются учить других.

Прежде, чем мне учиться у верилоговских гуру, хочу понять- надо ли мне это. Именно поэтому я и примериваю поступающую информацию об Verilog на свои практические задачи. Сам учить жизни никого не намерен, наоборот, сразу сказал- пишите на чем хотите и как хотите, лишь бы правильно было.

Если не эти три причины, то остается, извините, троллинг. Хочется надеяться, что это не так.

Всем оскорбленным и "затролленым" верилоговцам приношу самые искренние извинения и уверения в глубочайшем почтении.

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


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

Прекрасно понимаю, что Verilog/VHDL - это попытка чистых программистов уйти в прекрасный мир абстракций, оторванный от конкретной схематики. Hо и вы поймите, что это сразу путь к проигрышу в характеристиках получаемого продукта. Например, если вам наплевать, что в альтеровских матрицах размещены логические элементы с уже готовыми D-триггерами и не станете использовать в проекте соответствующее firmware, то почти наверняка ваш проект окажется в разы хуже по быстродействию. Разве стоит уход в абстракции такой цены? Что касается провозглашенного вами "больше абстракций -> больше доступная сложность", то извините- сильно неверно. Мой учитель говорил на заре электронники: "Все, что сложнее закона Ома,- неправильно. И работать не будет".

Да, Verilog - более высокоуровневый язык.

 

Следовательно, разработка будет гораздо быстрее. А вот то, что проект станет в разы хуже по быстродействию - это не правда.

Вы так не и смогли даже на 10% "обогнать" модуль, написанный на VHDL, а говорить про x2 вообще даже не приходится.  :)

А, допустим, проигрыш 5% по быстродействию при уменьшении времени разработки в 2 раза, а времени отладки вообще раза в 3, я думаю, да, оно того стоит.  :)

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


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

Hо и вы поймите, что это сразу путь к проигрышу в характеристиках получаемого продукта.

Это ваше самое большое заблуждение. Оптимальность реализации не зависит от используемого языка.

Одинаковые реализации будут одинаково эффективны на любом языке. Структурный стиль, который вам кажется наиболее оптимальным в равной степени реализуем как на AHDL так и на других HDL языках.

С течение времени, когда сознание перестроится под новый стиль описания аппаратуры ваши реализации не будут уступать тем, что были у вас ранее. Ваши проекты будут более понятны для других людей, т.к. читаемость кода многократно повысится(перейдет на описательный уровень с декларативного). Время, затрачиваемое на реализацию и отладку понизится.

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


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

 

Время, затрачиваемое на реализацию и отладку повысится.

 

:biggrin:  Опечатались.

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


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

Может, вот так? :) ...

Можно и так :)

И, начиная с Cyclone II, иметь 4 ЛЭ для каждого такого триггера. А до этого семейства использовался бы 1 ЛЭ. Регресс? :) Нет, Verilog :)

Вот и получается, если писать не глядя на внутреннее устройство ПЛИС, можно не получить желаемой красоты, быстродействия, экономии...

P.S. По-прежнему уверяю Verilog в своей полной симпатии :)

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


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

Можно и так :)

И, начиная с Cyclone II, иметь 4 ЛЭ для каждого такого триггера. А до этого семейства использовался бы 1 ЛЭ. Регресс?

 

За все приходится платить.  :)

Перенеся проект на Xilinx, можно вообще удивиться результатам. (недавно была тема про оптимизацию)  :)

 

 

Нет, Verilog :)

Не думаю.

 

Нет, Verilog :)

Вот и получается, если писать не глядя на внутреннее устройство ПЛИС, можно не получить желаемой красоты, быстродействия, экономии...

Я думаю, этот и есть одно из отличий нормального разработчика от кодера. :)

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


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

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

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

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

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

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

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

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

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

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