Изучаем ПЛИС с нуля. /Spartan-3A/VHDL/ISE 14.7/

Предыдущая тема Следующая тема Перейти вниз

Изучаем ПЛИС с нуля. /Spartan-3A/VHDL/ISE 14.7/

Сообщение  Viktor2312 в Вс Июн 18 2017, 15:24

.
Изучаем ПЛИС с нуля.


____В данной теме я буду отражать процесс изучения микросхем ПЛИС с нуля. Максимально подробно и разжёвано. В первую очередь, я это делаю для себя, своего рода конспект. Мне так удобнее, проще и интереснее осваивать. Будет много, очень много теории, и надеюсь практики. В качестве основы, решено взять семейство микросхем ПЛИС Spartan-3A, а именно XC3S200A-4VQG100C, да не самое современное, но есть много причин, почему именно это семейство. Во первых, стоит относительно недорого, а к тому же одна микросхема для экспериментов уже есть в наличии, но при необходимости закажу ещё необходимое количество, также нужно будет подумать о приобретении, для экспериментов, готового kit'а. Во вторых, относительно недорогой программатор, который тоже предполагается приобрести со временем. В третьих, корпуса VQFP 100, я ещё как-то могу представить как запаять и решусь это делать, с BGA же я пока не готов связываться. И в четвёртых, это неплохой старт для освоения микросхем ПЛИС, в последствии можно будет двигаться дальше, в сторону более современных семейств и более крутых корпусов, но это потом...
____Процесс изучения будет проходить постепенно, от простого к более сложному. Как уже стало понятно из предыдущего опыта, необходимо будет осваивать три составных части. Это "железо" то есть внутреннее устройство и структура самой микросхемы ПЛИС, вторая составная часть, это язык описания аппаратуры VHDL и третья это ПО, среда разработки ISE, симулятор и другое программное обеспечение. В общим как вроде всё просто, есть железка, внутреннее устройство которой мы будем описывать в среде разработки, при помощи языка описания аппаратуры (ISE -> VHDL -> FPGA).


.


Последний раз редактировалось: Viktor2312 (Чт Июн 22 2017, 01:32), всего редактировалось 1 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 10337
Дата регистрации : 2012-08-10
Возраст : 38
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Изучаем ПЛИС с нуля. /Spartan-3A/VHDL/ISE 14.7/

Сообщение  Viktor2312 в Чт Июн 22 2017, 01:31

.
Часть 000.
Начало. Конфигурируемые логические блоки CLB.

____Семейство Spartan-3A и соответственно микросхема ПЛИС (XC3S200A-4VQG100C) которую предполагается использовать в дальнейших экспериментах и практических конструкциях представляет собой дальнейшее развитие серии микросхем ПЛИС Spartan-3. Поэтому внутреннее устройство кристалла во многом совпадает с предшествующими семействами Spartan-3, Spartan-3E. В состав архитектуры кристалла входят те же структурные элементы, что и в выпускаемых ранее микросхемах ПЛИС Spartan-3. Основное архитектурное отличие проявляется в оптимизированной системе программируемых блоков ввода/вывода (Input/Output block IOB). Кроме того, существует и ряд других преимуществ с которыми мы познакомимся в последствии по мере изучения.
____Ниже представлено фото микросхемы ПЛИС XC3S200A-4VQG100C для наглядности:


____Маркировка на корпусе указывает непосредственно название микросхемы ПЛИС, но и предоставляет основные сведения о скорости, температурном диапазоне, типе корпуса и количестве выводов. Ниже на рисунке показано, какой элемент маркировки, что означает:


____Теперь же перейдём к рассмотрению внутреннего устройства. Структурно, любую микросхему FPGA можно представить совокупностью блоков, содержащих логику переключателей, осуществляющих коммутацию этих блоков и макроблоков, представляющих собой некоторые законченные элементы, жёстко реализованные в FPGA на физическом уровне. При этом, самые большие блоки, содержащие логику, называются конфигурируемые логические блоки CLB (Configurable Logical Block). CLB — это своеобразная «молекула» в FPGA, состоящая из «атомов» - ячеек (logic cells). Возможности самих ячеек, несомненно, являются весьма важными для достижения высоких показателей проекта, однако дополнительные ресурсы, служащие для объединения ячеек в конфигурируемый логический блок, также могут привнести полезные свойства. Конфигурируемые логические блоки CLB составляют основной логический ресурс для реализации синхронных, а также комбинаторных схем. Каждый CLB содержит четыре секции (Slice). Каждый Slice содержит две 4-входовых таблицы преобразования или иными словами генератора функций (Look-Up Tables LUTs) для реализации логики и два выделенных триггера, которые могут использоваться в качестве двухступенчатых триггеров (flip-flop) или одноступенчатого триггера (latch, защёлка). LUT могут использоваться как память 16x1 (RAM16) или как 16-разрядный регистр сдвига (SRL16), а дополнительные мультиплексоры и логика переноса упрощают логические и арифметические функции.

