Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите с процем
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Fynjisx
У меня есть отладочная платка для CyclonaIII, хотелось бы записать всё туда, но не получается.
Теперь по порядку. Написал модуль который собственно и является процем, который пока включает в себя ALU, PC, Аккумулятор и умеет обрабатывать всего 4 команды (работа с памятью и сложение)))). Выходного порта нет. Далее в файле более высокого уровня подключаю его к блокам памяти ram и rom(за оба блока взяты внутренние
блоки памяти плис) и сам clk. Итого у меня получается, что в файле верхнего уровня у меня имеется только пин для clk, а выходных пинов нет. Из-за этого компилятор квартуса выдает предупреждение:
Warning (15610): No output dependent on input pin "clk"
а Fitter разводит не полностью всю мою схему. Ну здесь вроде бы всё понятно, нужны зависимые от clk выходы. Для этой цели я подключаю выходные пины на интересующие цепи - на выход ram и rom памяти(чтоб в дальнейшем посмотреть их в SignalTap)). Далее для них назначаю ножки ПЛИС. Поcле этого Fitter выдает I/O Assignment: Missing drive strength and slew rate. И далее ничего не зашивается. JTAG выдает ошибку:
Error: Can't access JTAG chain
Error: Can't configure device. Expected JTAG ID code 0x010E15DE for device 1, but found JTAG ID code 0x00000000.
Error: Operation failed
И хрен его знает почему... Думал, может JTAG не работает, но другие файлы он прошивает без проблем...Может кто подскажет, в чем тут проблема, может кто сталкивался?
Заранее спасибо...
iosifk
Цитата(Fynjisx @ Sep 9 2010, 12:34) *
квартуса выдает предупреждение:

Может кто подскажет, в чем тут проблема, может кто сталкивался?


А кто мешает сделать регистр и его выходы подать на светодиоды, которые есть на этой же плате? Запись в регистр сделайте по какому нибудь адресу памяти... Или просто при выполнении какой-либо команды...
Fynjisx
Цитата(iosifk @ Sep 9 2010, 12:41) *
А кто мешает сделать регистр и его выходы подать на светодиоды, которые есть на этой же плате?

хорошая идея. Буду пробовать
iosifk
Цитата(Fynjisx @ Sep 9 2010, 12:44) *
Это будет порт. Нужно подумать как его адресовать... Возможно нужно будет добавлять в мою систему команд, команды отвечающие за обмен данными с портом.

Ну кто Вам сказал, что именно "порт"? Кто сказал, что у всех процессоров обязаны быть порты? Если есть желание, то почитайте у меня на сайте цикл статей "Микропроцессор своими руками"...
Подключите светодиоды к шине данных. Этого компилятору будет достаточно, чтобы понять, что есть выходы. Подключите их как ячейку памяти... Или как перенос сумматора... Какие проблемы здесь?
Fynjisx
Цитата(iosifk @ Sep 9 2010, 12:50) *
Ну кто Вам сказал, что именно "порт"? Кто сказал, что у всех процессоров обязаны быть порты? Если есть желание, то почитайте у меня на сайте цикл статей "Микропроцессор своими руками"...
Подключите светодиоды к шине данных. Этого компилятору будет достаточно, чтобы понять, что есть выходы. Подключите их как ячейку памяти... Или как перенос сумматора... Какие проблемы здесь?

Сделал, схема ниже. Сетодиоды загорелись. Но JTAG все равно выдает ошибку.
Fynjisx
Цитата(Fynjisx @ Sep 9 2010, 13:06) *
Сделал, схема ниже. Сетодиоды загорелись. Но JTAG все равно выдает ошибку.

Ерунда какая-то. ОТдельнопроц без памяти он загружает. Но стоит подключить память, как сразу выдает ошибку по JTAG. Хотя сама по себе отдально прога для проверки памяти загружается без ошибок
Fynjisx
Заработало!!! НО только после того, как я блоки памяти (rom и ram), описал не в файле верхнего уровня, как у меня на картинке, а внес эти описания в файл описания блока cp. Проблема в том,
что не понял в чем разница?
Под словом "заработало" я имел ввиду тот факт, что JTAG перестал давать ошибки и всё нормально сконфигурировал...
Fynjisx
всё разобрался- заработало!!!)))
des333
Цитата(Fynjisx @ Sep 14 2010, 20:50) *
всё разобрался- заработало!!!)))
Это очень важно, что Вы сообщили сообществу, что у Вас все хорошо.
А в чем была проблема и как ее решили - это ненужные мелочи, их не стоит указывать.

