Причесывая ВГ93 нашел крайне интересный таймер (судя по всему стоит в цепи задержки шага головки, точнее еще не разбирался).
По документации, шаг головки должен быть кратен 3мс, что формируется из 12 импульсов по 250 тактов на частоте 1МГц (250мкс)
Однако, таймер, задающий базовую задержку имеет цикл 249, а не 250.
Мало того, он построен на крайне интересном 8-битном LFSR-регистре, результат работы которого на первый взгляд не очевиден.
При начальном сбросе или достижении 0, регистр загружается числом 0b11111001 (0xF9).
Каждый такт 7-бит регистра инвертируется, биты 6..0 циклически сдвигаются вправо, а бит 0 составляется битов 1 и 2 сложенных по функции XNOR.
При достижении 0, регистр опять загружается числом 0xF9.
Если бы проектировщики WD1793 делали честный линейный счетчик на 250, это бы заняло в кремнии гораздо больше места.
Построение же хитрого LFSR-регистра с грамотно подобранном в нужном месте дешевым XNOR, чтобы цикл стал максимально большим, позволило очень сэкономить на транзисторах.
А то, что счетчик считает до 249, а не до 250, думаю, это тоже связано именно с тем, что если бы счет был до 250, начальная константа была бы 0x71. В ней четыре 1 и четыре 0. Тогда как в 0xF9 всего 2 нуля. Установка в единицу для такой схемотехники оказалась дешевле сброса бита в ноль. А для шага головки, что 249, что 250 - разница почти никакая, поэтому инженеры остановились на удачном и дешевом 249.
![]()




Ответить с цитированием