Пояснение:
Одноступенчатые триггеры (latch, защёлки) состоят из одной ступени представляющей собой элемент памяти и схему управления, бывают, как правило, со статическим управлением. Одноступенчатые триггеры с динамическим управлением применяются в первой ступени двухступенчатых триггеров с динамическим управлением. Одноступенчатый триггер на УГО обозначают одной буквой Т.

Двухступенчатые триггеры (flip-flop, шлёпающие) делятся на триггеры со статическим управлением и триггеры с динамическим управлением. При одном уровне сигнала на входе С информация, в соответствии с логикой работы триггера, записывается в первую ступень (вторая ступень заблокирована для записи). При другом уровне этого сигнала происходит копирование состояния первой ступени во вторую (первая ступень заблокирована для записи), выходной сигнал появляется в этот момент времени с задержкой равной задержке срабатывания ступени. Обычно двухступенчатые триггеры применяются в схемах, где логические функции входов триггера зависят от его выходов, во избежание временны́х гонок. Двухступенчатый триггер на УГО обозначают двумя буквами ТТ.

____CLB расположены в регулярном массиве строк и столбцов, как показано на рисунке ниже:


____Ниже в таблице представлены ресурсы CLB имеющиеся в микросхеме ПЛИС, которая будет использоваться:


____Из таблице видно, что у нас имеется 32 ряда и 16 столбцов, но конфигурируемых логических блоков 448, меньше чем можно было бы разместить (32 * 16 = 512) на 64 штуки. Это связано с тем, что помимо CLB на кристалле располагаются ещё и другие блоки, например DCM. Так как CLB состоит из четырёх Slice, то соответственно (448 *4 = 1792) имеется 1792 Slice. А каждый Slice содержит два LUT и два триггера, соответственно (1792 * 2 = 3584) имеется 3584 таблицы преобразования LUT и 3584 триггера FF. Так же и с распределённой памятью. Так как у нас имеется 3584 Slice, но только половина из них может использоваться как память 16x1 (RAM16), так называемые SliceM, то общее количество распределённой памяти будет 28672 бита, что и отображено в таблице.
____Все конфигурируемые логические блоки CLB идентичен внутри семейства, также CLB одинаковы среди всех семейств Spartan-3. Производительность незначительно варьируется между семействами из-за незначительных различий в обработке и характеристиках. Единственное различие между семействами заключается в том, как количество CLB связано с количеством строк и столбцов. В семействе Spartan-3E и Extended Spartan-3A количество CLB меньше, чем кратное количеству строк и столбцов. Это различие связано с тем, что в расширенном семействе Spartan-3A DCM встроены в массив, а в семействе Spartan-3E в массив встроены как DCM, так и блок RAM/multiplier blocks.
____Каждый CLB содержит четыре взаимосвязанных Slice, как показано на рисунке ниже. Эти Slice сгруппированы в пары. Каждая пара организована как столбец с независимой цепью переноса. Левая пара поддерживает функции логики и памяти, а её Slice называются SliceM. Правая пара поддерживает только логику, и её Slice называются SliceL. Поэтому половина LUT поддерживает как логику, так и память (включая регистры сдвига RAM16 и SRL16), два этих типа Slice чередуются по всем столбцам массива. SliceL уменьшает размер CLB и снижает стоимость устройства, а также может обеспечить более высокую производительность по сравнению с SliceM. Символы M и L означают Memory и Logic соответственно, то есть ряд ячеек может реализовывать функцию памяти, а остальные — только логику.


