Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Система управления синхронным многофазным электрод

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5129

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5
Leka, спасибо. Вы очень подробно ответили на мои вопросы. Тем не менее, осталось несколько моментов, которые хотелось бы уточнить.

Leka пишет:

долго пытался понять логическую разницу между "&" и "&&", но так и не понял пока. Можно подробно расписать смысл этой строки?

В данном случае все-равно. Можно поменять && на &, а выяснение разницы оставить на потом.

Повторю вопрос: Пожалуйста, объясните, что делает этот операнд: if((old==0)&&(p==1))en<=1.
Я правильно интерпретирую: если выражения (old=0) и (p=0) истинны, то en присваивается значение 1?
Можно ли этот оператор записать в таком виде (для трех сравниваемых функций): if((a==1)&&(b==0)&&(c==1)) d<=x?

reg[9:0]cnt; // Новый регистр?

А где еще хранить текущее значение счетчика интервала? "t12" хранит только измеренное значение.
Можно поменять алгоритм, и выдавать наружу не измеренное значение интервала, а сам счетчик интервала "cnt", тогда модуль "upd" должен производить сравнение только при установленном сигнале "en2" (в этот момент "cnt" будет содержать значение интервала). В этом случае "en2" надо заводить в "upd". Это, кстати, уменьшит значение ЛЕ (не нужен будет "t12"), что важно.

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

Leka пишет:

3) Как задается ...цикличность выполнения самих модулей?

3)Порядок модулей неважен, "работают" непрерывно и параллельно.

А если требуется запуск модуля только при определенных условиях, типа внешние события, прерывания или флаги? После begin добавлять if(проверка событий/условий/флагов)?

Здесь, видимо, должен быть еще один модуль, аналогичный первому: module det(clk,p,en) ?

Нет, м/б сколько угодно рабочих "копий" модуля, с разными сигналами, и только одно описание. 100шт КТ315 в схеме, и один "даташит" на него.[/quote]
Тогда не понятно, что является основанием в Вашем примере для повторного запуска модуля det с другими сигналами?

В целом очень многое прояснилось, еще раз благодарю. И буду готовить новые вопросы. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5130

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Я правильно интерпретирую: если выражения ... истинны, то en присваивается значение 1?
Можно ли этот оператор записать в таком виде (для трех сравниваемых функций): if((a==1)&&(b==0)&&(c==1)) d<=x?

Да.
Да.

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

Есть в коде: if(en1)cnt<=0;

А если требуется запуск модуля только при определенных условиях, типа внешние события, прерывания или флаги? После begin добавлять if(проверка событий/условий/флагов)?
...
Тогда не понятно, что является основанием в Вашем примере для повторного запуска модуля det с другими сигналами?

Модули не "запускаются", а "впаиваются". Дизайн на Верилоге - не программа, а схема. Каждый модуль - это как отдельная многоногая микросхема/сборка/и тд. Сколько "корпусов" есть в схеме, столько и надо вставить в топ-модуль, и каждый "корпус" - со своими сигналами, конечно. Начинка "корпуса" описывается отдельно один раз.

В качестве примера можно взять задачку: из 3 штук 2х-входовых элементов "И"(отдельный модуль) собрать 4х-входовый элемент "И". Написать на Верилоге, и проверить в Квартусе результат синтеза.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5131

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5

Leka пишет: Есть в коде: if(en1)cnt<=0;

Учитывая то, как Вы ответили раньше на мой вопрос:

В: 1) В течение какого времени исполняется описанный выше код?
О: 1) Непрерывно.


не приведет ли это к постоянному обнулению счетчика на каждом импульсе клока, при наличии лог. "1" на входе en1?

Модули не "запускаются", а "впаиваются". Дизайн на Верилоге - не программа, а схема. Каждый модуль - это как отдельная многоногая микросхема/сборка/и тд. Сколько "корпусов" есть в схеме, столько и надо вставить в топ-модуль, и каждый "корпус" - со своими сигналами, конечно. Начинка "корпуса" описывается отдельно один раз.

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

det m1(clk,p1,en1); //выделение фронта импульса p1
det m2(clk,p2,en2); //выделение фронта импульса p2


а далее было приведено описание (даташит) на такой модуль, но с другими входными сигналами:

module det(clk,p,en);


Как компилятор разберется с разницей в именах сигналов - "р" и "р1", "р2" и "en" и "en1", " en2"? Или цифра в конце имени означает не разницу имен, а принадлежность к тому, или иному модулю?
Я где-то читал об ограничениях на подобные применения, но с ходу не могу вспомнить, придется снова перечитывать "буквари".


P.S. Посмотрел. В статьях И. Каршенбойма есть правила присвоения имен, но по поводу цифр в конце имени там ничего не сказано.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от KIV.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5132

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

