Конструкция интерфейса SATA. Часть 4.

Исследование просторов интернета показало, что SATA контроллера с полным исходным кодом для ПЛИС (FPGA), в виде недорогой железки, которая, при этом, еще и сразу работает, нет!

Пересмотрев на github.com весь ассортимент того, что с виду напоминает SATA host контроллер, я подобрал несколько проектов, представляющих интерес:

(1) https://github.com/CoreyChen922/sata_2_host_controller

(1.1) форк : https://github.com/danieltangdx/sata_2_host_controller

(2) https://github.com/freecores/sata_controller_core

(3) https://github.com/Siprj/sata-fpga

Первый проект под Virtex5 даже не собирается, так как не хватает файлов.

Проект по ссылке 1.1 содержит удаленный из первого проекта файл тестовой схемы system.mhs. С ним собирать пока не пробовал.

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

Теперь с этим набором вводных данных пробую разобраться. Сделал тестовые проекты с ChipScope отладкой под Virtex-6 плату и Wukong Artix-7 (от компании ChinaQMTECH). Они выложены в репозитории R.lab. Там, пока что, только вариант VHDL. Xilinx инструментарий ISE 14.7, так как поддерживаются старые микросхемы, которых уже нет в Vivado.

Сделал для платы Wukong дополнение со светодиодами и выключателями.

LED_Switch_PCB

Схема дополнения выложена так же в репозитории с исходным файлом для Altium Designer.

led_switch_sch

При сборке под плату Wukong выдается предупреждение про тактовый сигнал:

wukong_clk

Оказалось, что это проблема с выбором тактового входа FPGA Artex-7 — они не все одинаковые. Описание проблемы чудом нашел в багрепортах репозитория ChinaQMTECH на гитхабе.

Проблема в том, что у Artex-7 есть ведущий и ведомые тактовые входы. Собираем для соседнего ведущего (номер входа) и все работает!

В имеющейся у меня версии платы тактовый сигнал подключен так:

wukong_1

А в новой версии Wukong платы, которая сейчас продается эта проблема уже исправлена.

wukong_2

Но у меня плата старая. Решил припаять еще один генератор на 100 мегагерц к подходящему тактовому входу, выведенному на разъем расширения.  Доработка выглядит так:

20220202_181809s

Пластиковый корпус кварца просто приклеил к разъему суперклеем. В разъеме J10 есть питание — подключился к нему. Провод на 7-ой контакт — это выход тактового сигнала.

Для работы всех найденных исходных кодов SATA host контроллеров используется тактовый сигнал с частотой 150 мегагерц, подключенный к специальному входу для блока GTX. Следовательно, на всех платах перепаиваю соответствующий генератор на 150 мегагерц с дифференциальным выходом.

На плате Virtex6:

IMG_0851s

На плате Wukong:

IMG_0859s

Еще проверил работоспособность IBERT через установленные оптические приемо-передатчики SFP+.

IMG_0839s

Не забывайте делать бэкап. До новых встреч!

PS. Все публикации этой серии доступны по метке «SATA».

Поделиться ссылкой на пост в соц. сетях

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *