Например TDA7294

Форум РадиоКот • Просмотр темы - Quartus II Verilog - синтезируется лишний компонент
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 05:47:22

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Quartus II Verilog - синтезируется лишний компонент
СообщениеДобавлено: Чт окт 07, 2021 15:41:51 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4470
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Всем доброго дня. Уже долго бьюсь над проблемой.
Имеем такой вот код (пятиразрядный счетчик):
Код:
// memsel counter
reg[4:0] memsel_cnt;
always @(posedge clock or posedge reset or posedge outshift_enable) begin
   if((reset == 1'b1) || (outshift_enable == 1'b1)) begin
      memsel_cnt <= 5'd0;
   end else begin
      if(mac_run == 1'b1) begin
         memsel_cnt <= memsel_cnt + 1'b1;
      end
   end
end

Впрочем, в проекте их три (и будет еще один). И все они в результате синтезируются
в такое нечто :kill: :
Изображение
Собственно, проблема в том, что вместо того, чтобы завести сигнал mac_run на входы
разрешения (ENA) триггеров memsel_cnt, Quartus фпихуивает мультиплексор между сумматором и триггерами
и замыкает с его помощью выходы триггеров на их же входы при значении управляющего сигнала mac_run=0.
Следует обратить внимание, что этот счетчик сбрасывается по двум сигналам, но есть еще
два, которые сбрасываются только общим ресетом. И они тоже синтезируются с мультиплексорами.
Что я делаю не так? Может какие-то настройки проекта покрутил, или мануал по Verilog не дочитал?

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Quartus II Verilog - синтезируется лишний компонент
СообщениеДобавлено: Чт окт 14, 2021 14:46:17 
Встал на лапы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 21
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 101
Рейтинг сообщения: 0
Это называется синхронным дизайном. Т.е., ошибки нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Quartus II Verilog - синтезируется лишний компонент
СообщениеДобавлено: Пт окт 15, 2021 15:38:02 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4470
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Да, дизайн синхронный.
Где-то мне попадалось утверждение, что D триггер с разрешающим входом и триггер без него,
но с мультиплексором на входе являются эквивалентными. Смутило то, что есть участок схемы в этом проекте,
где синтезатор явно использовал вход разрешения записи. Вот тут, к примеру:

Код:
   reg [31:0] results [3:0];
   always @(posedge clock or posedge reset) begin
      if(reset == 1'b1) begin
         results[0] <= 0;
         results[1] <= 0;
         results[2] <= 0;
         results[3] <= 0;
      end else begin
         if(outshift_enable == 1'b1) begin
            results[3] <= results[2];
            results[2] <= results[1];
            results[1] <= results[0];
            results[0] <= mac_result;
         end
      end
   end
   
   // Output
   reg[31:0] summ_out;
   always @(*) begin
      summ_out = results[0] + results[1] + results[2] + results[3];
   end


Изображение

Все разрешающие сигналы генерируются одним конечным автоматом, выходы автомата синхронизированы тактовым сигналом всего узла.
Как и когда синтезатор принимает решение о том, как реализовать триггер с разрешением, ума не приложу. :dont_know:

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Quartus II Verilog - синтезируется лишний компонент
СообщениеДобавлено: Пт окт 15, 2021 22:48:52 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 2
HardWareMan писал(а):
Как и когда синтезатор принимает решение о том, как реализовать триггер с разрешением, ума не приложу.

Получается если в коде
Код:
if(outshift_enable == 1'b1) begin
            results[3] <= results[2];
            results[2] <= results[1];
            results[1] <= results[0];
            results[0] <= mac_result;
         end

простое присваивание, то делает вход разрешения.
А когда
Код:
if(mac_run == 1'b1) begin
         memsel_cnt <= memsel_cnt + 1'b1;
      end

действие (сложение в этом варианте), то он ставит мультиплексор, видимо считая что в альтернативной ветке (отсутствующая else) данные должны храниться методом гонения с выхода на вход...

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Quartus II Verilog - синтезируется лишний компонент
СообщениеДобавлено: Вс окт 17, 2021 06:39:53 
Встал на лапы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 21
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 101
Рейтинг сообщения: 0
HardWareMan писал(а):
Как и когда синтезатор принимает решение о том, как реализовать триггер с разрешением, ума не приложу.

Meteor, вы ошиблись с автором в цитате. Это не мои слова.

А когда
Код:
if(mac_run == 1'b1) begin
         memsel_cnt <= memsel_cnt + 1'b1;
      end

действие (сложение в этом варианте), то он ставит мультиплексор, видимо считая что в альтернативной ветке (отсутствующая else) данные должны храниться методом гонения с выхода на вход...

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


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Quartus II Verilog - синтезируется лишний компонент
СообщениеДобавлено: Вт окт 19, 2021 15:32:59 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4470
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Спасибо за разъяснения. :beer:
Теперь понял, в чем таки были отличия.

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Quartus II Verilog - синтезируется лишний компонент
СообщениеДобавлено: Вт окт 19, 2021 18:57:30 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Meteor, вы ошиблись с автором в цитате. Это не мои слова..[/quote]
Прошу прощения, пес попутал...

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y