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

Внешний интерфейс FPGA

Приветствую всех.

 

Столкнулся по работе с необходимостью запрограммировать плис Xilinx'a. Сам я по профессии программист и в схемотехнике не разбираюсь.

Изучил немного VHDL, написал простенький хеллоу ворлд и проверил его на симуляторе, разобрался как связывать ножки микросхемы с портами ввода/вывода через ucf файл. Вставил перепрограммируемую плис(Xilinx Virtex-6) в компьютер и совершенно не понимаю что делать дальше. Как связать ПЛИС с компьютером? Можно ли достучаться до неё к примеру из обычной программы на С++? Может кто-нибудь посоветовать хотя бы какой-нить простейший пример типа "Из программы посылаются два числа на ПЛИС, там вычисляется сумма и отправляется обратно"?

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


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

Вставил перепрограммируемую плис(Xilinx Virtex-6) в компьютер и совершенно не понимаю что делать дальше. Как связать ПЛИС с компьютером?

 

Куда вставили ? В PCI ? В PCI Express ? И как вставили ? У вас плата-StarterKit на этой ПЛИС ? Или разработанная вами плата ? Вот, гляньте вот эту страничку:

 

http://www.fpga4fun.com/

 

 

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


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

У вас плата-StarterKit на этой ПЛИС ?

 

Полагаю, если я правильно понял, Evaluation Kit. По крайней мере полное название устройства Virtex-6 FPGA ML605 Evaluation Kit.

 

Куда вставили ?

 

Пока-что просто в USB =) Но там на плате просто дофига разъемов, т.е. есть возможность подсоединить и по PCI-Express и, например, по Ethernet. В целом мне не важно по чему подсоединять её.

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

P.S. Почитал аналогичные темы на форуме, но так и не понял что мне делать)

 

 

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

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


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

Пока-что просто в USB =) Но там на плате просто дофига разъемов, т.е. есть возможность подсоединить и по PCI-Express и, например, по Ethernet. В целом мне не важно по чему подсоединять её.

Неужто доки нет?

 

Hardware Demonstration Setup Instructions

 

This section describes how to set up the hardware demonstration for the Virtex-6 FPGA

Connectivity TRD. This demonstration outlines a bridging function between PCIe and

XAUI protocols. It also provides accesses to an onboard DDR3 memory.

1. This equipment is needed to run the hardware demonstration:

• Virtex-6 FPGA Connectivity Kit

• PC system with a x8 PCIe slot on the motherboard, CD ROM drive, and a USB

port

• Monitor, keyboard, and mouse

• Linux Operating System: Fedora 10 LiveCD

2. Run the alternate demonstration.

If there is no access to any of the equipment in step 1, refer to Getting Started with the

Virtex-6 FPGA IBERT Reference Design, page 38 to alternately bring up the ML605

board included in the Virtex-6 FPGA Connectivity Kit. Otherwise, continue with the

PCIe to XAUI protocol demonstration in step 3.

3. If the instructions in the Virtex-6 FPGA Connectivity Kit Hardware Setup Guide have

already been completed to bring up the Virtex-6 FPGA Connectivity Kit, proceed to

Evaluating the Virtex-6 FPGA Connectivity TRD, page 19; otherwise, continue to

step 4.

4. Hardware Setup I: Board setup and configuration.

The ML605 board is shipped with the FMC Connectivity daughter card attached to the

FMC_HPC connector (see Figure 2). To run the Connectivity TRD demonstration, you

need to externally loop back the XAUI data through a CX4 loopback connector

provided in the connectivity kit.

a. Verify the switch settings are correct:

- Switch S1: 1=OFF, 2=OFF, 3=OFF, 4=ON

- Switch S2: 1 = ON, 2 = OFF, 3 = OFF, 4 = ON, 5 = ON, 6 = OFF

b. Verify that Jumper J42 has pins 3-4 shorted.

c. Plug in the CX4 loopback connector:

- Remove the plastic pin protector.

- Plug in the CX4 loopback connector on the FMC Connectivity daughter card’s

J2 connector (see Figure 3).

 

йандекс найдет

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


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

2MrYuran

 

Хм... Наверное я не совсем ясно изложил проблему... Попробую по другому спросить.

 

У меня подсоединена(не важно как - как скажите так и подсоединю =) ) плата. На плате ПЛИС уже запрограммирована и в ней записан нужный алгоритм. Плата рабочая, тестовые программы из Getting Started благополучно запускаются и всё такое. С этим проблем нет.

Дальше - у меня есть основная программа, которая написана на языке С++. В каком-то месте мне необходимо "попросить" мою ПЛИС выполнить вшитый в неё алгоритм, т.е. передать на ПЛИС некоторые входные данные, передать некий управляющий сигнал что, мол, можешь запускать алгоритм, по выполнении алгоритма считать его выходные данные.

Т.е. задача сводится к отправке и получению данных от ПЛИС из основной С++ программы. Вопрос - как это сделать на языке С++ либо на уровне ассемблера? Ну или, хотя бы, посоветуйте в какую сторону копать(гуглить)?

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

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


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

Почитали прилагаемую документацию? Проверили что все заводские программы работают?

 

1 Остановитесь на самом простом (для Вас лично) интерфейсе. Если есть обычный сом-порт, это самое простое.

2 Реализуйте самостоятельно (или найдите готовый) код/схему для выбранного Вам интерфейса. В крайнем случае поищите тут в интерфейсах (таких тем полно)

3 Сделайте тестовый проект для ПЛИС (на аппратном уровне), реализующий запись/чтение

4 Напишите тестовую программу для обмена с ПЛИС

5 Проверьте что программа корректно общается с ПЛИС

Всё!

 