____Программное обеспечение для разработки Xilinx обозначает местоположение Slice в соответствии с его координатами X и Y, начиная с нижнего левого угла. Буква «X», за которой следует число, обозначает столбцы Slice, увеличивающиеся с лева на вправо. Буква «Y», за которой следует число, определяет положение каждого Slice в паре, а также указывает строку CLB, увеличивающуюся от нижней части матрицы. На рисунке выше показан CLB, расположенный в нижнем левом углу матрицы. SliceM всегда имеет чётное число «X», а SliceL всегда имеет нечётное число «Х».
____На рисунке ниже представлено внутреннее устройство Slice, синими линиями показаны дополнительные элементы содержащиеся в Slice типа SliceM, в Slice типа SliceL эти элементы и соединения отсутствуют:


____В Slice входят два генератора функций LUT и два элемента памяти FF, а также дополнительная логика, как показано на рисунке ниже:


____Оба SliceM и SliceL имеют следующие общие элементы для обеспечения функций логики, арифметики и ПЗУ:

  • Два 4-входовых генератора функций LUT, F и G.
  • Два элемента памяти.
  • Два многофункциональных мультиплексора F5MUX и FiMUX.
  • Логика переноса и арифметики.

Пара SliceM поддерживает две дополнительные функции:

  • Два распределенных RAM-блока 16x1, RAM16.
  • Два 16-битных регистра сдвига, SRL16.

____Комбинация LUT и элемента памяти известна как «Логическая ячейка». Дополнительные функции в Slice, такие как расширенные мультиплексоры, логика переноса и арифметическая логика, добавляют в структуру Slice, которая в противном случае требовала бы дополнительных LUT. Тесты показали, что общий Slice эквивалентен 2,25 простым логическим ячейкам. Этот расчет обеспечивает эквивалентное количество логических ячеек. В таблице выше, для нашей микросхемы ПЛИС это значение составляет 4032 эквивалентных логических ячеек.
____На рисунке выше, изображающем подробное устройство Slice имеется две половины, которые находятся сверху и снизу, они выделены пунктирными линиями, чтобы отличать их от верхнего Slice и нижнего Slice в CLB. Управляющие входы Clock (CLK), Clock Enable (CE), Slice Write Enable (SLICEWE1) и Reset/Set (RS) совместно используются между двумя половинами.
____LUT, расположенные в верхней и нижней частях Slice, называются соответственно «G» и «F», или «G-LUT» и «F-LUT». Элементы памяти (триггеры) в верхней и нижней частях Slice называются FFY и FFX соответственно.
____Каждый Slice имеет два мультиплексора с F5MUX в нижней части Slice и FiMUX в верхней части. В зависимости от Slice FiMUX имеет имя F6MUX, F7MUX или F8MUX в соответствии с его положением в цепи мультиплексора. Нижние SliceL и SliceM имеют имя F6MUX. Верхний SliceM имеет имя F7MUX, а верхний SliceL имеет имя F8MUX.
____Цепь переноса входит в нижнюю часть Slice как CIN и выходит в верхней как COUT. Пять мультиплексоров управляют цепью: CYINIT, CY0F ​​и CYMUXF в нижней части, а CY0G и CYMUXG - в верхней части. Выделенная арифметическая логика включает в себя логические элементы исключающее ИЛИ, XORF и XORG (соответственно в нижней и верхней части Slice), а также логические элементы ИЛИ, FAND и GAND (в нижней и верхней части соответственно).
____Центральными для работы каждого Slice являются два почти одинаковых пути прохождения данных в верхней и нижней частях Slice. В последующем описании используются имена, связанные с нижним контуром. (Наименования верхнего пути отображаются в круглых скобках.) Основной путь исходит из матрицы коммутатора межсоединений (switch matrix) вне CLB.
____Четыре линии F1, F2, F3, F4 (или от G1 до G4 в верхней части Slice), являются входами LUT. После прохождения входных сигналов через LUT 'F' (или 'G') и выполнения логической функции. Далее сигнал с LUT, его выхода Data, «D», имеет пять возможных путей дальнейшего прохождения:

  1. Сигнал может выйти из Slice через выход «X» (или «Y») и вернуться к межсоединению. На рисунке ниже, красным цветом выделено прохождение сигнала:



  2. С выхода «X» (или «Y»), внутри Slice сигнал подаётся на вход мультиплексора DXMUX (или DYMUX), с выхода которого сигнал поступает на «D» вход триггера FFX (или FFY), с выхода «Q» триггера сигнал выходит из Slice через выход «XQ» (или «YQ»). На рисунке ниже, красным цветом выделено прохождение сигнала:



  3. Управлять мультиплексором CYMUXF (или CYMUXG) в цепи переноса. На рисунке ниже, красным цветом выделено прохождение сигнала:



  4. При использовании цепи ускоренного переноса, является одним из входных сигналов для логического элемента исключающее ИЛИ, XORF (или XORG), при выполнении арифметических операций, результат выводится из Slice с выхода «X» (или «Y»). На рисунке ниже, красным цветом выделено прохождение сигнала:



  5. Управляя мультиплексором F5MUX можно реализовать логические функции с разрядностью больше 4 бит. Выходы «D» как F-LUT, так и G-LUT служат в качестве входных данных для этого мультиплексора. На рисунке ниже, красным цветом выделено прохождение сигнала:



