RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Апрель 2024
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930     

Календарь Календарь

Последние темы
» Вити больше нет!
автор bug19 Пн Фев 20 2023, 19:54

» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47

» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05

» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03

» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02

» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52

» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36

» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37

» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33

» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00

» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58

» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17

» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07

» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08

» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09

» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02

» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47

» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11

» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33

» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38

» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12

» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01

» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22

» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08

» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08

Самые активные пользователи за месяц
Нет пользователей

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


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

Перейти вниз

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

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

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


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


.


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

Viktor2312
RIP

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

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

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

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

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

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

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

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

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

____Теперь же перейдём к рассмотрению внутреннего устройства. Структурно, любую микросхему 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 расположены в регулярном массиве строк и столбцов, как показано на рисунке ниже:

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

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

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

____Из таблице видно, что у нас имеется 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 соответственно, то есть ряд ячеек может реализовывать функцию памяти, а остальные — только логику.

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

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

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

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

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

____Оба 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») и вернуться к межсоединению. На рисунке ниже, красным цветом выделено прохождение сигнала:

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

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

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

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

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

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

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

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

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

____В дополнение к основным логическим путям, описанным выше, есть два пути обхода, которые входят в 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.

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

____Широкофункциональные мультиплексоры эффективно объединяют 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. Более детально будем рассматривать это позже.


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

Viktor2312
RIP

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

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

Вернуться к началу

- Похожие темы

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