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

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

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

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5
Спасибо за дельный совет.
Но для того, чтобы досконально изучить верилог, мне сначала придется изучить СИ. Я же написал в самом начале - я не программист. :(
Что-то уже пытаюсь делать на верилоге, но со схемотехникой мне проще. Задачу-то решить нужно сегодня, а не через год-два...
Так что приходится выбирать то, что по зубам.
Но верилог постепенно пытаюсь осваивать. Пока не очень быстро и не очень успешно.

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

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

Может скажу банальные вещи,но
Для изучения verilog не надо изучать С (тем более опыт программирования у Вас есть) но цифровую схемотехнику надо знать, иначе беда.
verilog - язык описания цифровых схем в конструкциях которого есть средства описания логических функций, триггеров и связей между ними. И все. Нужно понимать ЧТО Вы хотите описать (на системном уровне) т.е. прежде чем что то написать (описать) на языке, необходимо четко понимать логику работы схемы (решая задачу неплохо знать ответ).
Вам легче работать в схематике, работайте в нем, Разбейте ваш проект на блоки нарисуйте в нем все блоки Вашего устройства, все связи между ними, продумайте все управляющие сигналы, все входы и выходы, все сигнальные и управляющие связи между блоками. Реализацию отдельных блоков нарисуйте в схематике в отдельных файлах (каждому блоку свой файл). по мере изучения verilog пробуйте заменить реализацию отдельных схемных блоков на описание на языке. По мере накопления опыта Вы возможно полностью откажитесь от схемного ввода.
Вам посоветовали изучить язык так как без него не получится освоить и провести симуляцию проекта или отдельных блоков (симуляторы Modelsim и Icarus работают с языковым описанием), а без симуляции отладить схему особенно на CPLD трудновато (SignalTap не работает).
Почитайте например Владимир Стешенко: Плис фирмы "ALTERA". Элементная база, система проектирования и языки описания аппаратуры
по verilog и по Квартусу есть куча других книг и пособий в сети и даже видео уроки на ютубе.
ну и конечно на этом сайте есть уроки, почитайте блог с начала, скачайте проекты посмотрите их, посмотрите (особенно для марсохода 2) структуру проектов (файл верхнего уровня - схемный, файлы блоков - на verilog) для марсохода 1 проекты были больше в схемном виде, но и там встречались вложенные реализации схемных блоков
Посмотреть схему получаемую после синтеза можно в RTL Viewer (меню Tools-Netlist Viewer-RTL Viewer) полезно при работе с verilog файлами. По началу рекомендую заглядывать в RTL Viewer после каждой успешной компиляции verilog файла (позволит понять в какую схему синтезируется та или иная конструкция языка)
имхо быстро освоить технологию ПЛИС вряд ли получится, но время на ее освоение будет потрачено недаром.

P.S. EPM240 все таки CPLD а не FPGA

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

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

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

Но дело в том, что цифровую технику я начал осваивать полвека назад, даже не со 155 серии, а с дискретных каменных элементов, а порой и на вакууме. Ну а Титце-Шенка и Хоровиц-Хилла выучил почти наизусть лет тридцать с гаком назад. К сожалению, в то время программирование, как таковое, было оторвано от "железа", поэтому мало кто занимался параллельным изучением языков (насколько помню, самыми крутыми в то время были Кобол и Фортран) и схемотехники. К сожалению, я не попал в число таких провидцев.
И в данный момент не стремлюсь повысить свою профессиональную квалификацию (в середине седьмого десятка это уже не актуально). Мне просто нужно решить конкретную, одноразовую, задачу. И пришел на этот форум только потому, что здешний стиль общения мне показался весьма доброжелательным и дружелюбным. Очень надеюсь, что я не ошибся.
Что касается изучения литературы, то в моей ситуации это процесс скорее вынужденно-неизбежный, чем необходимый. Книги Стешенко у меня есть, так же, как и книги Грушвицкого, Вальпы, Суворова, Антонова, Полякова... Есть переводы книг Максфилда, Хокинса, Точчи... Есть серия замечательных статей Иосифа Каршенбойма по Верилогу. А последние несколько дней вкуриваю взатяжку содержание сайта Марсоход по 10-12 часов в сутки.
Но для того, что бы просто прочитать всю имеющуюся у меня литературу по этой тематике потребуется не одна неделя, а чтобы вникнуть, осознать, и тем более - начать уверенно применять полученные знания на практике, нужно не менее полугода систематических занятий. Боюсь, что по объективным причинам не располагаю таким временем. :oops:

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

P.S. Для меня ЕРМ240 - это прежде всего QFTP, если мы говорим об одном и том же. :)

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

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

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

