Например TDA7294

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





Текущее время: Вт апр 23, 2024 18:44:45

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


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



Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Verilog конфликт драйвера
СообщениеДобавлено: Сб окт 25, 2014 02:06:02 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс май 06, 2012 09:58:33
Сообщений: 370
Откуда: Магадан
Рейтинг сообщения: 0
Давайте поставим жирную точку в вопросе конфликтов, а именно как мыслить в момент написания Verilog кода.

допустим имеем
1_пин входная частота 1с
2 - 5 пин кнопки.
Все эти модули изменяют число в одной переменной
reg summa

Вот на вскидку быстро набыдлокодил:
Код:

module summator (
input clock,
input button1, //+
input button2, //-
input button3, //<<
input button4, //>>
input button5, //

output reg[7:0] summa
);

always @(negedge button1 or posedge clock)
    begin
       summa = summa + 1;
    end

always @(negedge button2)
    begin
       summa = summa - 1;
    end

always @(negedge button3)
    begin
       summa = summa << 1;
    end

always @(negedge button4)
    begin
       summa = summa >> 1;
    end
endmodule


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб окт 25, 2014 10:51:04 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18494
Рейтинг сообщения: 0
тоже с таким столкнулся, даже пытал FPGA кодера по этому поводу, но видать они мыслят как то по FPGA'шному, потому что объяснение до меня дошло не полностью :)

примерно так... если не писать таким образом, что в один момент времени возможно (именно возможно, а не обязательно произойдет) изменение состояния одного и того же регистра по разным always @ - этой ошибки нет, я бы один always на клок написал, а в нем все кнопки по if ... else - это не эквивалент вашего кода, но кнопки обрабатывать будет

сейчас попробую откопать ответ FPGA'шника... упс, сейчас перечитал - кажется мы там друг друга не поняли просто :)

вот тут более менее понятно вроде

http://stackoverflow.com/questions/21061596/error-10028-cant-resolve-multiple-constant-drivers-for-net-vhdl-error

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб окт 25, 2014 13:55:41 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Не силен в верилоге, но насколько понимаю у вас напутанно с обработкой и на каждое действие делается свой алвайс.
Сделайте иначе: тактируйте алвайс от одной частоты, а внутри этого алвайса уже смотрите если кнопка нажата - инкрементируйте/декрементируйте счетчик.
Если нужно отработать именно фронты кнопок, то заведите несколько регистров, которые будут в алвайсе сдвигаться, и в последующем выявляться пары "01" для переднего фронта или "10" для заднего.

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


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб окт 25, 2014 14:32:17 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс май 06, 2012 09:58:33
Сообщений: 370
Откуда: Магадан
Рейтинг сообщения: 0
Цитата:
тактируйте алвайс от одной частоты

Так нельзя! Суть не в кнопках, код кнопок приведен всего лишь как упрощеный пример. Суть вопроса в конфликте драйверов. Как правильно думать при написания кода.
Вот более сложная задача:
этап 1 - записать звук с АЦП wm8731 в SDRAM
этап2 - воспроизвести звук из SDRAM в ЦАП wm8731.

Уже 5 клоков насчитал с куево тучей независимых алвайс блоков. Как такое пишется?
И это еще не самая сложная затача, реализация цифрового фильтра с передискретизацией- ваще вырви мозг и положи под подушку. Допустим частота семплирования 48кГц. НАдо записать 6 точек, и по теореме Котельникова перерасчитать форму сигнала на 18 точек. (192 кГц)


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб окт 25, 2014 14:45:18 
Родился
Аватар пользователя

Зарегистрирован: Чт ноя 17, 2011 11:06:55
Сообщений: 10
Откуда: Novosibirsk
Рейтинг сообщения: 0
WolfTheGrey писал(а):
Давайте поставим жирную точку в вопросе конфликтов, а именно как мыслить в момент написания Verilog кода.
Давайте поставим.

Объяснение на уровне дедовской схемотехники. Выходы цифровых схем НЕЛЬЗЯ соединять между собой напрямую!!! С одной схемы выход, допустим, логический 0, с другой логическая 1. При их соединении вы увидите дымок))

Объяснение на уровне FPGA-кодера. Я как и предыдущий комментатор совсем не силён в верилоге, но попробую объяснить в терминах vhdl. Каждому сигналу ставится в соответствие драйвер. Один единственный. В случае, если нам необходимо осуществлять многократное назначение одному и тому же сигналу мы должны использовать сигнал соответствующего типа. Данный сигнал называют "разрешаемымым", в vhdl это тип std_logic и для него задана соответствующая таблица разрешения.