не приведет ли это к постоянному обнулению счетчика на каждом импульсе клока, при наличии лог. "1" на входе en1?

Приведет.

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

Нет никакого джампа, как нет его в схеме, собранной на дискретных элементах. Говорить о "запуске" модуля столь-же бессмысленно, как говорить о "запуске" диода в детекторном приемнике.

В вашем коде я увидел описание двух модулей det в топ-модуле:
...
а далее было приведено описание (даташит) на такой модуль, но с другими входными сигналами:
...
Как компилятор разберется с разницей в именах сигналов - "р" и "р1", "р2" и "en" и "en1", " en2"? Или цифра в конце имени означает не разницу имен, а принадлежность к тому, или иному модулю?

Цифра в конце означает разницу имен, просто для удобства, такое встречается сплошь и рядом: R1,R2,R3,... - сопротивления в схеме, регистры в ассемблере, и тд и тп.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5133

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5

Leka пишет:

не приведет ли это к постоянному обнулению счетчика на каждом импульсе клока, при наличии лог. "1" на входе en1?

Приведет.

Тогда как же почитать количество импульсов клока в измеряемом интервале времени?

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

Нет никакого джампа, как нет его в схеме, собранной на дискретных элементах. Говорить о "запуске" модуля столь-же бессмысленно, как говорить о "запуске" диода в детекторном приемнике.

Согласен, термин "джамп" здесь не уместен. Но ведь можно модуль "запускать" по разрешающему сигналу - аналогу флага, или прерывания?
Суть от этого не изменится - модуль будет включаться или выключаться в зависимости от наличия/отсутствия этого разрешения.

Очередной вопрос по Квартусу. Что означает эта ошибка:
Error (12007): Top-level design entity "DDMV" is undefined ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от KIV.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5134

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5
Правильно ли написан этот фрагмент кода?
module SpeedControl(
	input clkt,
	input s_35,
	input s_50,
	input s_up,
	input s_dn,
	output reg[9:0]dat = 620 );	

always@(posedge clkt)begin
	if(s_35==0) dat <= 620;			
	if(s_50==0) dat <= 837;			
	if(s_up==0) dat <= dat-10;		
	if(s_dn==0) dat <= dat+10;		
end
endmodule

Здесь 620, 837 и 10 - десятичные константы. Допустимо ли такое их написание?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от KIV.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5135

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Правильно ли написан этот фрагмент кода?
...
Здесь 620, 837 и 10 - десятичные константы. Допустимо ли такое их написание?

Да, можно так писать константы, если для их размещения не требуется больше 32 разрядов.
Синтаксических ошибок вроде нет (проще в Квартусе проверять). .

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5136

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Тогда как же почитать количество импульсов клока в измеряемом интервале времени?

Так ответ очевиден - не держать постоянно "1" на входе "en1". Сами же написали, "выделить фронты импульсов", выход этого "выделителя фронтов" и обозначил, как "en1", можете другое имя дать.

Согласен, термин "джамп" здесь не уместен. Но ведь можно модуль "запускать" по разрешающему сигналу - аналогу флага, или прерывания?
Суть от этого не изменится - модуль будет включаться или выключаться в зависимости от наличия/отсутствия этого разрешения.

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

Что означает эта ошибка:
Error (12007): Top-level design entity "DDMV" is undefined ?

На такие вопросы отвечать не буду, их миллион наберется.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5137

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5

Leka пишет: Сами же написали, "выделить фронты импульсов", выход этого "выделителя фронтов" и обозначил, как "en1", можете другое имя дать.

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

Точно так-же не надо употреблять этот термин применительно к Верилоговским модулям.

ОК, постараюсь аккуратнее обращаться с терминами. Действительно, выключатель для лампочки на кухне никто не называет "разрешателем". :)
Но это, как говорится, дело вкуса. И профессионализма.

На такие вопросы отвечать не буду, их миллион наберется.

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от KIV.

Система управления синхронным многофазным электрод 5 года 3 мес. назад #5138

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Если нет проблем со схемотехникой, и задача уже решена схемотехнически на рассыпухе, самый простой и быстрый способ перевести это в ПЛИС - буквально описать готовую схему словами, на Верилоге. Схема делится на мелкие блоки, каждый такой блок описывается отдельным мелким модулем, а в топ-модуле все эти модули связываются в соответствии со схемой.

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

Я уже предлагал для "закрепления материала" взять простейшую отвлеченную задачку, типа 4х-входовый "И" на базе 2х-входовых "И", и отработать весь цикл перевода в Верилог и синтеза в Квартусе. Код выкладываете тут.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.
Время создания страницы: 0.250 секунд
Работает на Kunena форум