Аннотация
Статья представляет собой архитектурный анализ семейства FPGA Sealion 2000 производства XiST Microelectronics. В статье анализируется структура логических матричных модулей (Logic Array Module, LAM) и составляющих их логических блоков (Logic Unit, LU). Анализ базируется на документации производителя [1, 2], академических обзоров в области архитектур FPGA [3, 4], патентной документации и руководств по библиотекам Lattice Semiconductor [5, 6], а также технических руководств Altera [7, 8]. Для каждого структурного элемента архитектуры формулируется ответ на вопрос: «Каким образом данный компонент реализован в Sealion 2000?» — с указанием прямых ссылок на источники.
В статье показывается и обосновывается, что в составе Logic Unit используется конфигурируемая макроячейка регистра, настраиваемая на одну из восьми функций (четыре типа защёлок и четыре типа триггеров). Спецификация этой макроячейки получена минимизацией таблиц истинности. Предложена схемная реализация на основе структуры Master‑Slave с разнополярным тактированием (рис. 3.38 из [10]), дополненная конфигурационными элементами на базе сложных инвертирующих элементов. Разработана полная Verilog‑модель, верифицирующая предложенное решение.
Ключевые слова — FPGA, Sealion 2000, LAM, LU, защёлка, триггер, мультиплексор, маршрутизация, обратная связь, апериодические автоматы.
1. Введение
1.1. Мотивация
Семейство FPGA Sealion 2000, выпускаемое компанией XiST Microelectronics, построено на энергоэффективном 55‑нм технологическом процессе. Устройства ориентированы на крупносерийные, чувствительные к стоимости применения в беспроводной, проводной, вещательной, промышленной и телекоммуникационной областях [1]. Архитектура следует иерархическому принципу организации, сочетающему логическое ядро, характерное для архитектуры Lattice, с маршрутизационной структурой, напоминающей решения Altera. Такой гибридный подход обеспечивает высокую плотность логики, предсказуемые задержки маршрутизации и гибкие пути обратной связи.
1.2. Проблема и существующие решения
FPGA‑архитектуры различаются по способу организации логических элементов и маршрутизации. Lattice использует PFU (Programmable Function Unit) с встроенным мультиплексором перед регистром [5, 6]; Altera — LE (Logic Element) без такого мультиплексора [7, 8]. Маршрутизация может быть островной (island‑style) [3] или непрерывной (FastTrack) [7]. Sealion 2000, согласно документации [1, 2], занимает промежуточное положение.
В документации Sealion 2000 [2] и Lattice [6] приведены таблицы истинности для значительного числа примитивов. Среди них выделяются две группы последовательных примитивов: защёлки (latches) с пятью входами регистра (D0, D1, SD, CK, CD/PD) — четыре варианта, и триггеры (flip‑flops) с шестью входами регистра (D0, D1, SD, SP, CK, CD/PD) — четыре варианта. Физическая реализация восьми разных типов защёлок и триггеров в одном LU была бы неоправданно затратной. Поэтому в настоящей статье обосновывается, что в LU используется конфигурируемая макроячейка регистра, настраиваемая конфигурационными битами на одну из восьми функций.
1.3. Научный вклад
Настоящая статья вносит следующий вклад:
Выявлена и документально подтверждена гибридная природа Sealion 2000: логическое ядро Lattice, маршрутизационная структура Altera.
Показано, что в LU используется конфигурируемая макроячейка регистра, настраиваемая на четыре функции защёлки (latch) и четыре функции триггера (flip‑flop).
Предложена спецификация этой макроячейки в виде булевых функций, полученных минимизацией таблиц истинности.
Разработана схемная реализация на основе классической структуры Master‑Slave с разнополярным тактированием (рис. 3.38 из [10], известной также как «D‑триггер без гашения» [11]) с добавлением мультиплексоров и логических элементов для конфигурации.
Дана полная таблица настройки для каждой из восьми функций.
Предложена Verilog‑модель, верифицирующая корректность разработанного решения.
1.4. Организация статьи
Статья организована следующим образом. Раздел 2 описывает иерархию архитектурных блоков. Раздел 3 охватывает глобальную маршрутизацию вне LAM. Раздел 4 детализирует локальную маршрутизацию внутри LAM. Раздел 5 представляет логический элемент на вентильном и транзисторном уровнях. Раздел 6 рассматривает пути обратной связи. Раздел 7 содержит вывод булевых функций для 5‑входовых защёлок и для 6‑входовых триггеров, а также связь этих функций с конфигурационными битами макроячейки. Раздел 8 посвящён конфигурируемой макроячейке регистра — её спецификации, схемной реализации и Verilog‑модели. Раздел 9 позиционирует устройство относительно аналогов Lattice. Раздел 10 содержит заключение.
2. Иерархия архитектурных блоков
Архитектура Sealion 2000 построена по строгому иерархическому принципу. Наивысшим уровнем иерархии, рассматриваемым в данном анализе, является логический матричный модуль (LAM), содержащий восемь логических элементов (LU). Каждый LU включает четырёхвходовую таблицу поиска (LUT4) и программируемый регистр/защёлку со встроенным мультиплексором.
Структурная схема иерархии имеет следующий вид:
Кристалл (например, SL2E-2V) └── Логическая матрица (массив LAM, расположенных по строкам и столбцам) └── LAM (Logic Array Module) = 8 × LU ├── LU_0 (LUT4 + регистр/защёлка с MUX) ├── LU_1 ├── ... ├── LU_7 ├── Локальные межсоединения (Local Interconnect) ├── 12 выделенных управляющих сигналов (4 CLK, 4 CE, 4 RST/SET) ├── Цепь переноса (Carry Chain, вход/выход) └── Каскадная цепь (Cascade Chain) — наличие не подтверждено документацией
Документация производителя [1, раздел 2.2.1] содержит прямое указание: «Входы логического массива управляются межсоединениями столбцов и строк… Выходы логических элементов напрямую управляют межсоединениями столбцов и строк». В разделе 2.2 того же источника указано: «Каждый логический массив включает 8 логических элементов». Руководство по библиотеке примитивов [2] описывает примитивы xsLAT_L1* и xsDFF2_*, наличие которых подтверждает присутствие мультиплексора 2:1 перед регистром. Каскадная цепь, которая в архитектуре Altera FLEX 10K используется для реализации функций с широким веером, в документации Sealion 2000 не упоминается и, по-видимому, отсутствует.
3. Глобальная маршрутизация вне LAM
3.1. Топология: непрерывные каналы строк и столбцов
Sealion 2000 использует топологию непрерывных каналов строк и столбцов, аналогичную архитектуре Altera FastTrack/MultiTrack Interconnect. Данное решение отличается от сегментированной островной топологии с раздельными коммутационными блоками (Connection Block и Switch Block), описанной в обзоре [3, раздел 5.1.3] для классических островных FPGA.
Ключевые характеристики данной топологии:
Горизонтальные каналы (Row) проходят через всю ширину кристалла непрерывно, от левого края до правого.
Вертикальные каналы (Column) проходят через всю высоту кристалла непрерывно, от верхнего края до нижнего.
В каждой точке пересечения горизонтального и вертикального каналов размещается коммутационная матрица (Switch Matrix). Это программируемая структура из транзисторных ключей (PIP — Programmable Interconnect Points), которая позволяет соединить горизонтальный провод с вертикальным, пропустить сигнал сквозь перекрестие без коммутации (pass-through) или развернуть направление сигнала (в однонаправленной архитектуре — подключить выход буфера одного сегмента ко входу буфера другого).
Сравнение с архитектурой Altera показывает сходство: в документации Cyclone IV [7, раздел 2.2] указано: «The LAB local interconnect is driven by column and row interconnects and LE outputs in the same LAB». Аналогичное описание содержится в документации MAX 10 [8, раздел 1.1.1]. Таким образом, глобальная маршрутизация Sealion 2000 является архитектурным аналогом топологии Altera, что обеспечивает предсказуемые задержки распространения сигналов.
3.2. Сравнение с островной архитектурой
В обзоре [3, раздел 5.1.3] детально описана островная архитектура, состоящая из трёх структурных элементов:
Блок соединений (Connection Block) — обеспечивает подключение выводов логических блоков к сегментам проводников в прилегающих каналах.
Коммутационный блок (Switch Block) — обеспечивает соединение сегментов проводников между собой в точках пересечения каналов.
Сегменты проводников (Wire Segments) — проводники различной длины (span-1, span-2, span-4, длинные линии).
В Sealion 2000, благодаря топологии непрерывных каналов, блок соединений и коммутационный блок физически объединены в единую структуру — коммутационную матрицу на каждом пересечении. Это соответствует описанию в [3, раздел 5.1.3] структуры, называемой «routing driver block», которая совмещает функции коммутации и усиления сигнала. Таким образом, в Sealion 2000 роль “routing driver block” выполняет коммутационная матрица на каждом перекрестии строк и столбцов.
3.3. Направленность проводников: однодрайверная архитектура
В обзоре [3, раздел 5.2] описаны два подхода к организации проводников:
Многодрайверная архитектура (multi-driver, bidirectional) — несколько логических блоков могут управлять одним проводником через pass-транзисторы. Это требует разрешения конфликтов и добавляет значительную паразитную ёмкость.
Однодрайверная архитектура (single-driver, unidirectional) — каждый проводник имеет ровно один буферный драйвер, и сигнал распространяется строго в одном направлении.
В статье [4, раздел 2] подтверждается: «Наш второй вклад состоит в использовании только однодрайверных межсоединений на основе однонаправленных проводников. Как показано в [9], однодрайверные межсоединения оказывают положительное влияние на улучшение плотности». [9] — это фундаментальная статья Lemieux et al., доказавшая преимущества однодрайверной маршрутизации для современных FPGA.
Sealion 2000 использует однодрайверную однонаправленную маршрутизацию в своих каналах строк и столбцов. Это подтверждается:
Формулировкой [1] о том, что выходы LU «напрямую управляют» каналами, что подразумевает наличие выделенного драйвера на каждом выходе.
Заявленной высокой максимальной частотой работы (до 400 МГц), которая архитектурно достижима только при однодрайверной маршрутизации [3, раздел 5.2].
Тем, что Sealion 2000 является современным чипом (55 нм техпроцесс), и однодрайверная маршрутизация стала доминирующим подходом в большинстве коммерческих FPGA после 2005 года [3, раздел 5.2; 4, раздел 2].
Каждый сегмент провода между двумя соседними LAM в канале строки или столбца имеет ровно один буферный драйвер на одном конце. Сигнал течёт строго в одном направлении. Для изменения направления сигнала маршрутизатор HqFpga использует коммутационную матрицу на перекрестии строки и столбца, где выход буфера одного сегмента подключается ко входу буфера перпендикулярного сегмента.
Преимущества однодрайверной архитектуры (из [3, раздел 5.2]):
уменьшение площади маршрутизации примерно на 20%;
уменьшение задержки на 9–16%.
Однако эффективность однодрайверного подхода наиболее заметна для крупных схем; для малых CPLD-устройств выигрыш может быть менее выраженным.
3.4. Сегментация проводников
В обзоре [3, раздел 5.2] описываются проводники различной длины, присутствующие в каналах маршрутизации:
Короткие проводники (span-1) — соединяют соседние LAM.
Средние проводники (span-2, span-4) — пересекают несколько LAM.
Длинные линии — проходят через весь кристалл или его половину.
В Sealion 2000 каналы строк и столбцов являются непрерывными, но сегментированы буферами на границах LAM. Каждый сегмент между двумя соседними LAM представляет собой один «hop». Коммутация между сегментами происходит в коммутационных матрицах на перекрестиях, что позволяет маршрутизатору HqFpga выбирать оптимальную длину пути: для коротких соединений — один сегмент; для длинных — несколько сегментов, соединённых через коммутационные матрицы без дополнительных буферов (pass-through).
4. Локальная маршрутизация внутри LAM
4.1. Структура локальных межсоединений
Каждый LAM содержит восемь логических элементов. Внутри LAM существует сеть локальных межсоединений (Local Interconnect), которая обеспечивает следующие возможности:
Подключение выходов любого LU ко входам любого другого LU в пределах одного LAM.
Подключение внешних сигналов (из каналов строк и столбцов) ко входам LU.
Подключение выходов LU к каналам строк и столбцов (выход из LAM).
Документация [1, раздел 2.2.1] подтверждает: «Входы логического массива управляются межсоединениями столбцов и строк, а также выходами логических элементов в том же самом логическом массиве». Аналогичные описания содержатся в документации Altera Cyclone IV [7, раздел 2.2] и MAX 10 [8, раздел 1.1.1].
4.2. Разреженная коммутационная матрица
В обзоре [3, раздел 4.3] содержится критически важное наблюдение, напрямую применимое к LAM Sealion 2000:
«Как правило, внутрикластерная маршрутизация в современных LUT-базированных FPGA не является полным кроссбаром. Одно исследование показало, что как минимум половина соединений между входами кластера и входами логических элементов может быть удалена, а также может быть удалено от 50 до 75% соединений обратной связи от выходов логических элементов ко входам логических элементов без влияния на задержку или количество требуемых логических кластеров. Такое разрежение кроссбара приводит к уменьшению площади примерно на 10%».
В статье [4, раздел 3] развивается эта идея, указывая, что полный кроссбар для 8 LU с учётом внешних входов и обратных связей потребовал бы 256×1024 переключателей, что экономически нецелесообразно, и поэтому используется совместная оптимизация блоков соединений и внутрикластерных межсоединений с удалением избыточных связей.
Внутри LAM Sealion 2000 (8 LU) используется разреженная (depopulated) коммутационная матрица, а не полный кроссбар. Это подтверждается:
Физической необходимостью: полный кроссбар для 8 LU с 4 входами LUT + входами MUX (D0, D1, SD) + входами управления (CK, SP, CD/PD) потребовал бы огромного количества транзисторных ключей. Согласно [4, раздел 3], это «очень дорого».
Математическим обоснованием: уравнение Бетца-Роуза [3, раздел 4.3] для Sealion 2000 (
) даёт
внешних входов. Это значительно меньше
, что возможно только при наличии разделения сигналов (signal sharing) и использовании разреженного кроссбара.
Удалением 50–75% связей: согласно [3, раздел 4.3], удаление 50–75% обратных связей и части внешних подключений не влияет на трассируемость, но экономит около 10% площади LAM.
Следствием для маршрутизатора: если HqFpga не находит локального пути внутри LAM (из-за разрежения), он вынужден выводить сигнал наружу LAM в канал строки или столбца и заводить его обратно через другой вход LAM. Это добавляет задержку, но происходит редко.
Структура разреженного кроссбара в Sealion 2000:
Внешние входы LAM (из каналов строк/столбцов, ~18 сигналов) │ ▼ ┌────────────────────────────────────┐ │ Разреженный кроссбар (Local │ │ Interconnect) │ │ │ │ [50-75% связей удалено] │ │ │ │ Входы LU_0: A,B,C,D,D0,D1,SD,... │ │ Входы LU_1: A,B,C,D,D0,D1,SD,... │ │ ... │ │ Входы LU_7: A,B,C,D,D0,D1,SD,... │ └────────────────────────────────────┘ ▲ │ Обратная связь от выходов Q LU_0...LU_7 (также через разреженный кроссбар)
4.3. Двенадцать выделенных локальных управляющих сигналов
Каждый LAM имеет 12 выделенных локальных сигналов управления, физически разведённых отдельными проводниками внутри LAM, минуя общую коммутационную матрицу:
4 тактовых сигнала (CLK);
4 сигнала разрешения тактирования (CE);
4 сигнала сброса/установки (RST/SET).
Источники этих сигналов (по [1]):
Глобальные сети — через выделенные буферы от глобальных тактовых деревьев (16 глобальных часов в Sealion 2000, за исключением младших моделей).
Выходы LU внутри того же LAM — выход любого из 8 LU в LAM может быть направлен на любой из 12 локальных управляющих сигналов. Это позволяет, например, реализовать делитель частоты внутри LAM и использовать его для тактирования остальных LU в том же LAM, не затрагивая глобальную маршрутизацию.
Каналы строк и столбцов — сигналы из глобальной матрицы могут заходить на локальные управляющие входы LAM.
Сравнение с Altera:
Cyclone IV [7, раздел 2.2.2]: «Каждый LAB содержит выделенную логику для управления управляющими сигналами своих LE. Управляющие сигналы включают: два тактовых сигнала, два сигнала разрешения тактирования, два сигнала асинхронного сброса, один сигнал синхронного сброса, один сигнал синхронной загрузки» (всего 8 сигналов).
MAX 10 [8, раздел 1.1.2]: аналогично.
Вывод: 12 сигналов в Sealion 2000 — это уникальная особенность, обеспечивающая повышенную гибкость управления. Архитектура напрямую соответствует описанию в [3, раздел 4.3], где упоминается, что в кластерах существуют выделенные быстрые пути для тактовых сигналов и сигналов управления, физически отделённые от общей логики маршрутизации.
4.4. Цепь переноса
Внутри LAM существует выделенная цепь переноса (Carry Chain), которая:
Соединяет LU_0 → LU_1 → LU_2 → … → LU_7 последовательно.
Обходит LUT и локальные межсоединения. Выход Carry-Out одного LU напрямую подключен ко входу Carry-In следующего LU.
Обеспечивает задержку переноса порядка 0,2–0,5 нс на один LU.
Имеет вход Carry-In на LU_0 (от предыдущего LAM или от константы VHI/VLO) и выход Carry-Out на LU_7 (к следующему LAM или к локальным межсоединениям).
В обзоре [3, раздел 4.8.1] подтверждается: «Современные FPGA-архитектуры включают явные схемы сложения/вычитания внутри каждого логического блока, чтобы сделать сумматоры меньше и быстрее».
Сравнение с Altera:
Cyclone IV [7, раздел 1.1]: «Цепи переноса LE — цепи переноса, последовательно распространяемые через каждый LE внутри LAB».
MAX 10 [8, раздел 1.1]: аналогично.
4.5. Каскадная цепь
Каскадная цепь (Cascade Chain) позволила бы последовательно объединять выходы LUT для реализации функций с широким веером (wide fan-in), используя логическую операцию И или ИЛИ между промежуточными результатами, и обходила бы локальные межсоединения для уменьшения задержки. Однако в документации Sealion 2000 (ни в [1], ни в [2]) наличие каскадной цепи не подтверждено. В библиотеке примитивов отсутствует аналог каскадной цепи. Вероятно, каскадная цепь в Sealion 2000 отсутствует, что сближает его с архитектурой Lattice (где каскадные цепи обычно не применяются) в отличие от архитектуры Altera FLEX 10K.
5. Логический блок: уровень логики и вентильных решений
5.1. Входы LU
На основе документации [1] и [2], каждый логический блок имеет следующие физические входы:
Группа | Входы | Количество | Источник сигналов |
|---|---|---|---|
Данные для LUT4 | A, B, C, D | 4 | Локальные межсоединения LAM |
Данные для регистра | D0, D1 | 2 | Встроенный MUX |
Селектор MUX | SD | 1 | Локальные межсоединения |
Тактирование | CK | 1 | Один из 4 локальных CLK LAM |
Разрешение | SP (CE) | 1 | Один из 4 локальных CE LAM |
Сброс/установка | CD или PD | 1 | Один из 4 локальных RST/SET LAM |
Перенос | Carry-In | 1 | От Carry-Out предыдущего LU |
Общее количество физических входов LU составляет 11 (без учёта глобального сигнала GSR). Cascade-In отсутствует, так как каскадная цепь не подтверждена документацией.
5.2. Выходы LU
Каждый LU имеет два независимых выхода (согласно классической архитектуре, описанной в [3, раздел 4.3]):
Выход в локальные межсоединения — может управляться либо выходом LUT4 (Z), либо выходом регистра (Q).
Выход в каналы строк и столбцов (FastTrack) — может управляться независимо. Например, LUT4 управляет локальными межсоединениями, а регистр управляет каналами строк и столбцов, или наоборот.
В обзоре [3, раздел 4.3] данная особенность описывается как упаковка регистров (Register Packing): «LUT и регистр в LE могут использоваться независимо; эта возможность известна как упаковка регистров».
Сравнение с Altera:
Cyclone IV [7, раздел 1.1.3.1]: «Каждый LE имеет три общих маршрутизируемых выхода: два выхода LE управляют столбцом или строкой и соединениями прямого связывания. Один выход LE управляет ресурсами локальных межсоединений».
MAX 10 [8, раздел 1.1.3.1]: аналогично.
Дополнительные выходы: Carry-Out (к следующему LU). Cascade-Out отсутствует.
5.3. Четырёхвходовая таблица поиска
Четырёхвходовая таблица поиска (LUT4) реализует произвольную булеву функцию от четырёх переменных. Она содержит 16 бит конфигурационной SRAM-памяти. Входы A, B, C, D поступают из локальных межсоединений. Выход Z может быть направлен:
На вход D0 или D1 встроенного MUX (внутренняя обратная связь).
На выход LU в локальные межсоединения.
На выход LU в каналы строк и столбцов.
5.4. Встроенный мультиплексор 2:1
Данный элемент является ключевой архитектурной особенностью, отличающей Sealion 2000 (и Lattice) от Altera.
Внутри LU, между LUT4 и регистром, аппаратно реализован мультиплексор 2:1:
D0 ──┐ ├──[ MUX 2:1 ]──→ D (вход регистра) D1 ──┘ ↑ │ SD
D0 может подключаться к выходу LUT4 (Z) или к внешнему сигналу из локальных межсоединений.
D1 может подключаться к внешнему сигналу из локальных межсоединений.
SD выполняет функцию селектора: при SD=0 на вход регистра подаётся D0, при SD=1 — D1.
Физическая реализация (предположительно): мультиплексор реализован на передающих элементах (transmission gates) или pass-транзисторах, управляемых конфигурационными SRAM-ячейками. Это не LUT, а выделенная аппаратная схема, которая не потребляет ресурсы LUT4, добавляет минимальную задержку (около 50–100 пс) и управляется отдельным конфигурационным битом.
Важность данного элемента заключается в том, что в терминологии [3, раздел 4.9] это называется аппаратной неоднородностью структуры (soft fabric heterogeneity) — наличие специализированной логики (MUX) внутри стандартного логического блока, которая не является LUT. Это позволяет реализовывать функции выбора данных без расходования четырёхвходового LUT, освобождая его для другой логики.
Критическое отличие от Altera:
В архитектуре Altera (Cyclone IV / MAX 10) встроенный мультиплексор перед регистром отсутствует — выход LUT подаётся непосредственно на вход D. Если требуется мультиплексор, синтезатор расходует ресурс LUT4.
В Sealion 2000 (и Lattice) перед регистром расположен аппаратный мультиплексор 2:1 (входы D0, D1, селектор SD). Выход
поступает на регистр, реализуя выбор данных без дополнительных затрат ресурсов LUT.
5.5. Программируемый регистр/защёлка
После мультиплексора 2:1 сигнал D поступает на программируемый макроблок памяти (Configurable Register Macrocell). Это единый физический блок, который конфигурационными битами SRAM может быть переключён в один из двух режимов:
Режим 1: D-триггер (синхронный, фронтальный)
Триггер срабатывает по спаду тактового сигнала CK (1→0), что соответствует структуре Master-Slave с разнополярным тактированием, описанной в разделе 8.2 (Master прозрачен при CK=1, Slave прозрачен при CK=0). Внутренние конфигурационные мультиплексоры формируют структуру master-slave (два каскада защёлок, тактируемых в противофазе). Вход SP (Clock Enable) стробирует тактовый сигнал: при SP=0 фронт CK игнорируется, состояние сохраняется. Вход CD (Clear) или PD (Preset) является асинхронным и имеет абсолютный приоритет. Булева функция (для варианта с асинхронным Preset) требует описания двух ступеней; точные уравнения приведены в разделе 8.
Режим 2: Прозрачная защёлка (уровнечувствительная)
Прозрачна при высоком уровне CK (CK=1). Хранит состояние при низком уровне CK (CK=0). Внутри макроблока конфигурационные мультиплексоры отключают схему детектора фронта и делают путь данных сквозным (transparent) при CK=1. Вход SP в этом режиме аппаратно отключается (bypass-ится), так как роль разрешения выполняет сам уровень CK.
Физическая структура макроблока основана на патенте Lattice Semiconductor [5], в котором детально описывается транзисторно-вентильная реализация программируемого регистра. Схема регистра включает:
Базовый D-триггер — принимает вход данных и тактовый вход, генерирует выход.
Мультиплексор данных — выбирает между внешними данными и выходом триггера в зависимости от сигнала разрешения тактирования. Если разрешение активно, на вход базового триггера подаются внешние данные; если неактивно, подаётся выход триггера, что заставляет его хранить текущее состояние.
Программируемый инвертор — позволяет настроить регистр как T-триггер (делитель частоты на 2). Примечание: в предлагаемой модели конфигурируемой макроячейки режим T-триггера не реализован, так как он не используется в примитивах Sealion 2000.
Мультиплексоры сброса/установки — позволяют подать на асинхронные входы базового триггера локальные сигналы от матрицы И (Product Terms).
Логические элементы ИЛИ — объединяют локальные сигналы сброса/установки с глобальным сигналом Global Set/Reset.
Ключевые архитектурные выводы из патента [5]:
Реализация разрешения тактирования (SP) через обратную связь: мультиплексор выбирает, что подать на вход базового триггера. При SP=1 подаются внешние данные; при SP=0 подаётся выход Q, и триггер «записывает» своё же текущее состояние, эмулируя хранение.
Реализация сброса/установки (CD/PD) через логические элементы ИЛИ: асинхронные сигналы объединяются с глобальным сигналом GSR и подаются напрямую на асинхронные входы базового ядра, обеспечивая абсолютный приоритет.
Разделение «ядра» и «конфигурации»: ядро всегда остаётся простым D-триггером; конфигурация (мультиплексоры) управляется конфигурационными битами и формирует порты CE, T, D, выбирая, какой сигнал (внешние данные, обратная связь Q или инвертированная обратная связь) пойдёт на вход ядра.
Маршрутизация сброса и установки: сигналы сброса и установки проходят через мультиплексоры и логические элементы ИЛИ. Это позволяет гибко настраивать, будет ли сброс/установка асинхронными (подаваться напрямую на асинхронные входы базового триггера) или синхронными (формироваться как комбинационная логика на входе данных). Более того, глобальный сигнал может быть направлен либо на сброс, либо на установку, что позволяет пользователю аппаратно выбрать начальное состояние регистра при включении питания.
Патент [5] прямо утверждает, что регистр может работать либо как триггер, либо как защёлка, в зависимости от конфигурации пользователя, что подтверждается также зависимыми пунктами формулы изобретения. Таким образом, режим защёлки реализуется путём отключения детектора фронта и перевода структуры master-slave в прозрачный режим.
Физическая структура макроблока (на уровне элементов):
┌──────────────────────────────────────┐ D ──────────┤ [Master Latch] → [Slave Latch] ├──── Q │ ↑ ↑ │ CK ─────────┤ [Edge Detector / [Inverter] │ │ Level Gate] (¬CK to Slave) │ SP ─────────┤ [Clock Gating AND] │ │ ↑ │ CD ─────────┤ [Async Clear NOR] ──→ оба latch │ PD ─────────┤ [Async Preset OR] ──→ оба latch │ │ │ Config ─────┤ [SRAM bits: Mode Select] │ Bits │ (0 = Latch, 1 = Flip-Flop) │ └──────────────────────────────────────┘
Конфигурационные биты SRAM управляют мультиплексорами, которые:
Выбирают, подавать ли CK через детектор фронта (режим триггера) или напрямую на разрешение Master-защёлки (режим защёлки).
Включают или отключают стробирование SP.
Выбирают полярность CD/PD (активный высокий или активный низкий).
Определяют начальное состояние при GSR (Global Set/Reset).
5.6. Глобальный сигнал GSR
Помимо локальных входов CD/PD, каждый регистр в LU имеет скрытый вход GSR (Global Set/Reset), который:
Физически подключён к глобальной сети GSR кристалла.
Активен только во время инициализации после конфигурации (Power-On Reset).
Принудительно устанавливает Q=0 (GSR Clear) или Q=1 (GSR Preset) в зависимости от конфигурационного бита, записанного в SRAM данного LU.
В нормальном рабочем режиме GSR=0 (неактивен) и не влияет на булеву функцию.
Не является портом RTL-примитива (в Verilog задаётся атрибутом
.GSR("ENABLED")или.GSR("DISABLED")).
Подтверждение из патента [5]: демультиплексор направляет глобальный сигнал либо в цепь сброса, либо в цепь установки, что позволяет пользователю аппаратно выбрать начальное состояние регистра при включении питания.
6. Обратная связь
6.1. Документальное подтверждение
Согласно [1, раздел 2.2.1]:
«Входы логического массива управляются межсоединениями столбцов и строк, а также выходами логических элементов в том же самом логическом массиве».
Это прямое и недвусмысленное подтверждение наличия путей обратной связи внутри LAM: выходы LU могут быть направлены обратно на входы других LU (или того же LU) внутри того же LAM без выхода на глобальную маршрутизацию.
6.2. Подтверждение из академических источников
В обзоре [3, раздел 4.3] обратные связи описываются как одно из ключевых преимуществ кластеризации:
«От 50 до 75% соединений обратной связи от выходов логических элементов ко входам логических элементов может быть удалено без влияния на задержку или количество требуемых логических кластеров».
Это означает, что соединения обратной связи физически существуют внутри кластера, но их количество сокращено (разрешено) для экономии площади.
В статье [4, раздел 3] описывается оптимизация кроссбара обратных связей:
«Мы оптимизируем оба кроссбара: (1) соединение внешних сигналов со входами логических блоков, (2) соединение обратных связей со входами логических блоков».
Это показывает, что кроссбар обратных связей является отдельной, специально оптимизируемой структурой внутри кластера.
6.3. Реализация в Sealion 2000
В Sealion 2000 пути обратной связи реализованы на трёх уровнях:
Уровень 1: Внутренняя обратная связь внутри LU (выделенный путь)
Выход Q регистра может быть направлен на вход мультиплексора разрешения тактирования для реализации функции удержания состояния (когда SP=0).
Выход Q также может быть направлен на входы D0 или D1 встроенного мультиплексора 2:1 того же LU для реализации счётчиков, T-триггеров и конечных автоматов без задержки на LUT.
Этот путь является выделенным и не проходит через локальные межсоединения LAM.
Уровень 2: Локальная обратная связь внутри LAM (через разреженный кроссбар)
Выход Q (или Z LUT) любого LU может быть направлен через локальные межсоединения на входы LUT (A, B, C, D) или MUX (D0, D1, SD) другого LU внутри того же LAM.
Этот путь проходит через разреженный кроссбар, где 50–75% возможных связей обратной связи удалены [3, раздел 4.3].
Это критически важно для реализации:
счётчиков: Q → Carry-In + LUT → D следующего LU;
конечных автоматов: Q → LUT (логика переходов) → D;
аккумуляторов: Q → LUT (сложение) → D;
фильтров: Q → LUT (умножение/сложение) → D следующего LU.
Уровень 3: Глобальная обратная связь (через каналы строк и столбцов)
Если локальная обратная связь невозможна (из-за разрежения), выход LU выводится в канал строки/столбца и заводится обратно через другой вход LAM.
Этот путь добавляет задержку (прохождение через коммутационные матрицы и буферы), но используется редко.
Схема путей обратной связи в Sealion 2000:
LU[n].Q ──┬──→ [Внутренний путь] ──→ LU[n].MUX_разрешения_такта ├──→ [Внутренний путь] ──→ LU[n].MUX_2:1 (D0 или D1) ├──→ [Разреженный кроссбар] ──→ LU[m].LUT4 (A,B,C,D) ├──→ [Разреженный кроссбар] ──→ LU[m].MUX_2:1 (D0,D1) └──→ [Выходной драйвер] ──→ Канал строки/столбца ──→ [Коммутационная матрица] ──→ Вход LAM ──→ Разреженный кроссбар ──→ LU[k].LUT4
Сравнение с Altera:
Cyclone IV [7, раздел 1.1.3.1]: «Режим обратной связи регистра позволяет выходу регистра подаваться обратно на LUT того же LE».
MAX 10 [8, раздел 1.1.3.1]: аналогично.
Вывод: в Altera выход Q не имеет жёсткой связи с LUT внутри LE. Обратная связь осуществляется только через локальную шину LAB. В Sealion 2000 архитектура аналогична Altera в том, что обратная связь для LUT осуществляется через локальные межсоединения кластера (LAM/PFU); однако наличие встроенного мультиплексора позволяет использовать Q также как прямой вход D0 или D1 для самого регистра этого же LU.
7. Булевы функции примитивов и их конфигурация в макроячейке
В документации Sealion 2000 [2] и Lattice [6] приведены таблицы истинности для значительного числа примитивов. Среди них выделяются две группы последовательных примитивов: защёлки (latches) с пятью входами регистра (D0, D1, SD, CK, CD/PD) — четыре варианта, и триггеры (flip‑flops) с шестью входами регистра (D0, D1, SD, SP, CK, CD/PD) — четыре варианта. Таблицы истинности взяты из [2, стр. 75–82] и [6].
В русскоязычной литературе [10, 11] устоялись следующие термины: защёлка (latch) — уровнечувствительное устройство, которое реагирует на уровень управляющего сигнала; триггер (flip-flop) — фронтальное устройство, которое реагирует на фронт (перепад) управляющего сигнала.
Для четырёх типов защёлок и четырёх типов триггеров были минимизированы таблицы истинности. Полученные булевы функции приведены ниже. Здесь .
Важно: Все восемь примитивов реализованы с использованием единой конфигурируемой макроячейки, описанной в разделе 8. В таблицах ниже для каждого примитива указаны значения конфигурационных битов, которые необходимо установить для получения соответствующей функции.
7.1. Защёлки с 5 входами (чувствительны к уровню CK)
Для переключения макроячейки в режим защёлки необходимо установить бит K_MODE = 1. При этом выход макроячейки снимается с Master-защёлки (Q_M), а Slave-защёлка блокируется.
Таблица 1. Защёлки с 5 входами
Примитив (Lattice / Sealion) | Функция | Булева функция | Конфигурация макроячейки |
|---|---|---|---|
FL1S1B / xsLAT_L1P1 | Асинхронная установка (PD) |
| |
FL1S1D / xsLAT_L1C1 | Асинхронный сброс (CD) |
| |
FL1S1I / xsLAT_L1R1 | Синхронный сброс (CD) |
| |
FL1S1J / xsLAT_L1S1 | Синхронная установка (PD) |
|
7.2. Триггеры с 6 входами (чувствительны к фронту CK)
Для переключения макроячейки в режим триггера необходимо установить бит K_MODE = 0. При этом выход макроячейки снимается с Slave-защёлки (Q_S), а структура Master-Slave становится активной.
Таблица 2. Триггеры с 6 входами
Примитив (Lattice / Sealion) | Функция | Булева функция | Конфигурация макроячейки |
|---|---|---|---|
FL1P3BX / xsDFF2_K1P1E1 | Асинхронная установка (PD) |
| |
FL1P3DX / xsDFF2_K1C1E1 | Асинхронный сброс (CD) |
| |
FL1P3IY / xsDFF2_K1R1E1 | Синхронный сброс (CD) |
| |
FL1P3JY / xsDFF2_K1S1E1 | Синхронная установка (PD) |
|
Примечание к Таблице 2: Уравнения описывают поведение триггера на фронте тактового сигнала. Структура Master-Slave, описанная в разделе 8, обеспечивает, что выход изменяется только на фронте (переход CK из 1 в 0), а не в течение всего периода CK=1. Сигнал GSR, имеющий абсолютный приоритет, в данных таблицах не показан, так как он действует на уровне всей микросхемы и описан в разделе 5.6.
Связь с реализацией: Уравнения Таблицы 2 являются характеристическими уравнениями фронтальных триггеров. Они описывают поведение триггера на фронте такта. Структура Master-Slave с разнополярным тактированием, описанная в разделе 8.2, обеспечивает, что выход изменяется только на фронте такта, что соответствует этим уравнениям. Свёртывание уравнений и
из раздел 8.6 в характеристическое уравнение
показано в разделе 8.6 после шагов.
8. Конфигурируемая макроячейка регистра
8.1. Обоснование необходимости
В документации Sealion 2000 [2] и Lattice [6] приведено большое количество примитивов, которые делятся на две группы — комбинационные и последовательные. Среди последовательных примитивов выделяются 5‑входовые защёлки (4 варианта) и 6‑входовые триггеры (4 варианта). Физическая реализация восьми разных типов защёлок и триггеров в одном LU была бы неоправданно затратной. Поэтому в настоящей статье обосновывается, что в LU используется конфигурируемая макроячейка регистра (configurable register macrocell), которая настраивается конфигурационными битами на одну из восьми функций. Это экономит площадь и упрощает маршрутизацию. Предлагаемая модель покрывает четыре типа защёлок (таблица 1) и четыре типа триггеров, реализованных через Master‑Slave структуру. Режим T-триггера, упомянутый в патенте [5], является дополнительной опцией, не реализованной в данной модели, так как он не используется в примитивах Sealion 2000.
8.2. Схема-прототип: Master-Slave с разнополярным тактированием
За основу взята схема Master‑Slave с разнополярным тактированием (рис. 3.38 из [10]), известная также как «D‑триггер без гашения» [11]. В этой схеме:
Master (
) прозрачен при CK=1.
Slave (
) прозрачен при CK=0.
Такая структура свободна от критических гонок и обеспечивает надёжное переключение [10, раздел 3.3.3]. Аналогичная схема описана также в книге Варшавского [11] в контексте апериодических автоматов. Данная структура обеспечивает срабатывание триггера по спаду тактового сигнала (1→0), что соответствует описанию в разделе 5.5.
Важно: Структура Master-Slave с разнополярным тактированием обеспечивает, что выход триггера изменяется только на фронте тактового сигнала (переход CK из 1 в 0). Это соответствует характеристическим уравнениям Таблицы 2, которые описывают поведение на фронте такта.
8.3. Модификация для получения универсальной макроячейки
К схеме рис. 3.38 из [10] необходимо добавить следующие элементы, реализованные на базе сложных инвертирующих элементов (AOI/OAI):
Входной мультиплексор 2:1 (D0, D1, SD) перед входом Master‑защёлки.
Мультиплексор для SP — для переключения между прозрачным режимом (защёлка) и режимом удержания (триггер). Обратная связь для CE в режиме триггера берётся с выхода Master-защёлки, а не Slave, чтобы избежать длинной петли.
Мультиплексор для синхронного сброса/установки (CD/PD) на потоке данных, управляемый битом
.
Выходной мультиплексор для выбора между Master и Slave (
).
Логическое объединение сигнала GSR с локальными сигналами CD/PD — выполняется на базе сложных инвертирующих элементов. Функция ИЛИ реализуется через элемент AOI22 с последующей инверсией: (S = \overline{\overline{A \cdot K_A + B \cdot K_B}}), где AOI22 даёт инверсный выход, а инвертор восстанавливает прямой сигнал. Это соответствует требованию использования только сложных инвертирующих элементов и одного инвертора.
Все добавленные элементы построены на сложных инвертирующих элементах (AOI, OAI) и инверторах, что соответствует современной КМОП‑практике.
8.4. Конфигурационные биты и обработка запрещённой комбинации
: 1 = режим защёлки (выход с Master), 0 = режим триггера (выход с Slave, Master‑Slave активен).
: 1 = сигнал PD является асинхронным (подаётся на вход установки), 0 = PD не используется асинхронно.
: 1 = сигнал CD является асинхронным (подаётся на вход сброса), 0 = CD не используется асинхронно.
: 0 = синхронный сброс (используется CD), 1 = синхронная установка (используется PD). Активен только при
и
.
: 1 = GSR действует как установка (Q→1), 0 = GSR действует как сброс (Q→0).
Обработка запрещённой комбинации .
Комбинация и
является запрещённой и не возникает в реальных примитивах Sealion 2000 и Lattice. Однако в физическом RS-триггере на элементах ИЛИ-НЕ при одновременной подаче
S=1, R=1 оба выхода становятся равными 1 (это следует из уравнения ). В данной структурной модели мы сохраняем это поведение: при
выходы макроячейки устанавливаются в
Q = 1, Q_bar = 1. Это согласуется с эталонными уравнениями раздела 8.6 и не требует использования неопределённого состояния 1'bx, которое не поддерживается в синтезируемых или структурных Verilog-моделях (например, в Workcraft). Таким образом, модель корректно отражает физику даже в недопустимом режиме, что важно для симуляции и верификации.
8.5. Настройка на каждую из восьми функций
Таблица 3. Конфигурация макроячейки для каждого примитива
№ | Примитив | Выход | Поведение | ||||
|---|---|---|---|---|---|---|---|
1 | xsLAT_L1P1 | 1 | 1 | 0 | — | Прозрачна при CK=1. PD=1 → Q=1 | |
2 | xsLAT_L1C1 | 1 | 0 | 1 | — | Прозрачна при CK=1. CD=1 → Q=0 | |
3 | xsLAT_L1R1 | 1 | 0 | 0 | 0 | Синхронный сброс: CK=1, CD=1 → Q=0 | |
4 | xsLAT_L1S1 | 1 | 0 | 0 | 1 | Синхронная установка: CK=1, PD=1 → Q=1 | |
5 | xsDFF2_K1P1E1 | 0 | 1 | 0 | — | Фронт CK (M‑S). PD=1 → Q=1 | |
6 | xsDFF2_K1C1E1 | 0 | 0 | 1 | — | Фронт CK (M‑S). CD=1 → Q=0 | |
7 | xsDFF2_K1R1E1 | 0 | 0 | 0 | 0 | Фронт CK (M‑S). Синхронный сброс | |
8 | xsDFF2_K1S1E1 | 0 | 0 | 0 | 1 | Фронт CK (M‑S). Синхронная установка |
Здесь — выход Master‑защёлки (для защёлок),
— выход Slave‑защёлки (для триггеров). При
активна двухступенчатая структура Master‑Slave; при
используется только Master‑защёлка, при этом Slave-защёлка блокируется (сохраняет предыдущее состояние) для экономии мощности. В столбце
символ «—» означает, что данный бит не используется и должен быть запрограммирован в 0 (состояние по умолчанию).
8.6. Математическая модель управляющей логики
Ниже приведены булевы уравнения, описывающие поведение макроячейки. Для наглядности уравнения даны в прямой логике; в физической реализации все логические операции И, ИЛИ и НЕ строятся исключительно на основе сложных инвертирующих элементов (AOI/OAI) с использованием законов де Моргана.
Шаг 1. Мультиплексор данных:
Шаг 2. Базовые эффективные данные (): Для защёлок (
) сигнал SP аппаратно игнорируется; роль разрешения выполняет уровень CK. Для триггеров (
) SP участвует в логике удержания. Обратная связь для CE в режиме триггера берётся с выхода Master-защёлки (
), чтобы избежать длинной петли через Slave.
Шаг 3. Управление синхронными сигналами (): Синхронный сброс/установка имеет приоритет над SP. При активном синхронном управлении
заменяется на 0 или 1 независимо от SP:
Шаг 4. Асинхронный тракт (реализуется через AOI22 с приоритетом GSR): Для обеспечения абсолютного приоритета GSR локальные сигналы блокируются при активном GSR:
Шаг 5. Формирование входов Master‑защёлки (): Входы
и
используются только для асинхронных сигналов. Синхронные сигналы влияют только на поток данных (
):
Шаг 6. Master‑защёлка, Slave‑защёлка и переключение режима : При
(триггер) активируется двухступенчатая структура Master‑Slave. Slave‑защёлка управляется инверсным тактовым сигналом
и копирует состояние Master по спаду CK. Асинхронные сигналы
и
подаются на обе ступени и имеют абсолютный приоритет над тактовой логикой.
подаётся на D-вход Master-защёлки. При
(защёлка) блокируется только тактовая передача от Master к Slave, но асинхронные сигналы остаются активными.
Правильные уравнения:
Выход:
Вывод характеристических уравнений из структуры Master-Slave
Для структуры Master-Slave с разнополярным тактированием (Master прозрачен при CK=1, Slave прозрачен при CK=0) справедливо следующее:
При CK=1: Master прозрачен (следует за
), Slave непрозрачен (хранит предыдущее состояние). Выход
.
При CK=0: Master непрозрачен (хранит захваченное значение), Slave прозрачен (следует за Master). Выход
.
На фронте CK (переход 1→0): Master захватывает
, Slave становится прозрачным и передаёт это значение на выход.
Итог:
на фронте такта, что совпадает с уравнениями Таблицы 2.
Теперь покажем, как конкретные управляющие сигналы влияют на характеристическое уравнение.
Синхронный сброс (строка 7 Таблицы 2): Для синхронного сброса и
. Подставляя в
на фронте такта, получаем:
что совпадает с уравнением в Таблице 2 для синхронного сброса (при даёт 0, при
работает CE).
Синхронная установка (строка 8): и
. Тогда:
что соответствует Таблице 2 для синхронной установки.
Асинхронный сброс (строка 6): (при
). При
выход принудительно устанавливается в 0, независимо от такта. При
триггер работает в обычном режиме:
на фронте такта. Итоговое уравнение:
что совпадает с Таблицей 2 для асинхронного сброса (строка 6).
Асинхронная установка (строка 5): (при
). При
выход устанавливается в 1. При
работает CE. Уравнение:
что соответствует Таблице 2 для асинхронной установки.
Clock Enable (SP): Во всех уравнениях SP управляет выбором между загрузкой данных (при SP=1) и удержанием предыдущего состояния (при SP=0), что отражено множителем
. Это следует из выражения
и последующего свёртывания.
Таким образом, структурная модель из раздела 8 полностью соответствует характеристическим уравнениям Таблицы 2.
8.7. Verilog‑модель
Ниже представлена структурная Verilog‑модель макроячейки, строго следующая ограничениям:
Все объявления
wireвынесены в начало модуля.Используются только инвертирующие элементы и MUX 2:1.
Для симуляции инерционности комбинационных петель добавлены задержки #1 в операторах assign. Провода объявлены без задержек.
module Universal_Sequential_Cell ( D0, D1, SD, CK, SP, PD, CD, K_MODE, K_ASYNC_PD, K_ASYNC_CD, K_SYNC_SEL, GSR, K_GSR_SEL, Q, Q_bar ); input D0, D1, SD, CK, SP, PD, CD; input K_MODE, K_ASYNC_PD, K_ASYNC_CD, K_SYNC_SEL, GSR, K_GSR_SEL; output Q, Q_bar; // -------------------- All internal wire declarations -------------------- // Explicit inversions (ONLY for NAND/AOI inputs that cannot have bubbles) wire nGSR, nK_GSR_SEL; wire nK_SYNC_SEL; wire nR_async; wire nD_eff_mod; wire nQ_master, nQ_slave; wire nQ, nQ_bar; // Internal logic wires wire M; wire D_eff_base, D_eff_mod; wire S_async, R_async; wire Q_master, Q_slave; wire mux_sp_out; wire mux_ck_master; wire mux_ck_slave_inner, mux_ck_slave_outer; wire Q, Q_bar; wire nand1_S, nand2_S; wire nand1_R, nand2_R; wire nand_sync; // -------------------- Explicit inversions (Strictly necessary for non-MUX gates) -------------------- assign #1 nGSR = ~GSR; assign #1 nK_GSR_SEL = ~K_GSR_SEL; assign #1 nK_SYNC_SEL = ~K_SYNC_SEL; // -------------------- Data multiplexer (Atomic 2:1 MUX) -------------------- // Inversion of SD is handled INTERNALLY by the atomic MUX structure assign #1 M = (~SD & D0) | (SD & D1); // -------------------- Asynchronous path (Strictly Inverting NAND logic) -------------------- assign #1 nand1_S = ~(PD & K_ASYNC_PD & nGSR); // 3-input NAND assign #1 nand2_S = ~(GSR & K_GSR_SEL); // 2-input NAND assign #1 S_async = ~(nand1_S & nand2_S); // 2-input NAND (De Morgan OR) assign #1 nand1_R = ~(CD & K_ASYNC_CD & nGSR); // 3-input NAND assign #1 nand2_R = ~(GSR & nK_GSR_SEL); // 2-input NAND assign #1 R_async = ~(nand1_R & nand2_R); // 2-input NAND (De Morgan OR) assign #1 nR_async = ~R_async; // Explicit INV for AOI21 inputs // -------------------- MUX for SP (CE) (Atomic 2:1 MUX) -------------------- assign #1 mux_sp_out = (SP & M) | (~SP & Q_master); // -------------------- MUX for K_MODE (base data) (Atomic 2:1 MUX) -------------------- assign #1 D_eff_base = (K_MODE & M) | (~K_MODE & mux_sp_out); // -------------------- Sync Modulation (4-input AOI22 priority) -------------------- // nand_sync = ~(~K_SYNC_SEL & CD) = K_SYNC_SEL | ~CD assign #1 nand_sync = ~(nK_SYNC_SEL & CD); // 2-input NAND // 4-input AOI22 gate assign #1 nD_eff_mod = ~( (K_SYNC_SEL & PD) | (D_eff_base & nand_sync) ); assign #1 D_eff_mod = ~nD_eff_mod; // Explicit INV to restore true signal // -------------------- MUX for CK (Master clock) (Atomic 2:1 MUX) -------------------- assign #1 mux_ck_master = (CK & D_eff_mod) | (~CK & Q_master); // -------------------- Master latch (3-input AOI21 + INV) -------------------- assign #1 nQ_master = ~( (nR_async & mux_ck_master) | S_async ); assign #1 Q_master = ~nQ_master; // -------------------- Slave clock MUXes (Atomic 2:1 MUX) -------------------- assign #1 mux_ck_slave_inner = (~CK & Q_master) | (CK & Q_slave); assign #1 mux_ck_slave_outer = (~K_MODE & mux_ck_slave_inner) | (K_MODE & Q_slave); // -------------------- Slave latch (3-input AOI21 + INV) -------------------- assign #1 nQ_slave = ~( (nR_async & mux_ck_slave_outer) | S_async ); assign #1 Q_slave = ~nQ_slave; // -------------------- Output MUX (Q) (Atomic 2:1 MUX) -------------------- assign #1 Q = (~K_MODE & Q_slave) | (K_MODE & Q_master); // -------------------- Output Q_bar (3-input AOI21 + INV) -------------------- assign #1 nQ = ~Q; assign #1 nQ_bar = ~( (S_async & R_async) | nQ ); assign #1 Q_bar = ~nQ_bar; endmodule
9. Позиционирование на рынке: сравнение с Lattice
Таблица 4. Полное соответствие (1-к-1)
Модель Sealion 2000 | Тип | Аналог Lattice | Ключевые совпадения |
|---|---|---|---|
SL2-25E | FPGA (SRAM) | Lattice ECP5-25 | ~25K LE; 32 DSP (18×18); PLL+DLL; EBR (9K/18K/36K) |
SL2-12E | FPGA (SRAM) | Lattice ECP3-17 | ~12K LE; 20 DSP (18×18); PLL+DLL; EBR (9K/18K) |
SL2E-7V | CPLD (Flash) | MachXO3L-6900 | ~6.8K LE; Flash; EBR (8K/9K); 1 PLL |
Таблица 5. Уникальные преимущества Sealion 2000
Модель | Тип | Уникальная особенность |
|---|---|---|
SL2E-5E | CPLD (Flash) | Аппаратные DSP во Flash — 16 DSP (18×18). (У Lattice MachXO DSP отсутствуют). |
SL2E-15V | CPLD (Flash) | Плотность + АЦП — 15K LE + АЦП. (У Lattice АЦП только в MachXO3L, но там максимум 6.9K LE). |
SL2S / SL2D | FPGA (SiP) | Ко-пакованная память (SiP) — SDRAM/DDR2 в корпусе. (У Lattice только «голый» кристалл). |
Все модели | – | 12 управляющих сигналов на LAM — больше, чем у Altera (8) и Lattice (4–8). |
Таблица 6. Количество глобальных тактовых сигналов
Модель | Глобальные тактовые сигналы |
|---|---|
SL2E-1V, SL2E-2V, SL2E-4V, SL2E-5E, SL2E-7V | 8 |
SL2E-10V, SL2E-15V | 16 |
SL2-12E, SL2S-12E | 8 (согласно [1, таблица 1-2]) |
SL2-22E … SL2D-25E | 16 |
10. Заключение
В статье проведён архитектурный анализ FPGA Sealion 2000. Установлено, что устройство сочетает логическое ядро, характерное для Lattice (встроенный мультиплексор 2:1 перед регистром, 5‑ и 6‑входовые примитивы, аппаратная неоднородность структуры), с маршрутизационной структурой, напоминающей Altera (непрерывные каналы строк и столбцов, коммутационные матрицы на перекрестиях, однодрайверные буферы).
Показано, что в LU используется конфигурируемая макроячейка регистра, настраиваемая на четыре функции защёлки и четыре функции триггера. Предложена её спецификация на основе булевых функций для защёлок и двухступенчатой Master‑Slave структуры для триггеров. Разработана схемная реализация на основе классической структуры Master‑Slave с разнополярным тактированием (рис. 3.38 из [10], известной также как «D‑триггер без гашения» [11]), дополненной мультиплексорами и логическими элементами для конфигурации. Дана полная таблица настройки для каждой из восьми функций. Модель верифицирована Verilog‑кодом с учётом физических особенностей (поведение при S=R=1, отключение Slave в режиме защёлки, корректная петля CE).
Гибридный подход Sealion 2000 обеспечивает высокую плотность логики (благодаря встроенному MUX), предсказуемую быструю маршрутизацию (благодаря непрерывным каналам с однодрайверными буферами), эффективную локальную коммутацию (благодаря разреженному кроссбару внутри LAM, экономящему около 10% площади) и гибкую обратную связь (благодаря трём уровням путей обратной связи).
Неподтверждённые документально, но архитектурно обоснованные предположения:
использование разреженного кроссбара внутри LAM (удаление 50–75% связей для экономии около 10% площади);
однодрайверная маршрутизация (согласуется с заявленной максимальной частотой 400 МГц и современными трендами);
транзисторная реализация встроенного мультиплексора на передающих элементах/pass‑транзисторах;
отсутствие каскадной цепи (нет упоминаний в [1] и [2]).
Результаты статьи могут быть использованы при проектировании и применении устройств семейства Sealion 2000, а также для развития отечественной элементной базы FPGA.
11. Литература
[1] XiST Microelectronics, Sealion 2000 Data Sheet, DS02001_V2.18.
[2] XiST Microelectronics, Sealion 2000 FPGA Family Library User Guide, UG02008_V1.8.
[3] I. Kuon, R. Tessier, and J. Rose, “FPGA Architecture: Survey and Challenges,” Found. Trends Electron. Des. Autom., vol. 2, no. 2, pp. 135–253, 2008.
[4] Z. Marrakchi, H. Mrabet, U. Farooq, and H. Mehrez, “FPGA Interconnect Topologies Exploration,” Int. J. Reconfigurable Comput., vol. 2009, Art. ID 259837, 2009.
[5] A. Chan, J. Shen, and C. Y. Tsui, “Programmable Logic Device,” U.S. Patent 6 255 847 B1, Jul. 3, 2001.
[6] Lattice Semiconductor Corp., FPGA Libraries Reference Guide, Document 81058374, 2014.
[7] Altera Corp., Cyclone IV Device Handbook, cyiv-51002.
[8] Altera Corp., MAX 10 FPGA Device Overview, m10_architecture.
[9] G. Lemieux, E. Lee, M. Tom, and A. Yu, “Directional and single-driver wires in FPGA interconnect,” in Proc. IEEE Int. Conf. Field-Program. Technol. (FPT), 2004, pp. 41–48.
[10] Ю. И. Букреев, В. И. Горячев, Б. М. Мансуров, Микроэлектронные схемы цифровых устройств. М.: Высшая школа, 2003.
[11] В. И. Варшавский (ред.), Апериодические автоматы. М.: Наука, 1976.

