Вы не с той стороны подошли к вопросу. А подходить надо со стороны конкретных семейств ПЛИС, ибо у каждого семейства ПЛИС есть свои особенности. Вам необходимо посмотреть как Ваша схема (не функция - математическая формула, написанная на бумажке, а именно схема) ложится в ту или иную структуру ПЛИС.
В настоящее время логические функции в FPGA реализуются на LUTx (Look-Up-Table - таблицах истинности), где x - количество входов. LUTx является ПЗУ (а иногда и ОЗУ) с x линиями адреса и одной выходной линией, соответственно этому ПЗУ абсолютно всё-равно какое количество входных линий адреса Вы задействовали своими полезными сигналами - задержка выборки содержимого изменяться не будет. Например, в FPGA Xilinx (Virtex-5/6, Spartan-6 и 7-ом семействе) используются LUT6. Для реализации длинных сумматоров (вычитателей) используются Carry Chains (см. документацию) - но в этом случае, с каждым разрядом задержка начинает потихоньку расти.
Если брать CPLD, то в них картина принципиально иная: логические функции реализуются на 2-х последовательных многовходовых NotAND элементах. Для Xilinx Cool Runner (XPLA3) у каждого из 48-ми NotAND элементов первого каскада (AND-Term) может быть использовано до 40 входов, а на входы элементов второго каскада NotAND (Or-Term) могут быть подключены нужные выходы элементов первого каскада. По максимуму имеем: 40 входов (и 40 их инверсий) -> 48 AND-Term -> OR-Term. Т.е. функции типа OR кучи (до 48) AND'ов будут иметь одинаковую задержку, пока в XPLA3 будет использоваться не более 40 входов.
Как-то так получается. Если что-то еще необходимо, то задавайте более конкретные вопросы.
|