P.S.: Для "чистого" программиста тяжеловато будет сначала, но терпение (+время) и труд всё перетрут:) Если у Вас коммерческий проект, найдите специалиста (или в крайнем случае консультанта)

 

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


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

О, а вот это уже интереснее. По пункту 2: т.е., грубо говоря, конкретные ножки микросхемы можно вывести на конкретные "проводки" соответствующего порта?

 

P.S. Проект, да, коммерческий и специалиста уже нашли... "Специалистом" оказался я. =(

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


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

Хм... Хочу сузить вопрос... Как обеспечить взаимодействие FPGA с PCI-Express портом под ISE? Вот у меня есть в PlanAhead различные ножки микросхемы. Но ведь это не конкретный порт? Как запрограммировать в ISE доступ к PCI-Express?

Повторюсь, плата на которой стоит моя Virtex-6 - стандартная, ксилинксовская, Evaluation Kit.

Если ткнете в документацию - тоже буду рад, т.к. все документации которые я нашел - не о том =(

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


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

Хм... Хочу сузить вопрос... Как обеспечить взаимодействие FPGA с PCI-Express портом под ISE? Вот у меня есть в PlanAhead различные ножки микросхемы. Но ведь это не конкретный порт? Как запрограммировать в ISE доступ к PCI-Express?

Повторюсь, плата на которой стоит моя Virtex-6 - стандартная, ксилинксовская, Evaluation Kit.

Если ткнете в документацию - тоже буду рад, т.к. все документации которые я нашел - не о том =(

 

Так я же дал ссылку, там и про PCI Express написано. Но начать лучше с чего-то попроще. Начните с простого мигания лампочкой. Внимательно разберите примеры проектов на указанной мной страничке. В любом случае, вам придется разобраться с языком описания аппаратуры. Лучше всего - все же Verilog, а не VHDL. Сразу, без подготовки, реализовать обмен по PCI Express, наверное, не получится ...

 

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


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

Хм, хорошо, я посмотрю конечно на счёт мигания лампочки, но с языком описания архитектуры не вижу особых проблем с точки зрения программирования.

 

По Вашей ссылке я смотрел и уже отписывался ниже:

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

Но, хорошо, я посмотрю ещё.

 

А вообще, тогда такой вопрос в лоб) У меня стоит плата ксилинксовская с ихней ПЛИСкой за 80 кусков, если не ошибаюсь. ISE предоставляет средства HDL, визуальные средства проектирования схемы и прочее. Неужели у них нет стандартных средств взаимодействия с PCI-Express(или любым другим портом) на предоставленной ими же плате, и чтобы отправить пару байт на компьютер нужно стать гуру Verilog/VHDL?

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

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


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

А вообще, тогда такой вопрос в лоб) У меня стоит плата ксилинксовская с ихней ПЛИСкой за 80 кусков, если не ошибаюсь. ISE предоставляет средства HDL, визуальные средства проектирования схемы и прочее. Неужели у них нет стандартных средств взаимодействия с PCI-Express(или любым другим портом) на предоставленной ими же плате, и чтобы отправить пару байт на компьютер нужно стать гуру Verilog/VHDL?

 

Поставлю вопрос иначе. Вот вы вставили плату в слот. Включили машину. BIOS должен эту плату определить (наряду с другими) и вывести сведения о ней. Windows должна сказать, что в системе обнаружилось новое устройство. Это происходит ? Если да, то перечеркните все мои ссылки и разбирайтесь с тем, как из вашей программы на Си достучаться до готового и работающего на PCI Express устройства. Если же этого не наблюдается, то вооружитесь материалами, поставляемыми с платой, аппнотами от Xilinx, данными вам советами и терпением и разбирайтесь, как на базе вашей платы реализовать интерфейс PCI Express ...

 

 

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


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

Да, конечно, после установки драйверов всё это благополучно происходит и плата видится в диспетчере устройств.

 

Как из Си достучаться до PCI-E для меня задача чисто технического характера. Я пока к ней не приступал, но она меня не беспокоит - в этой области опыта достаточно.

Вопрос в другом. В ISE я знаю как связать входные/выходные порты с ножками микросхемы. Надо либо ручками .ucf файл подредактировать либо в PlanAhead. Но я в упор не понимаю как ножки микросхемы к которым я подключаю порты связаны с PCI-Express/USB/Ethernet/чем-угодно-ещё-на-плате. Ну вот отправлю я какой-то кусок байт по порту с компьютера, а дальше-то что? Ни в VHDL ни в Verilog нету мегафункции ПолучитьДанныеСPciExpress, а есть просто проводки тянущиеся от ножек микросхемы, не понятно как вообще связанной с портами.

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


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

Но я в упор не понимаю как ножки микросхемы к которым я подключаю порты связаны с PCI-Express/USB/Ethernet/чем-угодно-ещё-на-плате. Ну вот отправлю я какой-то кусок байт по порту с компьютера, а дальше-то что? Ни в VHDL ни в Verilog нету мегафункции ПолучитьДанныеСPciExpress, а есть просто проводки тянущиеся от ножек микросхемы, не понятно как вообще связанной с портами.

 

О ! А вот организовать "проброс" данных между "ножками" и "PCI-Express/USB/Ethernet/чем-угодно-ещё-на-плате" - это уже ваша задача. А для этого и придется вникать в Verilog и изучать готовые примеры.

Вот здесь очень простой пример - зажигание светодиода на PCI - плате:

 

http://www.fpga4fun.com/PCI0.html

 

А вот - то же, но для PCI-Express:

 

http://www.fpga4fun.com/PCI-Express6.html

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


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

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

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


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

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

 

Нет, на плате расширения, т.е., на вашей плате. При чем здесь материнка ???

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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