?

Log in

No account? Create an account
Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Отрицательнице вагинального оргазма Наталье Радуловой - 40 лет! [Feb. 10th, 2015|12:00 am]
Yuri Panchul

Сорок лет - возраст мудрости. Журналистка "Огонька" и популярная блоггерша Наталья Радулова тоже стала к этому возрасту мудрой. Но до этого она была мудрой не всегда и в возрасте 30 лет устроила вендетту против русских мужиков.

Одним из методов радуловской вендетты была агрессивная агитация русских женщин, чтобы те бросали русских мужчин и бежали к мужчинам любых западных национальностей. И не только бежали! В радуловской статье "День святой Марины" главная героиня ползла по топи пять километров через советско-финскую границу, чтобы сбежать от брака с советским инженером и соединиться с американским мальчиком-студентом.

Толпы российских женщин вняли радуловской пропаганде и устремились за границу к американским мужчинам. За границей они увидели, что один жених уже стар и перерезал себе семявыводящие потоки; другой живет на зарплату, которая из России казалась большой, но в Америке является нищенским существованием; третий привез свежую российскую девушку в какую-то тундру в Вайоминге, где он работает водителем автобуса и т.д.

Почему же жертвы Радуловой не жаловались и поток не прерывался? Ответ на это мне подсказала русская интеллигентка из Лос-Анжелеса Эльвира Барякина, которая однажды у себя в ЖЖ написала пост в духе (пост куда-то исчез, поэтому привожу по памяти) "Вот приезжает любой американец в Нижний Новгород - и уже жених! А почему? Потому что за ним стоит передовая в технологическом отношении страна, которая проектирует айфоны и другую технологию!"

Не надо смеяться, господа! Понятно, что и русская интеллигентка Наталья, и русская интеллигентка Эльвира мыслят гениталиями. Но из этого не следует, что их мнениями нужно пренебречь! Эволюция сотни миллионов лет оттачивала интуитивное мышление у самок социальных млекопитающих. Ее устами глаголит истина.

И эта истина звучит так: для устранения дискриминации русских мужчин русскими женщинами и окончательной победе над Наталией Радуловой - в России необходимо повысить уровень технологического развития с помощью интеграции страны с мировым рынком технологий и апгрейда системы образования инженеров.

Для этого вовсе не обязательно выбрасывать несуразные деньги а-ля сделка Сколкова и MIT.

Есть масса дешевых и эффективных мер апгрейда. Одна из них - широко ввести практические классы ПЛИС / ППВМ / FPGA среди старших школьников и студентов. Это то, на чем учатся и инженеры, которые потом разрабатывают микросхемы внутри Apple iPhone в Купертино, Калифорния.

ПЛИС - Программируемая логическая интегральная схема
ППВМ - Программируемая пользователем вентильная матрица
FPGA - Field Programmable Gate Array

Так как ниже речь идет о платах, то у многих читателей тут же может возникнуть реакиция "а, это ардуино/raspberry pi/роботы - знаем!" Нет, это не ардуино, не имеет вообще никакого отношения к данному классу устройств. Еще раз повторяю: это не ардуино, потому что у ардуин стоит внутри основанный на микропроцессорном ядре микроконтроллер, а тут вообще никакого процессора нет - чистая матрица перепрограммируемых логических ячеек.

Пока американские школьники будут играться только с микроконтроллерами, российские школьники могут играться одновременно и с микроконтроллерами, и с FPGA, и тем самым получат технологическое преимущество за счет системного мышления - понимания и программирования, и принципов разработки хардверной логики одновременно.

Несколько слайдов про то, чем отличается проектирование схем на языках описания аппаратуры (например Verilog) от программирования микроконтроллеров на Си (например микроконтроллера в Ардуино):









А вот как вписывается в эту картину ПЛИС / ППВМ / FPGA. Они могут быть использованы как тренажеры для будущих создателей умных чипов ASIC в гаджетах и самоуправляемых автомобилях. ПЛИС-ы / FPGA — не процессоры, «программируя» ПЛИС (заполняя конфигурационную память ПЛИС-а) вы создаете электронную схему (хардвер), в то время как при программировании процессора (фиксированного хардвера) вы подсовываете ему цепочку написанных в память последовательных инструкций программы (софтвер).



