Кто работал с интерфейсом, помогите понять как работает алгоритм.
Прикрутил далласовскую корку 1-wire master к своему проекту на fpga, пытаюсь сделать алогоритм автоопределения. Для корки есть описание Synthesizable 1-Wire Bus Master. Также нашел app-note 137 с алгоритмом определения. Но, ничерта там не понял, уж очень мутная стейт машина нарисована, да еще и для битовых операций, а у меня корка сразу байт выплевывает за один проход.
Что представляет из себя мастер: это корка с набором команд и 8ми рарядной шиной данных. Для реализации одной итерации автоопределения, нужно подать корке команду сброса, затем перевести ее в режим автоопределения, после чего 16 раз записать байт с маской поиска, и считать 16 байт результата. После этого 16 полученных байт разбираются на определенный ID код (64бит) и некий результат, тоже 64 бит. Из результата надо сформировать маску для следующего запроса. Вроде просто, но как формировать эту маску?
p.s. Сишный код тоже видел, для меня он нечитабелен, т.к. Си почти не знаю. Да и реализовать я автомат планировал, или простенькую программу на ассемблере со всеми ключевыми вычислялками на логике ПЛИС.
Спасибо!
upd: вроде разобрался, нужно к старшему биту маски добавлять еще кусок последнего обнаруженного id кода. но полной победы не достигнуто, теперь определяются 7 из 8 устройств)