KIV пишет: Подскажите пожалуйста, как решить такую задачу:


Я думаю, так:
module c8x8(
   input wire clk,
	input wire [7:0] in_data, 
	output  reg  [7:0] out_data
);

always @(posedge clk)
case (in_data)
8'b10010011	: 	out_data <= 8'b10010011;
8'b01101100	: 	out_data <= 8'b01101100;

......................................

default	out_data <= out_data;
endcase
 endmodule

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

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

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

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

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

umarsohod, ОГРОМНОЕ СПАСИБО за то, что Вы одним утверждением case разрушили мою многоэтажную конструкция из многочисленных if/else.
Правда, когда увидел Ваше сообщение, в голове наступил full case, и сработал latch. :woohoo:
Для того, чтобы разблокироваться, и снова начать воспринимать окружающую действительность, потребовалось почти 2 часа.

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

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

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

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Я например, case никогда не использую, только if-else и =?:
Причина - в разных языках конструкция case сильно отличается, не давая никаких преимуществ в наглядности и компактности.
В Верилоге case можно использовать только в блоках always (вынуждая объявлять реальные провода фиктивными регистрами), тогда как =?: можно использовать также и в assign.

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

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

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

Leka пишет: ...case можно использовать только в блоках always (вынуждая объявлять реальные провода фиктивными регистрами), тогда как =?: можно использовать также и в assign.

Обязательно приму это к сведению, но в данном случае вариант umarsohod'a мне показался гораздо красивее, чем то, что накорявил я сам.
Тем более, что здесь именно блок always.

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

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

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

KIV пишет: Подскажите, плз, где можно почитать о "работе над ошибками", сообщение о которых выдается при компиляции в Квартусе?
В частности, что означают строки типа:
Error (275065): Can't find mapping for node in block of type PWM of instance "inst1"
Error (275066): Can't find mapping for connector "PWM"
Error (275064): Can't find mapping for bus in block of type Speed of instance "inst7"
Error (275066): Can't find mapping for connector "ctr_in"

Что значит нет соответствия для узла, шины, коннектора, и как это отрихтовать?

Первые две строки относятся к коду:

// Модуль формирования ШИМ сигнала
module PWM (clk, clk_p, dat, out_pwm);

	input wire clk;
	input wire clk_p;
	input wire [7:0] dat;
	output reg out_pwm;
	reg[7:0] counter;

always@(posedge clk)

begin
if(counter <= dat)
   out_pwm <= 1'b1;
else
   out_pwm <= 1'b0;
counter <= counter + 8'b1;
end

endmodule

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

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

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

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5
Разобрался со встроенным Help'ом.
Проблема в графике. Пытаюсь исправить ошибки на схеме (wire, bus, conduit).

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

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

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

  • KIV
  • KIV аватар Автор темы
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 121
  • Спасибо получено: 5
Есть модуль n-разрядного счетчика со входами sload и data[(n-1)..0].
Есть модуль, который должен управлять счетчиком, у которого на выходе m-разрядный (m<n) регистр data[(m-1)..0].

Как правильно соединить эти модули? Загрузка в счетчик должна быть только по младшим m-разрядам.
Можно ли присваивать одинаковые имена входной шине счетчика data[(n-1)..0] и выходной шине регистра data[(m-1)..0]?

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

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