Одной из проблем использования FPGA для образования российских тинейджеров является нехватка литературы на русском языке. Довольно скоро должен выйти русский перевод книжки Digital Design and Computer Architecture, Second Edition, by David Harris and Sarah Harris, и эта проблема будет частично решена [ UPD - эта книга вышла - см. в магазине Лабиринт в Москве ]. Но помимо литературы, описывающей схемотехнику и разработку хардвера на уровне регистровых обменов (Register Transfer Level - RTL) используя языки описания аппаратуры (Hardware Description Languages - HDL), есть и другая проблема - для новичка работа со студенческими платами нетривиальна, а программная среда для разработки - недружелюбна.

Поэтому я решил показать по шагам, как начать работать с одной из FPGA плат, которая удобна тем, что втыкается в макетную плату и может быть использована преподавателями кружков школьников наподобие informatikum, который начинает введение в схемотехнику через микросхемы малой степени интеграции типа К155ЛА3 (TTL 7400, CMOS 4000). Втыкаемая в макетку FPGA плата является естественным продолжением существующего курса informatikum.

Вот с чего мог бы начинать в своем курсе informatikum до введения FPGA. Так учили основам цифровой логики с начала 1970-х годов:



и вот к чему он может переходить после ознакомления школьников с базовыми понятиями логического элемента, триггера и сигнала тактовой частоты. Это то же самое, но на технологии 2010-х:



Фишка в том, что внутри FPGA по сути находится конструктор из тысяч логических элементов наподобие элементов в K155ЛА3, но в FPGA их можно соединять не руками с помощью проводов, а меняя содержимое специальной памяти, биты которое соединены с мультиплексорами, которые меняют логические функции ячеек FPGA и соединения между ними:




Где достать платы, софтвер для разработки и необходимые плагины, я расскажу в конце, а сейчас погрузимся непосредственно в создание простой схемы с помощью бесплатной среды разработки Xilinx ISE WebPACK:

Входим и создаем новый проект:



Важно выбрать отдельную директорию для проекта и не смешивать его с вашими исходными файлами, ибо синтезатор генерирует много всяких временных файлов и вы в них можете запутаться (все их можно удалить после использования):



Вводим имя проекта. Это имя совпадает с именем главного модуля на Verilog-е (языке описания железа):



Вводим параметры FPGA: Family, Device, Package, Speed. Их нужно взять из документации по плате.



Проект создан:



Добавляем исходные файлы на языке описания аппаратуры Verilog. Файл top.v содержит описание схемы:

module top
(
    input  btn_0,
    input  btn_1,

    output led_0,
    output led_1,
    output led_2,
    output led_3
);

    assign led_0 = btn_0;
    assign led_1 = btn_1;
    assign led_2 = btn_0 & btn_1;
    assign led_3 = btn_0 | btn_1;

endmodule


Файл cmods6.ucf содержит информацию для среды разработки о том, как связаны логические вводы и выводы главного модуля (btn_0, led_2, ...) с местонахождением (location, LOC) физических ножек микросхемы FPGA, которые именуются P8, N4 и т.д. Этот файл - урезанная версия файла для данной платы, загруженная с сайта компании Digilent (производитель плат):

NET "btn_0" LOC = "P8" | IOSTANDARD = LVCMOS33;
NET "btn_1" LOC = "P9" | IOSTANDARD = LVCMOS33;

NET "led_0" LOC = "N3" | IOSTANDARD = LVCMOS33;
NET "led_1" LOC = "P3" | IOSTANDARD = LVCMOS33;
NET "led_2" LOC = "N4" | IOSTANDARD = LVCMOS33;
NET "led_3" LOC = "P4" | IOSTANDARD = LVCMOS33;
















Теперь нажмем на кнопку "сгенерировать файл для программирования ПЛИС". Тут есть важный момент - "программирование" - это не софтверное софтверным программированием, которое сводится к созданию последовательности команд некоего процессора. Programming File в данном случае - это содержимое памяти в ПЛИС, которое определяет логические функции и соединения ячеек ПЛИС. Процессор в данной схеме не присутствует (хотя вы можете сами создать процессор, программируя (в вышеприведенном смысле) ячейки ПЛИС).



