Я тоже пытаюсь построить контроллер SATA2.0 на отладочной плате ML505 с Virtex5. Жесткий диск Western Digital Caviar Black WD5002AALX. Запись одного сектора проходит без проблем. Но если попробовать хотя бы 16 секторов одним кадром, то контроллер виснет. Но это по моей вине из-за неправильной обработки прихода примитивов.
Тут целая головоломка с ALIGN: нужно отследить когда его отправляет HDD и сделать также. Сначала я думал, что ALIGN отправляется только после CONT, поэтому так построил алгоритм передачи ALIGN со своей стороны. Оказывается, как удалось отследить в чипскопе, винт может отправить ALIGN и без всякого CONT.
Надо еще посмотреть, каким образом жесткий диск отправляет ALIGN во время передачи данных со своей стороны. Со своей стороны я делаю так: ... данные, HOLD, HOLD, CONT, ALIGN, ALIGN, HOLD, данные ... .
|