Ведь, если у кого-нибудь еще возникнет подобная проблема, он, того и гляди, сможет воспользоваться Вашими подсказками - а этого ни в коем случае нельзя допустить!  smile.gif
Fynjisx
Цитата(des333 @ Sep 14 2010, 21:36) *
Это очень важно, что Вы сообщили сообществу, что у Вас все хорошо.
А в чем была проблема и как ее решили - это ненужные мелочи, их не стоит указывать.

Ведь, если у кого-нибудь еще возникнет подобная проблема, он, того и гляди, сможет воспользоваться Вашими подсказками - а этого ни в коем случае нельзя допустить!  smile.gif

Проблема была в том, что при конфигурации FPGA я ошибочно перенастраивал ногу TDO. Вместо светодиода на неё выводил. Там в схеме была опечатка. Ну и в том же проекте обнаружил ещё одну ошибку: описал внутри модуля inst5 :cp ( если посмотреть на мою первую картинку) буфер с тремя состояними. Что как я впоследствии выяснил, из HandBook на Quartus, делать нельзя! Все тристабильные буферы должны описываться только в файле верхнего уровня, который сцепляется с пинами FPGA.
Victor®
Цитата(Fynjisx @ Sep 29 2010, 17:21) *
...Ну и в том же проекте обнаружил ещё одну ошибку: описал внутри модуля inst5 :cp ( если посмотреть на мою первую картинку) буфер с тремя состояними. Что как я впоследствии выяснил, из HandBook на Quartus, делать нельзя! Все тристабильные буферы должны описываться только в файле верхнего уровня, который сцепляется с пинами FPGA.


Что интересно, сталкивался с аналогичной ситуацией в Xilinx насколько лет назад ;-)
Проект (VHDL) был чужой, я его переделывал (и еще в другой версии ISE). В "старой версии" как-то оно синтезировалось,
в "новом" ISE приводило к тому, что буфер был всегда разрешен. Xilinx в какой-то апноте (синтез гайд, наверное) тоже настаивает на выносе тристейтов на топ.
Вероятно потому, что трехстабильных шин внутри чипов нет. И синтезатору проще понять их непосредственно на топе, где они соединяются с физическими пинами.
iosifk
Цитата(Victor® @ Sep 29 2010, 23:01) *
... Xilinx в какой-то апноте (синтез гайд, наверное) тоже настаивает на выносе тристейтов на топ.
Вероятно потому, что трехстабильных шин внутри чипов нет. И синтезатору проще понять их непосредственно на топе, где они соединяются с физическими пинами.


Делаю так всегда!
И симулить без буферов гораздо легче, особенно если они дифф-пары...
И даже делал самодельный софтовый инструмент, который по названию сигналов автоматически добавлял буфера и генерил файл верхнего уровня и файл пинов к нему...
Maverick
Цитата(Victor® @ Sep 29 2010, 22:01) *
Что интересно, сталкивался с аналогичной ситуацией в Xilinx насколько лет назад ;-)
Проект (VHDL) был чужой, я его переделывал (и еще в другой версии ISE). В "старой версии" как-то оно синтезировалось,
в "новом" ISE приводило к тому, что буфер был всегда разрешен. Xilinx в какой-то апноте (синтез гайд, наверное) тоже настаивает на выносе тристейтов на топ.
Вероятно потому, что трехстабильных шин внутри чипов нет. И синтезатору проще понять их непосредственно на топе, где они соединяются с физическими пинами.

Я тоже использую тристейт буферы только на топе. Соединение внутренних блоков схемы произвожу через мультиплексоры вместо использования тристейт буферов. Насколько мне известно у Xilinx только в семействе Virtex II (или еще в более ранних семействаx) имеются внутренние тристейт буферы (в каждой макроячейке), а уже Virtex 4 (Spartan 3) и выше (более поздних) их уже нет... только в блоках ввода-вывода.

Подробности по Virtex II здесь стр. 28 Раздел "3-State Buffers"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.