Цитата(Victor® @ May 21 2009, 16:30)

С чего Вы это взяли? Откуда такая информация?
А вот откуда Вы взяли, что у CR так?
Читаем в
XAPP440 - Power On Behavior of Xilinx CPLDs третий абзац:
CPLDs must reset to a known state and load an internal configuration pattern (EPROM) into volatile logic cells (SRAM), extremely quickly, to appear ”instantaneously on.” In the case of CoolRunnerTM CPLDs, to save power, internal EPROM cells are powered down after configuration. Configuration is also performed in XC9500TM, XC9500XLTM, and XC9500XVTM CPLD families as the power supply voltage rises, though due to architecture differences the mechanics are significantly different. Loading the EPROM into volatile memory saves power, but comes with the price of extended configuration time. To speed up configuration, a fast state machine starts early – when the VCC is about two-thirds of the way to VCCMIN. This presents a gap in output pin tracking, as the pins remain unconfigured until the configuration point. They become configured when their SRAM cells are loaded.Цитата(SM @ May 21 2009, 16:50)

Ну и не очень сильно они отличаются. Как я понял - альтера умеет бить свои LUT4 на несколько LUT2 для арифметического режима. И имеет отдельные цепи синхронной загрузки, сброса, асинхронной загрузки и каскадирования регистров. Xilinix же на пару с LAttice имеют режим SRAM, но не имеют многообразия режимов работы LE и такого набора цепей загрузок-сбросов. Что тут лучше - не могу сказать. 50/50. Но и там LUT4, и тут LUT4. Где-то на каких-то структурах альтерская структура дает серьезную фору, а где-то, возможно, полезна и возможность распределенной памяти. Касаемо разводки - структуры очень похожи, особенно в части быстрых переносов. Альтера сделала еще SLOADы, SCLEARы и ALOADы, потратив часть кристалла на это (подозреваю, что у L и X она потрачена на организацию той же распределенной памяти).
Чтобы не быть голословным положу общую схему Slice (CLB - этообъединение 4 Slice, у каждого CLB свой магистральный коммутатор).
1. Ну, как делать LOAD сквозь цепь переносов, я уже показывал с соседней теме. Если очень надо загружать напрямую, то есть 2 варианта блокировки переносов:
а) Через MULTAND.
б) Собственно говоря - прямое поддавление входного переноса.
После этого SLOAD особого преемущества не имеет.
2. SCLEAR - ну в Slice к паре триггеров одновременно подходит и RST/CLR, и SET/PRE. Т.к. использование асинхронного сброса (предустановки) черевато, то обычно он не используется. Для каждого Slice независимо конфигурируется синхронность/асинхронность сбросов/предустановок. Поэтому, думаю у Xilinx это место более богатое, чем у Alter'овских Cyclon'ов.
3. LUT4 - он и в африке LUT 4, но у Xilinx он может работать и как Disributed RAM 16x1 Два LUT4 одного Slice могу образовывать DualPort Disributed RAM 16x1. Еще можно сконфигурировать LUT4, как SHR16 - 16 битный Shift Register. И для Disributed RAM, и для Shift Register есть специальные трассы? позволяющие каскадировать элементы (наращивать глубину адреса). В Alter'овских FPGA ничего подобного нет ! Или я ошибаюсь ??! (DualPort Disributed RAM прекрасно подходит для перехода из одного clock domain в другой. А Shift Register можно использовать, как линию задержки динамически управляемой длинны.)
4. LAB имеет только разных 2 CE и 2 CLK на все 16 триггеров - или не так ??? А каждый Slice имеет независимый (от других Slice'ов) управляющие входы CE, CLK и т.п.
5. "Касаемо разводки - структуры очень похожи" только на первый мутный взгляд (с очень из далека и на общую структуру). Разуете глаза и Вы увидите разницу: LAB и CLB достаточно сильно отличаются, поэтому и разводочный ресурс реализован несколько по разному.
6. У Coclon 3 в IOB нет Pulldown - мелочь, а как неприятно... Да и у Spartan-3A очень богатая поддержка всяческих I/O стандартов (в т.ч. и LVPECL (!), TMDS, RSDS и много чего другого). При необходимости, в Spartan-3A парные DDR триггера могут тактироваться 2 разными по природе clock'ами.
Но это уже вопросы Unholly War.