Pull-up и pull-down нужны чтобы избежать неоднозначности уровней до момента конфигурации устройства/системы, т.е. пока FPGA не прогружена или в случае МК, например, у него не сконфигурированы назначения выводов. Также pull-up и pull-down часто применяют в целях дальнейшего расширения системы. Т.е. входы запрограммированы на выполнение каких-то функций, но к ним пока ничего не подключено. Встроенные в FPGA схемы pull-up/down и bus-keeper не всегда соответствуют условиям помехоустойчивости. Поэтому применяют внешние резисторы.
Кстати, если вы применяете внешние pull-up/down, то всегда следует учитывать функции bus-keeper, т.е. входной ток такой схемы. Скажем при использовании CPLD XC9500XL не рекомендуется применять pull-up резисторы номиналом выше 15кОм. Потому что за счет возможных наводок схема bus-keeper может дать ложное срабатывание. Причем она может перейти в устойчивое состояние, но с уровнем входного сигнала, противоположным предполагаемому уровню, выдаваемому внешним pull-up. Это не защелкивание входа, а именно работа bus-keeper. Мы с таким уже сталкивались.
Цитата(-=Vitaly=- @ Feb 15 2007, 17:22)

Если я правильно понял если я ничего не передаю MISO и MOSI должны быть подтянуты к 0, т.е использовать пулл даун. Но эту подтяжку я могу сделать как внешней так и в плисе. А SCLK подтянуть к 1 и тоже можно либо в плисе, либо снаружи. А в плисе в случае внешней подтяжки все сигналы в отсутствии передачи должны быть в Z-состоянии??
Выбор схемы pull-up или pull-down в приложении к SPI нужно делать, исходя из формата обмена. Если вы используете SPI mode 0 или 1, то pull-down. Если же 2 или 3, то pull-up. См. временные диаграммы, обращая внимание на уровни сигналов тактирования в паузах между фреймами и фронты сигнала тактирования по которому выдается/защелкивается линия данных.