Прошивка ПЛИС Spartan6 при помощи FPGALink

15 июня 2014 г. 20:43 ПЛИС   FPGALink  

В этой статье речь пойдет о демо-платке от китайской конторы canton-electronics. На борту дешевенькая FPGA xc6slx9 семейства Spartan6 в корпусе tqg-144. Обвязка минимальная - пару регуляторов питания, кварцевый генератор 25 МГц, SPI-флешка M25P40 объемом 4 Мбит для загрузки прошивки, светодиоды и кнопки. Питается от разъема USB (информационные линии USB не подключены). Платка стоит 35$ + 5$ доставка. Купить можно тут . 

В принципе платку можно накатить lut-ом или домашним фоторезистом - особых мелочей нет. Схему покажу в статье. Отдельный чип xc6slx9 стоит порядка 9$, но покупать все же скорее всего придется чайне, потому что в наших магазинах такие специализированные микросхемы обычно найти сложно.  

Все незадействованные пины выведены на штырьки, так что можно развести шилд с собственной периферией.

Создавать проект я буду в среде Xininx ISE, как с ней работать я пытался рассказать в этой статье. Я напишу светодиодную мигалку и прошью её в плату по JTAG с помощью FPGALink . 

Дешевый самодельный программатор для ПЛИС Xilinx (FPGALink)

23 мая 2014 г. 23:23 ПЛИС   FPGALink  

Для ПЛИС фирмы Xilinx дешевый USB-программатор найти не так просто. В данной статье я предлагаю вашему вниманию программатор основанный на проекте FPGALink, созданным британцем Крисом МакКлелландом. Он разработал прошивку под контроллеры Cypress FX2LP и Atmel AVR8 с поддержкой USB а также библиотеку для работы с этой прошивкой и утилиты командной строки на её основе. Я накидал простенькую платку программатора c чипом  AT90USB162. Особенностью этой AVR-ки является то, что её можно прошить без внешнего программатора - с помощью USB DFU Bootloader-а (Device Firmware Upgrade). 

Данный программатор теоретически поддерживает любые модели Xilinx FPGA, поскольку он просто выполняет .xsvf-файлы по стандартному 4-х проводному интерфейсу JTAG. Файлы .xsvf можно генерировать с помощью утилиты Impact, входящей в состав IDE Xilinx ISE. Скорость прошивки вполне удовлетворительна - для примера чип xc6slx9 прошивается за несколько секунд.

Стадии имплементации устройства в Xilinx ISE

10 мая 2014 г. 23:03 ПЛИС  

В прошлой статье мы создали проект устройства в Xilinx ISE, и узнали как описывать поведение простейшего устройства а также как выполнять его имплементацию. Что при этом происходит "за кулисами" интерфейса мы попробуем разобраться в данной статье. Для этого мы рассмотрим стадии, которые проходит наше описание перед тем, как превратится в "прошивку" для ПЛИС. В статье я дам вывод отдельных утилит, которые реализуют имплементацию, и постараюсь дать некоторые краткие комментарии. Большой проблемой в объяснении всего происходящего является "проприетарность" (то есть закрытость) форматов файлов учавствующих в процессе имплементации, поэтому сразу скажу, что рассмотрение будет весьма поверхностное, и направленное скорей на составление общей картины, чем на подробное описание всех тонкостей.

USBIP. Проброс USB устройств по сети в Arch Linux

10 мая 2014 г. 23:01 Linux   Arch Linux   хак  

Иногда бывают случаи, когда какое-нибудь usb устройство находится в недоступном для вас месте: в другой стране, на производственных цехах, в промышленных зонах и т.п. Не важно какое это устройство: программатор, преобразователь USB- UART или какой-нибудь CNC станок, в любом случае предполагается, что оно просто подключено к удаленному компьютеру, а вы хотите получить к нему доступ на своем компьютере со своим окружением. Для этой цели есть пакет usbip,  позволяющий "пробрасывать" USB устройства .

Основы создания конфигураций ПЛИС на VHDL в Xilinx ISE

9 мая 2014 г. 17:36 ПЛИС  