Переводя вышесказанное для verilog-кодера можно резюмировать: мужики, юзайте тристейты или мультиплексоры (хотя mux'ы - это не множественное назначение сигналу, а множество сигналов).

Как-то так..


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб окт 25, 2014 15:19:13 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс май 06, 2012 09:58:33
Сообщений: 370
Откуда: Магадан
Рейтинг сообщения: 0
Осталось увидеть это в коде, то не очень понимаю как реализовать муксер. Как отдельный модуль, или еще как? лезть из верилога в схемотехнику не очень хочется.
Чето в мыслях проясняется: написать отдельный модуль (или както таким образом вывернуться).

module AND_4 (input wire а1, а2, а3, а4, output [8:0] register);
.......assign if((а1 == 1) || (а2 == 1) итд...) register = register + 1;
endmodule


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб окт 25, 2014 16:13:19 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
WolfTheGrey писал(а):
ак нельзя! Суть не в кнопках, код кнопок приведен всего лишь как упрощеный пример. Суть вопроса в конфликте драйверов. Как правильно думать при написания кода.
Вот более сложная задача:
этап 1 - записать звук с АЦП wm8731 в SDRAM
этап2 - воспроизвести звук из SDRAM в ЦАП wm8731.

Уже 5 клоков насчитал с куево тучей независимых алвайс блоков. Как такое пишется?

Я описываю на vhdl, но сути не меняет.
Подход такой. Есть одна системная частота, например 200 МГц. Из нее формируются сигналы управления АЦП, управления процессами записи во внутреннюю/внешнюю память, она же используется для формирования таймерных меток при опросе кнопок, все сигналы требующие анализа фронтов проводятся через триггерные цепи тактированные этой системной частотой.
В вашем примере получилось так
процесс 1 - инкремент счетчика
процесс 2 - декремент счетчика
при этом реакция на кнопки по сути равноценна подачи нескольких тактовых импульсов.
Как правильно делать - я написал, одна переменная для счетчика и триггера для формирования разрешения счета.
bfgroup писал(а):
юзайте тристейты или мультиплексоры

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вс окт 26, 2014 11:32:32 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18494
Рейтинг сообщения: 0
WolfTheGrey писал(а):
Уже 5 клоков насчитал с куево тучей независимых алвайс блоков. Как такое пишется?


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

вот кусочек

Код:
   always @(posedge clock)
   begin
      case (rstate)
         rWait:
         begin
            if (we)      // Wait until a new sample is written to memory
            begin
               rstate <= rAddr;
               counter <= NTAPS[ADDRBITS:0] + 1'd1;   // count samples and pipeline latency
               raddr <= waddr;      // read address -> newest sample
               caddr <= 1'd0;      // start at coefficient zero
               Raccum <= 1'd0;
               Iaccum <= 1'd0;
               Rmult <= 1'd0;
               Imult <= 1'd0;
            end
         end
         rAddr:   // prime the memory pipeline
         begin
            rstate <= rAddrA;
            next_addr;
         end
         rAddrA:
         begin
            rstate <= rAddrB;
            next_addr;
         end
         rAddrB:
         begin
            rstate <= rRun;
            next_addr;
         end
         rRun:
         begin      // main pipeline here
            next_addr;
            Rmult <= q_real * reg_coef;
            Imult <= q_imag * reg_coef;
            // Raccum <= Raccum + Rmult[MBITS*2-1 -: ABITS];
            // Iaccum <= Iaccum + Imult[MBITS*2-1 -: ABITS];
            // Correction by Phil, VK6APH, to remove DC spur
            Raccum <= Raccum + Rmult[MBITS*2-1 -: ABITS] + Rmult[MBITS*2-1-ABITS];
            Iaccum <= Iaccum + Imult[MBITS*2-1 -: ABITS] + Imult[MBITS*2-1-ABITS];
            counter <= counter - 1'd1;
            if (counter == 0)
               rstate <= rWait;
         end
      endcase
   end

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб апр 18, 2015 15:11:54 
Прорезались зубы

Зарегистрирован: Вт июл 02, 2013 09:17:49
Сообщений: 219
Рейтинг сообщения: 0
Не знаю, поставлена ли жирная точка, по этому вставлю свои 5 копеек.

Топик стартер поставил регистр "summa" в позу буриданова осла только "травы" в 4 раза больше.

Все always синтезатор рассматривает параллельно, а не последовательно как компилятор С.
В результате 4 воздействия пытаются присвоить выходному регистру "summa" 4 разных значения.

Программист должен решить этот конфликт - раздать приоритеты.
То есть внести все воздействия под один always.
А затем расставить воздействия в порядке приоритетов операторами if/else if
Это тоже не выход, так как создаются условия для "гонки" импульсов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вт ноя 17, 2015 17:09:41 
Родился

Зарегистрирован: Вт ноя 17, 2015 16:28:59
Сообщений: 5
Рейтинг сообщения: -1
кто нибудь научите verilog сам пытался не разобрался :cry:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вт ноя 17, 2015 19:55:29 
Прорезались зубы

Зарегистрирован: Вт июл 02, 2013 09:17:49
Сообщений: 219
Рейтинг сообщения: 0
Взявший Паяльник писал(а):
кто нибудь научите verilog сам пытался не разобрался :cry:


Что, есть для изучения кроме желания?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Чт ноя 19, 2015 15:36:54 
Родился

Зарегистрирован: Вт ноя 17, 2015 16:28:59
Сообщений: 5
Рейтинг сообщения: 0
интернет ,но ничего путнего нет. :dont_know: думал здесь кто подскажет


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Чт ноя 19, 2015 18:13:08 
Прорезались зубы

Зарегистрирован: Вт июл 02, 2013 09:17:49
Сообщений: 219
Рейтинг сообщения: 0
Взявший Паяльник писал(а):
интернет ,но ничего путнего нет. :dont_know: думал здесь кто подскажет


Кроме интернета нужна конкретная задача.
Или хотя-бы платка с программатором.

А то получится "сферический конь в вакууме".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Сб ноя 21, 2015 09:24:33 
Родился

Зарегистрирован: Вт ноя 17, 2015 16:28:59
Сообщений: 5
Рейтинг сообщения: 0
JTAG ПОДОЙДЕТ ТАКОЙ


Вложения:
GHJUHFVVFNJH GKBCRB.png [16.8 KiB]
Скачиваний: 348
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вс ноя 22, 2015 11:55:19 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Вы откуда взяли эту схему?
С JTAG программатором лучше не спешить, а в начале определиться с производителем. Это может быть Altera, может Xilinx а может и Lattice. Когда разберетесь с тем как описывать аппаратуру, научитесь проводить функциональное моделирование, тогда уже купите себе плату с ПЛИС выбранного производителя, и в зависимости от насыщенности, либо докупите программатор, либо будете довольствоваться имеющимся на самой плате.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вс ноя 22, 2015 12:17:28 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18494
Рейтинг сообщения: 0
А я с конца начал - взял рабочий девайс, исходники, заказал у китайцев программатор и давай мигать светодиодами. Что понравилось - все мои мигания светодиодами и эксперименты с реализацией SPI интерфейса никак не влияли собственно на работу девайса (SDR приемник), ну т.е. даже при грубых косяках - все ведь параллельно работает.

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вс ноя 22, 2015 12:23:53 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Хотелки приходят во время еды развития навыков. Можно начать с конца, я тоже сперва купил плис, затем программатор, затем учил ЯОА и уже в конце освоил моделирование.
Так что совет данный выше - сын ошибок трудных и парадоксов друг.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вт дек 22, 2015 02:04:45 
Прорезались зубы

Зарегистрирован: Пт ноя 16, 2007 13:52:44
Сообщений: 231
Откуда: Рига, Латвия
Рейтинг сообщения: 0
Собственно по теме, вставлю и свои пять копеек :
Подход в ПЛИС не такой как в МК, и соответственно все описания стремятся к одновременному выполнению.
То есть и подходить надо с пониманием что все кнопки могут быть нажаты разом :) и как же тогда реагировать всем действиям ??
Ответ - Никак !
Тобишь реакция (always) - должна быть по максимальной частоте (clk), ну и сбросу (rst) , остальные все входные рассматриваем как стационарные (стабильные) значения в данный момент времени.
Если же надо реагировать на фронты, то как уже здесь писалось, берём предъидущие стационарные значения и сравниваем с текущими, в случае наиденных изменений - производим действия, но опять таки рассматриваем совокупность изменений, т.к. все могут произойти разом. Ну и сами выбираем приоритеты.

По вопросу если много входных частот - Надо прибегать к понятии синхронизации - т.е. или математически соотносить частоты и по параметрам выявлять - когда оба значения стационарны , или с помощью регистров стопить значения. И обрабатывать базируясь на четкие стабильные сигналы(значения).

По поводу где почитать - я уважаю ресурс marsohod.org ресурс на русском... там много затронуто по поводу сопоставления частот.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Verilog конфликт драйвера
СообщениеДобавлено: Вт дек 22, 2015 18:31:24 
Прорезались зубы

Зарегистрирован: Вт июл 02, 2013 09:17:49
Сообщений: 219
Рейтинг сообщения: 0
Pe3ucTop писал(а):
Подход в ПЛИС не такой как в МК, и соответственно все описания стремятся к одновременному выполнению.
То есть и подходить надо с пониманием что все кнопки могут быть нажаты разом :) и как же тогда реагировать всем действиям ??
Ответ - Никак !
...


Слово "одновременному выполнению" не подходит - лучше "Все описания рассматриваются параллельно."

Если все кнопки нажаты "одновременно" - можно использовать приоритетный шифратор.


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

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


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

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


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

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


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