Теперь нажмем кнопку "посмотреть на абстрактную (не привязанную к конкретному FPGA) схему, описанную на верилоге и синтезированную софтвером):





Верхний модуль:



Нажмем на мышкой чтобы посмотреть внутрь:



Нажмем на кнопку "Zoom to Full View" чтобы увидеть всю схему:



А теперь посмотрим на переработанную схему, сгенерированную софтвером для конкретного FPGA (View Technology-Specific):





Мы видим слово LUT - это Look-Up Table - его нужно запомнить на будущее:



Теперь нажмем на кнопку "View/Edit Routed Design (FPGA Editor)", чтобы посмотреть, как схема ляжет на ячейки FPGA:







Укрупним:







Жмем кнопку чтобы сконфигурировать FPGA. Плата прицеплена микро-USB кабелем к компьютеру.

С этого момента важно, что установлен плагин от Digilent-а для этой платы - http://digilentinc.com/Products/Detail.cfm?NavPath=2,66,768&Prod=DIGILENT-PLUGIN

У Digilent-а есть еще софтвер под названием Digilent Adept, но он на моем компьютере с этой платой почему-то не работает, так что лучше использовать плагин и iMPACT. Последовательность действий ниже понимать не обязательно, это просто "магические заклинания", чтобы перенести *.bit файл в конфигурационную память внутри FPGA:

























Все, теперь плата должна работать - откликаться на нажатия кнопок и соответственно им мигать лампочками.

Теперь не будем закрывать iMPACT, вернемся к главному окну ISE и построим не комбинационную, а последовательностную схему - сдвиговый регистр. Используем генератор тактового сигнала низкой частоты 1 Hz, т.е. один раз в секунду. На плате еще есть генератор тактового сигнала на 8 MHz - это частоту с помощью PLL можно поднять до 200 MHz. Но высокая частота - это других дизайнов, а для наглядности 1 Hz - то что надо:



Засинтезируем ее, сгенерим bit-файл, вернемся в iMPACT и нажмем на кнопку Program. Оно скажет:



Нужно нажать Yes и в FPGA будет загружен новый дизайн. Кстати, теоретически повторная (после создания iMPACT project) загрузка должна происходить просто нажатием Configure Target Device в главном окне ISE, но реально у меня это не происходит - софтвер норовит создать новый iMPACT project. Поэтому и лучше использовать кнопку Program внутри окна iMPACT. Все претензии по этому поводу - в Digilent и Xilinx.

Приложение A. Два видео - как реализовать сдвиговый регистр и счетчик





Приложение B. Полный заголовок верхнего модуля на верилоге для данной платы

Со всеми соединениями и комментариями:

module cmods6
(
    input        CLK,         // FPGA_GCLK, 8MHz  - можно поднять до 200 MHz
    input        CLK_LFC,     // FPGA_LFC, 1 Hz

    output       LED_0,    // Четыре лампочки
    output       LED_1,
    output       LED_2,
    output       LED_3,

    input        BTN_0,   // Две кнопочки
    input        BTN_1,

    // DEPP interface - интерфейс для связи с PC через USB

    input        DEPP_ASTB,   // Address strobe
    input        DEPP_DSTB,   // Data strobe
    input        DEPP_WRITE,  // Write enable (write operation = 0, read operation = 1)
    output       DEPP_WAIT,   // Ready 
    inout  [7:0] DBUS,

    // General purpose I/O  - куча пинов для брэдборды

    input  [7:0] PORTA,
    input  [7:0] PORTB,
    output [6:0] PORTC,
    input  [7:0] PORTD,
    input  [7:0] PORTE,
    output [6:0] PORTF
);


Приложение C. Где взять платы

Платы с Xilinx FPGA можно брать на сайте Digilent, сейчас это отделение National Instruments. Вот плата Digilent Cmod S6, которую я использовал в посте, с самым небольшим Xilinx Spartan-6 FPGA:



Для последующего обучения есть например платы Nexys 4 с более мощными FPGA Xilinx Artix-7. На них не нужно скручивать провода на макетной плате, так как эта стадия обучения уже пройдена:



Про платы с Altera FPGA я напишу другой пост.

Приложение D. Где взять софтвер Xilinx ISE

Его можно загрузить прямо с сайта Xilinx. Использовать можно бесплатную версию. Но для Spartan-6 нужно использовать не самую новую версию среды разработки Xilinx Vivado 2014.4, а Xilinx ISE 14.7 2013 года. Почему не Vivado? Маркетологи в Xilinx решили пересадить всех пользователей чипов Spartan на более новые FPGA Artix, и выключили поддержку для Spartan из нового софтвера. Вот только плат, которые можно вставлять в макетную плату, на Artix еще нет. Поэтому нужно использовать версию софтвера 2013 года:



А вот софтвер Xilinx Vivado который подерживает в частности плату Nexys 4 с Xilinx Artix-7 (для платы со Spartan-6 он не нужен):



Теперь важный момент. Для того, чтобы загружать .bit-файл в конфигурационную память FPGA на плате, необходимо скачать специальный плагин с сайта Digilent:





На сайте еще есть софтвер Digilent Adept, но я его не рекомендую для Spartan-6, у меня были с ним проблемы.

Приложение E. Немного табличек с параметрами FPGA







И в заключение еще одна фотка FPGA платы на макетной плате с кнопками, резисторами и семисегментным индикатором:





UPD: Со времени первой публикации поста прошло 3 года, за это время мы провели несколько школ/семинаров по обучению школьников и студентов работе с ПЛИС/FPGA. Вот ссылки на материалы для обучения:

Новая редакция популярного бесплатного учебника электроники, архитектуры компьютера и низкоуровневого программирования

Подарок на 1 сентября всем поклонникам цифровой схемотехники и архитектуры компьютера

Избранные места из популярного учебника микроэлектроники на русском, который наконец-то выходит на бумаге

Следущие шаги в черной магии процессоростроения после того, как вы освоили Харрис & Харрис

Хакатон нового типа испробован в Киеве, планируется повторить этот опыт в России

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске

К системам на кристалле через ПЛИСы: неделя цифровой микроэлектроники в Киеве — 24-29 апреля 2017

Взял видеоинтервью у вице-президента Ардуино и обсудил с ней преподавание школьникам ПЛИС-ов / FPGA и языка Verilog

Суровая сибирская и казахстанская микроэлектроника 2017 года: Verilog, ASIC и FPGA в Томске, Новосибирске и Астане

Видео лекции перед двумя сотнями студентов в Университете Иннополис, Татарстан. Первый шаг к разработке аппаратных ускорителей нейронных сетей начинается с усвоения методологии проектирования цифровой логики на уровне регистровых передач, с использованием языков описания аппаратуры и упражнениями на программируемых логических интегральных схемах.

https://youtu.be/Kvl6NSJY42k

Слайды: Часть 1, Часть 2, PDF части 1, PDF части 2.



Спасибо за внимание! Радулова, с Днем Рождения!

Возмущены ли вы поведением Наталии Радуловой, когда ей было 30 лет?

Невероятно возмущен(а)! В послевоенной Франции за такое ...
34(38.2%)
Как можно возмущаться результатом миллиардов лет эволюции?
55(61.8%)

Предпочтете ли вы ужин с Натальей Радуловой или ночь с FPGA платой?

Ужин с Радуловой
20(15.3%)
Ночь с FPGA платой
31(23.7%)
Если Радулова перед ужином купит мне плату, то ужин, а платой займемся утром
36(27.5%)
С 40-летием, Наталья Радулова! (Пошел покупать плату)
26(19.8%)
Из-за бугра плюете?
18(13.7%)
LinkReply

Comments:
[User Picture]From: kotjarko
2015-02-10 07:26 am (UTC)
Хочется верить :) Семинары знаю, в рассылках приходят регулярно - Москва-Питер-Москва... :)
(Reply) (Parent) (Thread)