Существующее множество архитектур микроконтроллеров и микропроцессоров способно удовлетворить много задач во встраиваемых системах. Но существуют задачи, для которых классическая процессорная архитектура либо не подходит вообще, либо подходит в качестве Ъ-решения. Например это могут быть задачи высокоскоростных/многопоточных вычислений, задачи реализации многоканальных интерфейсов, аппаратные сопроцессоры и тому подобное. Для их решения обычно приходится самому разрабатывать микросхемы. Одним из дешевых и доступных вариантов такой разработки является ПЛИС (программируемая логическая интегральная схема). Для описания конфигурации ПЛИС может быть использован язык VHDL. Во многом язык VHDL похож на языки программирования - в нем есть операторы ветвления, циклы, типы данных, и даже подпрограммы, но при этом всем он не является языком программирования! И это самое главное, что нужно понять если вы начинаете его осваивать. Как известно, язык программирования - это язык, операторы которого превращаются в машинный код, который последовательно (инструкции одна за одной) выполняется процессором или микроконтроллером. В ПЛИС выполнять подобные инструкции просто некому, так что всё, что написано на VHDL не выполняется, а описывает устройство. Что подразумевается под словом "описывает" я и попытаюсь на конкретном примере объяснить в этой и последующих статьях.

Наложение полномасштабного водяного знака на изображение в PHP (Yii)

8 мая 2014 г. 1:18 web   Yii  

Водяные знаки (Watermarks) на изображениях используются как для защиты контента от копирования так и для подтверждения авторского права на изображения. Водяные знаки, применяемые для изображений должны быть ненавязчивыми и не должны мешать просмотру самого изображения. В данной статье будет показан один из методов наложения водяного знака, заключающийся в растяжении его по максимуму на все изображение. В качестве основы я буду использовать класс компонента CImageHandler для Yii фреимворка, однако алгоритм наложения, реализованный на PHP с использованием GD, можно адаптировать для других фреимворках или CMS.

Дешевый выделенный VPS сервер за 3 евро в год

2 мая 2014 г. 22:31 Linux   web  

На протяжении двух лет этот блог отлично работал на бесплатном хостинге, но как известно ничего не бывает вечно бесплатным и в последний месяц хостинг без рациональных причин начал утверждать, что блог потребляет слишком много системных ресурсов, и отключать доступ к сайту. В результате наотключал настолько, что в индекс гугла вместо контента попала ошибка с превышенным лимитом ресурсов + реклама хостинга =). Ни мой код php, ни посещаемость не менялась, естественно проблема была не в блоге. Но замену хостингу искать пришлось. Большинство платных хостингов для веб-сайтов, которые мне попадались, были весьма дороги и их ресурсы по большому счету были избыточны для такого легкого бложика. Одним из рассматриваемых вариантов была организация домашнего веб-сервера на каком-нибудь недорогом малопотребляющем одноплатнике (вроде cubieboard), однако цена выделенного статического айпишника у моего провайдера оказалась большей, чем большинство платных хостингов. В результате был найден еще один вариант - это сервис http://lowendspirit.com/, предоставляющий выделенный VPS сервер всего за 3 евро в год! Собственно сейчас вы читаете блог, который запущен на этом сервисе. В данной статье я расскажу про свой опыт установки веб-сервера на данный VPS хостинг, с какими проблемами можно встретился и как их решить. Кому интересно - читайте продолжение статьи.

SDCC для STM8. Таймер и обработка прерываний

27 января 2014 г. 21:39 STM8   C  

В прошлой статье я рассказал про то, как установить компилятор SDCC в linux и как с помощью него собрать код на C для STM8, а также поделился библиотекой работы со стандартной периферий STM8S, которая поддерживает SDCC. Сегодня я хочу представить еще один пример, в котором будет использован таймер. В примере мы объявим обработчик прерывания для таймера и выполним в нем переключение состояния светодиодов. 

Я буду использовать ту же библиотеку что и в прошлый раз. При внесении изменений для поддержки SDCC в библиотеку я постарался сделать это так, что бы код написанный под SDCC не отличался от кода для других компиляторов. По этому этот же пример с этой же библиотекой должен точно так же компилироваться под IAR EWSTM8, COSMIC и RAISONANCE.