____В дополнение к основным логическим путям, описанным выше, есть два пути обхода, которые входят в Slice как входы BX и BY. Внутри FPGA BX в нижней половине Slice (или BY в верхней половине) может проходить по любой из нескольких возможных ветвей:

  1. Входной сигнал поданный на вход BX (BY) может обойти как F-LUT (G-LUT), так и триггер FFX (FFY) , а затем выйти из Slice через выход BXOUT (или BYOUT) и вернуться к межсоединению.

  2. Входной сигнал поданный на вход BX (BY) может обойти F-LUT (G-LUT), но пройти через триггер FFX (FFY) придя на его вход «D», выйдя из  Slice через выход XQ (или YQ).

  3. Входной сигнал поданный на вход BX (BY) может, быть использован как сигнал управления многофункциональным мультиплексором F5MUX (или FiMUX).

  4. Через мультиплексоры входящие в цепь ускоренного переноса.

  5. Может управлять входным сигналом DI генератора функций LUT.

  6. Вход BY может управлять входами REV триггеров FFY, так и FFX.

  7. И наконец, мультиплексор DIG_MUX может переключать входной сигнал BY выводя его на линию DIG, которая выходит из Slice.

____Управляющие входы CLK, CE, SR, BX и BY можно инвертировать программно, то есть имеют программируемую полярность. Входы LUT не требуют программируемой полярности, поскольку их функция может быть инвертирована внутри LUT.
____Таблица Look-Up или LUT является генератором функций на основе RAM и является основным ресурсом для реализации логических функций. Кроме того, LUT в каждой паре SliceM могут быть сконфигурированы как распределенная оперативная память ОЗУ или 16-разрядный регистр сдвига.
____Каждый из двух LUT (F и G) в Slice имеет четыре логических входа (A1-A4) и один выход (D). В одном LUT могут быть реализованы любые логические операции от четырёх переменных. Функции с большим количеством входов могут быть реализованы с помощью каскадного соединения нескольких LUT или с помощью многофункциональных мультиплексоров.
____При помощи широкого набора мультиплексоров выход LUT может подключаться к логике переноса и арифметики, непосредственно к выходу CLB или к внутреннему триггеру CLB.


____Широкофункциональные мультиплексоры эффективно объединяют LUT для обеспечения более сложных логических операций. Каждый Slice имеет два мультиплексора F5MUX в нижней части Slice и FiMUX в верхней части. F5MUX мультиплексирует два LUT в Slice. FiMUX мультиплексирует два входа CLB, которые напрямую подключаются к F5MUX и FiMUX от одного и того же Slice или от других Slice.
____Цепь переноса вместе с различными выделенными логическими элементами поддерживает быструю и эффективную реализацию математических операций. Логика переноса автоматически используется для большинства арифметических функций в проектах. Логические элементы и мультиплексоры логики переноса и арифметики также могут использоваться для логики общего назначения, включая простые булевы функции.
____Триггеры могут также использоваться для синхронизации данных с тактовым сигналом. Триггеры в верхней и нижней частях Slice называются FFY и FFX соответственно. FFY имеет мультиплексор на входе D, выбирающий либо комбинаторный выход Y, либо обходной сигнал BY. FFX имеет мультиплексор на входе D, выбирающий либо комбинаторный выход X, либо обходной сигнал BX.
____Триггеры CLB инициализируются при включении питания, во время конфигурации, глобальным сигналом GSR и отдельными входами SR или REV для CLB. Триггеры также могут быть повторно инициализированы с использованием входа GSR в примитиве STARTUP. Более детально будем рассматривать это позже.


Продолжение в следующем посте.
.
avatar
Viktor2312
Гуру+

Сообщения : 10337
Дата регистрации : 2012-08-10
Возраст : 38
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения