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

Что проще - SATA или PCIe ?

Здравствуйте.

Требуется создать систему для записи экспериментальных данных на жесткий диск (SSD). Сейчас стараюсь понять, в каком направлении двигаться, покритикуйте

пожалуйста.

 

Что система делает:

Работает в полевых условиях, принимает данные с множества датчиков.Пишет поток данных 50Мбайт в секунду на SSD (в виде файлов по 100 Мбайт каждый). Далее в лаборатории

изображает из себя ftp - сервер и выдает эти данные в ПК через Ethernet.

 

1) У меня есть идея использовать для этого ПЛИС Spartan 6, или Virtex6 или Kintex 7 с Microblaz'ом.

Связь с HDD - через SATA или PCIe. Может кто скажет, какой из них проще реализовать? На PCIe у Xilinx есть готовое ядро, а на SATA - вроде нет.

2) Правильно ли я понимаю, что чтобы писать с файловой системой на SSD, нужна ОС в Microblaze?

 

Спасибо

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

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


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

Мы делали SATA, правда slave, и мне видится что это подъемная задача, особенно если не заморачиваться всякими NCQ. PCIe мастер (root) есть только в дорогих ПЛИС, и мне непонятно как вы SSD подключите по PCIe. А SATA можно сделать ПЛИС начального уровня. Чтобы писать файлы операционку конечно надо, вот тут у вас будет небольшая сложность - придется для выбранной операционки к вашему самодельному SATA мастеру написать драйвер, что может стать самой гемморойной частью проекта.

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


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

Мы делали SATA, правда slave, и мне видится что это подъемная задача, особенно если не заморачиваться всякими NCQ. PCIe мастер (root) есть только в дорогих ПЛИС, и мне непонятно как вы SSD подключите по PCIe. А SATA можно сделать ПЛИС начального уровня. Чтобы писать файлы операционку конечно надо, вот тут у вас будет небольшая сложность - придется для выбранной операционки к вашему самодельному SATA мастеру написать драйвер, что может стать самой гемморойной частью проекта.

Наиболее сложной частью в SATA является LINK, он аналогичен уровню DATA_LINK в PCIe, но в современных ПЛИС PCIe уже существует в виде hard блока. Для ПЛИС Xilinx IP Core PCIe входит в состав CORE Generator и не требует отдельной лицензии. IP Core для SATA нужно покупать у других компаний, например у Snowbush. Когда то я пытался изучить вопрос как сделать самостоятельно SATA, но не смог. Так что мне интересно, как удалось сделать SATA в ПЛИС и главное какая ПЛИС и сколько ресурсов занимает контроллер, хотя бы приблизительно.

 

 

А для решения поставленной автором задачи напрашивается применение ARM. Там уже всё есть, включая soft. У нас на фирме эксперименты с ARM проводятся, например получили ввод данных на скорости 600 Мбайт/с через PCIe v2.0 x2.

 

 

 

 

 

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


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

Всем спасибо за ответы.

Я тут почитал еще документацию, и понял, что:

1) PCIe Root Complex есть в Virtex6 и 7 Series. В Virtex6 он доступен только из Coregen. В Kintex7 его можно будет создать из EDK. Но kit'a , который бы это демонстрировал, еще нет. Так что для PCIe Root сейчас требуется брать Virtex6 или Kintex7 , через AXI-DMA подключать к Microblaze, и писать свой драйвер для ОС. Все это видимо довольно сложно.

2) Поискал на форуме по SATA, и нашел, что на его реализацию требуется человеко-год. Многовато.

3) Нашел SSD с интерфейсом PATA и логич. уровнями 3.3V, так что даже преобразователя уровней между ПЛИС и SSD не надо. Похоже, самописная PATA - самый простой вариант.

 

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


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

vavshchuk_D, если не ошибаюсь на форуме кто то занимался разработкой SАТА контроллера. Не пробовали писать им может они поделятся за некоторое вознаграждение.

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


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

А существуют готовые микросхемы/процессоры контроллеры SATA ?

Что-то аналогичное таким для USB, поставил между разъёмом SATA и ПЛИС , решил проблему.

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


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

А существуют готовые микросхемы/процессоры контроллеры SATA ?

Что-то аналогичное таким для USB, поставил между разъёмом SATA и ПЛИС , решил проблему.

 

Xilinx Zync-7000 + USB to SATA контроллер Вас спасет.

 

P.S.

У Zync есть еще и SD-CARD контроллеры. Можно и их пользовать, если задача позволяет.

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


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

При задаче в 50МБайт/с USB2SATA не спасет.

PCIe хост на Virtex-6 или, тем более, 7-series - не проблема, но загвоздка видится в драйвере для PCI-Express SSD. Это будет или SATA SSD с PCIe-SATA RAID-контроллером (например OCZ), или что-то проприетарное и абсолютно неподъемное (например Fusion-IO).

Возможное решение - SoC процессор с PCIe / SATA одновременно.

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


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

50Мбайт в секунду

 

это надо обрабатывать на лету.

либо фермой ПЛИС либо фермой CPU.

 

посмотрите ради интереса как устроены фермы ATLAS или CMS в CERN, и как там мульти-гигабитные потоки после L1-триггеров плавно срезаются L2-триггерами и затем только пишутся в offline storage.

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

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


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

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

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

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

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

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

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

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

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

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