Использую AT91SAM7S256 для некого устройства ввода-вывода, он-же мега-джойстик

Для организации опроса 128 кнопок и вывода на 128 светодиодов, пришлось нагородить матрицу с опросом, т.е. дешифратор сборный, 4 входа, 16 линий выхода (строки), и мультиплексор 8->1 (столбцы).
Входы мультиплексор подтянуты к питанию, на пересечении стоят развязанные диодами кнопки. По строками последовательно бегает логический ноль, соответственно, на мультиплексоре перебираются последовательно все каналы, выход идет на контроллер, если на выходе нолик, то в данном положении кнопка нажата. В общем, по-моему, весьма классическая схема. Итого - 3 корпуса стандартной логики.
Когда задумался о выводе, то тут я решаю так - использую 8 защелок с выборкой в одном корпусе (74HC259), выбор защелки внутри осуществляется теми-же линиями (3), которые идут на мультиплексор, а Latch Enable идет с дешифратора, ввод данных общий на всех и идет на контроллер.
Получается, что на вывод мне нужно 16 корпусов.
Вот тут и вопрос - а не красивее ли использовать для организации всей матрицы (и ввода и вывода) ПЛИС? Но с ПЛИСами я дела никогда не имел, поэтому не очень представляю, как с ними обращаться.
Посоветуйте пожалуйста, следует ли копать в этом направлении (количество входов-выходов - 128 с нагрузочной способностью минимум 10мА + к этому 8+16, итого - 152 ноги, ну и 10 ног в сторону контроллера, итого - 162 ноги), либо стоит не заморачиваться и ставить корпуса?
Заранее спасибо и сорри, если оффтоп.