Перейти к содержанию
    

Как разобраться в программе на C и как по ней можно создать загрузочное ядро?

Подскажите пожалуйста, как разобраться в программе на языке С или переделать ее под VHDL? Как имея под рукой программу на языке С создать загрузочное ядро для Xilinx ML403? Обычные среды разработки типа Visual Studio ведь такого не позволяют? На самом деле первостепенным вопросом является именно перевод программы на VHDL, но для начала можно было бы и с С поработать, понять что там и как выполняется..

 

Очень нужна программа отображения информации на мониторе посредством VGA разъема. Нашел в дефолтовских программах на CompactFlash, идущей в комплекте с самой 403 платой, программу под названием slideshow, она делает как раз именно то, что мне нужно! Но ее исходники только на языке С..

 

Заранее спасибо за ответ, с уважением, Сергей.

Изменено пользователем CaHbl4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если я перепишу код на С, как мне проверить его работоспособность? Как создать загрузочное ядро и как его залить в плату?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Типичный подход традиционных программеров! VHDL параллелен по сути. Образно,- в нем бесконечность процессоров и на каждом своя С-программа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если я перепишу код на С, как мне проверить его работоспособность? Как создать загрузочное ядро и как его залить в плату?

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

 

С видео работает ? :) Тогда все просто! Представляете себе видео картинку как поток байтов: синий, красный зеленый (попиксельно), делаете счетчик, который распределяет аппаратно эти пиксели в RAM, затем (тут сложнее :) ) в вашем алгоритме обработки (последовательном) ищите, где его можно распаралелить. Под каждую параллельную ветку строите аппаратный конвейер, используя там сумматоры, вычитатели, умножители, и т.д.

 

А если серьезно - это ОООООЧЕНЬ большой труд, этому учатся многие годы, и так просто алгоритмы с С на FPGA не перенести. Можно конечно придумать "тупой" перенос, не заморачиваясь в особенностях алгоритма, но эффективность такой реализации алгоритма на FPGA будет никакая. Да и это без нужных знаний не сделать.

 

Чтоб оценить понимаемость кода HDL (и сложность описания алгоритмов обработки видео) для себя, посмотрите исходники на сайте opencores например, там есть пример кодера и декодера h.264 написанный в HDL. Если поймете - значит это ваше, если нет - надо учиться...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста, как разобраться в программе на языке С или переделать ее под VHDL? Как имея под рукой программу на языке С создать загрузочное ядро для Xilinx ML403? Обычные среды разработки типа Visual Studio ведь такого не позволяют? На самом деле первостепенным вопросом является именно перевод программы на VHDL, но для начала можно было бы и с С поработать, понять что там и как выполняется..

 

Очень нужна программа отображения информации на мониторе посредством VGA разъема. Нашел в дефолтовских программах на CompactFlash, идущей в комплекте с самой 403 платой, программу под названием slideshow, она делает как раз именно то, что мне нужно! Но ее исходники только на языке С..

 

Заранее спасибо за ответ, с уважением, Сергей.

 

Пожалуй не стану Вас подкалывать...

 

Перенести програму на С в VHDL код принципиально не возможно.

Так как например EXE под Windows не заработает напрямую на ARM процессоре....

 

В Вашем случае надо розбираться не в С программе, а в прикладной области - "отображения информации на мониторе посредством VGA разъема"

Т.е. понять что такое "VGA разъема" и как с ним работать. А уже потом писать VHDL.....

 

----------------

Хотя.... а вдруш поможет ..... только надо малость розобраться.....

http://www.mentor.com/esl/catapult/overview

Изменено пользователем Torpeda

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему Вы решили выбрать для переноса VHDL, ведь verilog гораздо ближе по синтексису к С?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень нужна программа отображения информации на мониторе посредством VGA разъема. Нашел в дефолтовских программах на CompactFlash, идущей в комплекте с самой 403 платой, программу под названием slideshow, она делает как раз именно то, что мне нужно! Но ее исходники только на языке С..

эти исходники на С для процессорного ядра, встроенного в ПЛИС . Процессор управляет контроллером vga(есть готовый в среде), также встроенном в ПЛИС.

 

Так что ни о каком переводе с С на HDL речи идти не может. Пишите програмку на С и пользуйтесь выводом на VGA. VGA контроллер не нужно переписывать ! Только разберитесь, в регистрах контроллера VGA.

 

Обычные среды разработки типа Visual Studio ведь такого не позволяют?

Здесь своя среда - ISE embedded edition. Там есть все необходимое для разработки на HDL и на С. Также есть средства для заливки на плату , но вам потребуется еще JTAG. Дерзайте.

 

А почему Вы решили выбрать для переноса VHDL, ведь verilog гораздо ближе по синтексису к С?

чуш... то и другое сильно далеко от С, а некоторые языковые сходства написание на С и verilog только больше запутают новичка, чем дадут преимущества.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

эти исходники на С для процессорного ядра, встроенного в ПЛИС . Процессор управляет контроллером vga(есть готовый в среде), также встроенном в ПЛИС.

Так что ни о каком переводе с С на HDL речи идти не может. Пишите програмку на С и пользуйтесь выводом на VGA. VGA контроллер не нужно переписывать ! Только разберитесь, в регистрах контроллера VGA.

Здесь своя среда - ISE embedded edition. Там есть все необходимое для разработки на HDL и на С. Также есть средства для заливки на плату , но вам потребуется еще JTAG. Дерзайте.

 

Разобраться можно и нужно, но ТС так и не уточнил, на каком языке и как это нужно сделать по заданию. Откуда брать файл для вывода на VGA? Или как хочешь, так и сделай. Главное, чтобы работало?

 

ЗЫ:

......

чуш... то и другое сильно далеко от С, а некоторые языковые сходства написание на С и verilog только больше запутают новичка, чем дадут преимущества.

 

Переформулировав: не похожи... а схожи. Я правильно понял? :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Во как застращали бедного программиста.

На самом деле попытки скрестить ужа и ежа ведется уже давно и в некоторых случаях вполне успешно!

И инструментов для этого есть куча - например Catapult C от Mentorа. Так что смотрите Google на предмет C to RTL synthesis.

 

Но при этом надо понимать что без сноровки в результате такого скрещения в основном будет получатся колючая проволока :).

 

Успехов! Rob.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чего все ударились в трансляцию C на VHDL.

Вопрос ведь как стоял "подскажите пожалуйста, как.... имея под рукой программу на языке С создать загрузочное ядро для Xilinx ML403?"

Ответ очень просто. Берете среду EDK которая идет в комплекте с ML403, и пишете или адаптируете программу на C под встроенные процессоры PowerPC или под программный процессор Microblaze.

Там используется чистый C/C++, надо только с адресным пространством разобраться и понять откуда читать и куда выводить данные.

Ресурсов у ML403 хватит на Linux, то есть можно вообще Linux туда залить и уже под Linux программу вывода на video.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во как застращали бедного программиста.

На самом деле попытки скрестить ужа и ежа ведется уже давно и в некоторых случаях вполне успешно!

И инструментов для этого есть куча - например Catapult C от Mentorа. Так что смотрите Google на предмет C to RTL synthesis.

Из Google не смог получить представление о текущем состоянии дел. Кто-нибудь сам работает плотно с подобным инструментом?

Есть ветка: http://electronix.ru/forum/index.php?showtopic=72901

можно поднять и сравнить подходы на подобранных задачках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобраться можно и нужно, но ТС так и не уточнил, на каком языке и как это нужно сделать по заданию. Откуда брать файл для вывода на VGA? Или как хочешь, так и сделай. Главное, чтобы работало?

 

На самом деле для начала мне достаточно даже просто засветить экран в какой-либо цвет, но когда начал разбираться с тем что да как набрел на уже залитую программку в CompactFlash, которая берет фотку с этой же флешки, заливает ее в память, а потом оттуда на экран, так называемое слайд шоу делает при нажатии на кнопку. Так вот эта программа меня очень заинтересовала и я нашел ее исходники, но они оказались в С. А сделать нужно, как я уже уточнил у преподавателя, только на VHDLе. Вот и задумался насчет перевода, ну или хотя бы насчет того, чтобы разобраться в коде на С и попробовать переписать под себя. Программа меня так заинтересовала потому что в идеале нужно будет готовить презентацию по проделанной работе и я как раз подумал о том, что презентацию то можно было бы прямо со своей платы и запустить, залив туда скрины с компа нужного формата(640х480)

 

В Вашем случае надо розбираться не в С программе, а в прикладной области - "отображения информации на мониторе посредством VGA разъема"

Т.е. понять что такое "VGA разъема" и как с ним работать. А уже потом писать VHDL.....

 

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

А в симуляции в Xilinx8.2i все отображается именно так, как нужно!

 

Вопрос ведь как стоял "подскажите пожалуйста, как.... имея под рукой программу на языке С создать загрузочное ядро для Xilinx ML403?"

Ответ очень просто. Берете среду EDK которая идет в комплекте с ML403, и пишете или адаптируете программу на C под встроенные процессоры PowerPC или под программный процессор Microblaze.

Там используется чистый C/C++, надо только с адресным пространством разобраться и понять откуда читать и куда выводить данные.

Ресурсов у ML403 хватит на Linux, то есть можно вообще Linux туда залить и уже под Linux программу вывода на video.

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

 

А как это сделать я не знаю, даже с цитатами на форуме с трудом разобрался)) почему-то пишет при наведении на кнопку REPLY "ответить прямо в этом сообщении". Потом вообще через минуту после того, как я написал сообщение кнопка EDIT почему-то пропала, я написал новый пост, а он добавился к старому и кнопка снова появилась.. Чудеса))))

Изменено пользователем CaHbl4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я конечно уверен что ваш преподаватель очень умный и уважаемый специалист. Но заниматься на VHDL отображением jpeg c flash'ки на монитор , кхе, странноватое задание для студента.

Мой вам совет, определитесь с преподавателем насчёт необходимого уровня работ, что нужно сделать и как нужно сделать, немаловажный момент -- в какие сроки это нужно сделать.

Насчёт "вашей" Си-программы: Думаю, не стоит копаться в"дебрях". как никак это многоуровневая система (так называемая "система на одном кристале" хотя далеко не на одном). Там есть и VHDL и специализированные микросхемы и софт-процессоры (а может и хард) и программы на Си и не только программы но и драйвера, а, может, и операционки (типо линукс). Не стоит в этом всём копаться однавременно..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тронуться с места можно просто нарисовав простенькую схему. Вот её в VHDL перевести труда не составит!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...