Помогите разобраться с написанием прошивки для ПЛИС Altera.
Помогите разобраться с написанием прошивки для ПЛИС Altera.
Здравствуйте.
Помогите разобраться с написанием прошивки для ПЛИС Altera.
Задача:
Устройство А постоянно (с ведомой одному ему периодичностью) шлет два типа данных, данные Х и данные У. Данные (Х,У) передаются по протоколу UART 8 бит, длина каждой команды 10 байт.
По команде от устройства В (команда из 6 байт протокол UART 9 бит) ПЛИС преобразует данные полученные от устройства А и передает их в устройство С (команда из 7 байт протокол UART 9 бит).
Прошивка реализована а схематике и имеет следующие блоки:
1. Блок обработки данных Х устройства А.
2. Блок обработки данных У устройства А.
3. Блок обработки данных устройства В.
4. Блок преобразования данных.
5. Передатчик UART 9 бит.
Проблема состоит в следующем:
Все блоки по отдельности работают правильно. НО! Если подключить блоки один к другому начинают пропадать сигналы на выходе из блоков. Стоит разорвать связи и работа блоков восстанавливается.
Как правильно согласовать блоки и в дальнейшем избавится от подобных глюков. Каковы возможные причины появления таких глюков.
Спасибо.
Помогите разобраться с написанием прошивки для ПЛИС Altera.
Задача:
Устройство А постоянно (с ведомой одному ему периодичностью) шлет два типа данных, данные Х и данные У. Данные (Х,У) передаются по протоколу UART 8 бит, длина каждой команды 10 байт.
По команде от устройства В (команда из 6 байт протокол UART 9 бит) ПЛИС преобразует данные полученные от устройства А и передает их в устройство С (команда из 7 байт протокол UART 9 бит).
Прошивка реализована а схематике и имеет следующие блоки:
1. Блок обработки данных Х устройства А.
2. Блок обработки данных У устройства А.
3. Блок обработки данных устройства В.
4. Блок преобразования данных.
5. Передатчик UART 9 бит.
Проблема состоит в следующем:
Все блоки по отдельности работают правильно. НО! Если подключить блоки один к другому начинают пропадать сигналы на выходе из блоков. Стоит разорвать связи и работа блоков восстанавливается.
Как правильно согласовать блоки и в дальнейшем избавится от подобных глюков. Каковы возможные причины появления таких глюков.
Спасибо.
- Реклама
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Хмм... Ну, опять же, ни слова на чём написаны ваши блоки. Ни, тем более, проекта целиком. Вообще не конкретный вопрос, никак!
Так что ответ может быть только - что-то делаете не так при объединении блоков, не учитываете какие-либо особенности (или просто их не знаете). Как-то так.
Так что ответ может быть только - что-то делаете не так при объединении блоков, не учитываете какие-либо особенности (или просто их не знаете). Как-то так.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Кто знает, что такое inst153~0, inst147~0 и т.д. и чем отличаются от inst153, inst147 соответственно. Смотри stp_node_finder.JPG. Почему эти элементы есть только для некоторых inst... И как это удалить из проекта? Пробовал найти их в схеме через поиск - не получилось.
Сигналы на них разные смотри STP.JPG.
Сигналы на них разные смотри STP.JPG.
- Вложения
-
- STP.JPG
- (239.49 КБ) 722 скачивания
-
- stp_node_finder.JPG
- (87.28 КБ) 678 скачиваний
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Извините за прямоту, kaknaxtak, но ваш ник соответствует вашим вопросам. 
Если ваш последний вопрос перевести в область программирования, то он бы звучал, наверное, примерно так.
Чё за нафиг делает компилятор из моей программы на Си? У меня в программе написано ведь на Си, а он там асемблерные командочки навставлял, которых у меня в программе нет. А в исполняемом файле, вообще, цифры и машинные коды непонятные. Пробовал найти их в программе - не получилось. Как на_ так?
А теперь серьёзно.
Компилятор, создавая прошивку для ПЛИС из ваших исходных файлов, может такие преобразования совершить с вашей схемой, что вам и не присниться никогда такое. И то что вы нашли какие-то сигналы, которых нет в вашей схеме значит только то, что компилятор так преобразовал вашу схему, так отобразил вашу схему на топологию конкретной ПЛИС, что при этом появились новые (промежуточные или типа того) сигналы. Так как сигналы между собой логически связанны, то компилятор им даёт схожие имена - добавляя, в вашем случае, некое нумерованное окончание. И удалять вам эти сигналы не надо! Вы можете на них посмотреть, если понимаете, конечно.
Вы ещё в RTL "заройтесь" - там вы ещё и не такое найдёте.
И опять же - без исходников, это разговор ни о чём.
Если ваш последний вопрос перевести в область программирования, то он бы звучал, наверное, примерно так.
Чё за нафиг делает компилятор из моей программы на Си? У меня в программе написано ведь на Си, а он там асемблерные командочки навставлял, которых у меня в программе нет. А в исполняемом файле, вообще, цифры и машинные коды непонятные. Пробовал найти их в программе - не получилось. Как на_ так?
А теперь серьёзно.
Компилятор, создавая прошивку для ПЛИС из ваших исходных файлов, может такие преобразования совершить с вашей схемой, что вам и не присниться никогда такое. И то что вы нашли какие-то сигналы, которых нет в вашей схеме значит только то, что компилятор так преобразовал вашу схему, так отобразил вашу схему на топологию конкретной ПЛИС, что при этом появились новые (промежуточные или типа того) сигналы. Так как сигналы между собой логически связанны, то компилятор им даёт схожие имена - добавляя, в вашем случае, некое нумерованное окончание. И удалять вам эти сигналы не надо! Вы можете на них посмотреть, если понимаете, конечно.
Вы ещё в RTL "заройтесь" - там вы ещё и не такое найдёте.
И опять же - без исходников, это разговор ни о чём.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Снес проект, переписал заново. Проблема осталась. Все описание в приложени.
Это мой первый проект на ПЛИС, поэтому не пинайте сильно. Проект простой. Я уверен, что по незнанию не включил/отключил какую-то настройку, или что-то тому подобное. Или просто не знаю каких-то особенностей разработки для ПЛИС.
Помогите разобраться что не так.
Спасибо.
Это мой первый проект на ПЛИС, поэтому не пинайте сильно. Проект простой. Я уверен, что по незнанию не включил/отключил какую-то настройку, или что-то тому подобное. Или просто не знаю каких-то особенностей разработки для ПЛИС.
Помогите разобраться что не так.
Спасибо.
- Вложения
-
- myuart_.part4.rar
- (505.75 КБ) 323 скачивания
-
- myuart_.part3.rar
- (976.56 КБ) 318 скачиваний
-
- myuart_.part2.rar
- (976.56 КБ) 302 скачивания
-
- myuart_.part1.rar
- (976.56 КБ) 359 скачиваний
-
- Описание.doc
- (21.5 КБ) 323 скачивания
- Реклама
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Просмотрел схему. И сдаётся мне, что вы смешиваете синхронный и асинхронный дизайн. Что не есть хорошо.
Я уже тут где-то писал об этом, придётся повториться.
Не рассматриваем случаи когда надо небольшое количество простой логики (и/или/не и прочее) в какой-то комбинации сделать.
Обычно, большие схемы для FPGA и CPLD разрабатывают как синхронные.
Т.е. все действия/вычисления стартуют по фронту, а остальное время отдаётся на выполнение (!) и распространение (!!!) сигнала по цепям ПЛИС .
Простые действия могут успевать выполниться между фронтами (например, нарастающими), и к следующему фронту результат готов. Если действий много, то или снижать тактовую частоту или вычисления/действия разбивать на этапы. Например, если этапов 5 (они идут друг за другом и тактуются от одного источника), то результат будет получен через 5 тактов.
Думаю, что описанные вами "глюки" с очень большой вероятностью связанны именно с отсутствием синхронности в вашей схеме.
Вот, нашёл где подобная проблема уже обсуждалась - http://radiokot.ru/forum/viewtopic.php?p=568613#p568613
Я уже тут где-то писал об этом, придётся повториться.
Не рассматриваем случаи когда надо небольшое количество простой логики (и/или/не и прочее) в какой-то комбинации сделать.
Обычно, большие схемы для FPGA и CPLD разрабатывают как синхронные.
Т.е. все действия/вычисления стартуют по фронту, а остальное время отдаётся на выполнение (!) и распространение (!!!) сигнала по цепям ПЛИС .
Простые действия могут успевать выполниться между фронтами (например, нарастающими), и к следующему фронту результат готов. Если действий много, то или снижать тактовую частоту или вычисления/действия разбивать на этапы. Например, если этапов 5 (они идут друг за другом и тактуются от одного источника), то результат будет получен через 5 тактов.
Думаю, что описанные вами "глюки" с очень большой вероятностью связанны именно с отсутствием синхронности в вашей схеме.
Вот, нашёл где подобная проблема уже обсуждалась - http://radiokot.ru/forum/viewtopic.php?p=568613#p568613
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Возможно так и есть. Схема задумывалась как синхронная.
Долго пытался понять что не правильно. Разобраться самостоятельно не получилось. Требуется помощь более опытных товарищей.
О великий и всемогущий Kavka (и другие более опытные чем я товарищи), позволь же мне, недостойному, насладиться мудростью твоей!
А именно:
ткни носом в синхронный кусок схемы
в асинхронный кусок схемы
подскажи (желательно на каком нибудь примере из моей схемы) как привести все к синхронному дизайну.
Спасибо.
Долго пытался понять что не правильно. Разобраться самостоятельно не получилось. Требуется помощь более опытных товарищей.
О великий и всемогущий Kavka (и другие более опытные чем я товарищи), позволь же мне, недостойному, насладиться мудростью твоей!
А именно:
ткни носом в синхронный кусок схемы
в асинхронный кусок схемы
подскажи (желательно на каком нибудь примере из моей схемы) как привести все к синхронному дизайну.
Спасибо.
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Вы писали, что разрабатывали схему по частям. И части, с ваших слов, работают по отдельности нормально. Выложите проекты этих частей тут. Давайте попробуем по частям и разбираться. Так будет проще. А то ранее выложенный проект довольно сложно просматривать, особенно если с ним не знаком.
PS: Не могу обещать, что быстро смогу посмотреть. Но загляну в проект как свободная минутка будет.
PS: Не могу обещать, что быстро смогу посмотреть. Но загляну в проект как свободная минутка будет.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Спасибо за поддержку. Опять все снес и пробую заново. Шаг за шагом, медленно но верно. Пока получается. 
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Всем доброго времени суток!
При компиляции Quartus объединяет регистры (см. файл оптимизация.jpg)
Кто-нибудь может объяснить почему происходит такая оптимизация проекта? И как это отключить?
Спасибо.
При компиляции Quartus объединяет регистры (см. файл оптимизация.jpg)
Кто-нибудь может объяснить почему происходит такая оптимизация проекта? И как это отключить?
Спасибо.
- Вложения
-
- оптимизация.JPG
- (171.03 КБ) 643 скачивания
-
- схема.rar
- (183.35 КБ) 298 скачиваний
Re: Помогите разобраться с написанием прошивки для ПЛИС Alte
Собрав мозг в кучу и волю в кулак прошивка была дописана.
Если вдруг кому интересно во вложениях приведено решение возникшей проблемы.
Всем спасибо.
Если вдруг кому интересно во вложениях приведено решение возникшей проблемы.
Всем спасибо.


