В сумме 551 вентиль

Jul. 26th, 2017 09:49 pm
vak: (Default)
[personal profile] vak
Асинхронный наибольший общий делитель на микросхеме Xilinx FPGA Artix-7 занимает вот такое количество ресурсов:
Report Cell Usage:
+----------+------+
|Cell |Count |
+----------+------+
|BUFR | 2|
|LUT2 | 236|
|LUT3 | 4|
|LUT4 | 153|
|LUT5 | 26|
|LUT6 | 102|
|LUT6_2 | 28|
+----------+------+
Здесь LUT2-LUT6 это элементарные логические функции с несколькими входами и одним выходом. Примитив LUT6_2 чуть сложнее, он имеет два выхода. BUFR это повторитель-усилитель сигнала.
vak: (Default)
[personal profile] vak
Вот что происходит с альтеровским софтом Quartus II при попытке синтезировать простую схему асинхронного счётчика, содержащую LUTs с обратными связями.
Фатальная ошибка )
Это если поставить для таких ячеек параметр dont_touch="yes", иначе квартус их просто тихо выкидывает из схемы.
vak: (Default)
[personal profile] vak
Конфигурируем отладочный порт USB Bus Blaster для плат Altera FPGA DE10-Lite под линуксом.

(1) После установки Altera Quartus создаём файл /etc/udev/rules.d/51-altera.rules со следующим содержимым:
# Altera bus Blaster
SUBSYSTEM=="usb",\
ENV{DEVTYPE}=="usb_device",\
ATTR{idVendor}=="09fb",\
ATTR{idProduct}=="6001",\
MODE="0666",\
NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}",\
RUN+="/bin/chmod 0666 %c"
(2) Активируем новое правило:
$ sudo udevadm control --reload
(3) Копируем данные для работы альтеровского сервиса jtagd:
$ sudo cp /opt/Altera/16.1/quartus/linux64/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts
(4) Чиним известную багу "Unable to read device chain - JTAG chain broken":
$ sudo apt-get install libudev1:i386
$ sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
(5) Подключаем плату FPGA и проверяем, что порт работает:
$ /opt/Altera/16.1/quartus/bin/jtagconfig
1) USB-Blaster [4-1]
  031050DD   10M50DA(.|ES)/10M50DC
vak: (Default)
[personal profile] vak
Измерил скорость работы асинхронного алгоритма вычисления наибольшего общего делителя на Xilinx FPGA. Цикл в 20 итераций выполняется чуть меньше чем за 500 наносекунд. Получается 25 нс на итерацию, или 40M итераций в секунду. Для сравнения, если собрать такую схему на рассыпухе (на микросхемах CD4007), будет 72 микросекунды на 20 итераций, или около 280k в секунду.

Время наебениться

Jul. 19th, 2017 11:33 pm
vak: (Default)
[personal profile] vak
"Как мы здесь живём -
великая тайна.
Все кричат 'вира',
а выходит майна.
Бился лбом в бетон,
думал всё изменится.
Бог с ним...
Время наебениться."

[personal profile] eddy_em
а на деле — около 2.4В. Причем, падение на стабилитроне меняется от напряжения! Вот такие стабилитроны я когда-то брал для защиты портов микроконтроллеров (резистор + стабилитрон — проще, чем резистор + 2 диода).
Дальше )

углекислое

Jul. 18th, 2017 01:37 pm
[personal profile] ex0_planet
Блядь, откуда берутся люди, проветривающие кондиционером комнату? Причем некоторые из них занимают или занимали в недавнем прошлом инженерную должность... Уже трое за последние полгода, и это я еще мало общаюсь ...
vak: (Default)
[personal profile] vak
Довёл я наконец до ума библиотеку асинхронных компонентов для Xilinx FPGA, и затолкал на плату пример вычисления наибольшего общего делителя. В большинстве случаев он даже корректно работает. :) Вводим с переключателей два шестнадцатеричных числа, нажимаем на кнопку, получаем результат. Вот как это выглядит:



Здесь НОД(0x34, 0x27) даёт результат 0xd. В десятичном виде это НОД(52, 39) -> 13.

Но иногда схема врёт. И это ожидаемо, так как для арифметических вычислений я полагаюсь на синтезатор Xilinx Vivado, а он без понятия, что надо генерить "позитивную" логику. Задействовать стандартные примитивы типа CARRY4 нельзя, потому что нарушается монотонность. Получаются вот такие глюки:



Можно видеть, что сигналы out_hidata и out_lodata иногда встают одновременно, и это ошибка. Долдно быть так:



Выход в том, чтобы не доверять арифметические вычисления стандартному синтезатору Verilog, а порождать нужную позитивной логики в структурном виде. Тогда синтезатор уже не сможет ничего испортить.
vak: (Default)
[personal profile] vak
Полезная вещь: интерактивная таблица химических элементов, в картинках.

http://elements.wlonk.com/ElementsTable.htm

Эвфемизм "норвежцы"

Jul. 15th, 2017 12:37 pm
dememax: (коварство)
[personal profile] dememax
Пересматривал "Лэзэнконю", понял, откуда возник этот эвфемизм для одной группы народов семитской этноязыковой группы.
Read more... )
vak: (Default)
[personal profile] vak
Наконец-то нашёл время обработать и выложить отсканированные схемы ЭВМ микро-БЭСМ. Огромное спасибо Татьяне Сапожниковой за присланные материалы.
  • Лист №1, формат A1: A, B, C, D, E, F, G, H
  • Лист №2, формат A1: A, B
  • Лист №3, формат A1: A, B
  • Лист №4, формат A1: A, B
  • Лист №5, формат A1: A, B
  • Лист №6, формат A1: A
  • Лист №7, формат A1: A
  • Лист №8, формат A0: A, B, C, D, E, F
  • Лист №9, рулон формата 3*A0: A, B, C
Весь проект можно скачать целиком по ссылке: micro-besm/archive/master.zip (106 Мбайт).
vak: (Default)
[personal profile] vak

Почему-то не получается скомпилировать...
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Народ предлагает всякие разные решения проблемы.

Profile

32bit_me: (Default)
32bit_me

April 2017

S M T W T F S
      1
2 34 5678
9101112 1314 15
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 04:42 pm
Powered by Dreamwidth Studios