vak: (Default)
"Как мы здесь живём -
великая тайна.
Все кричат 'вира',
а выходит майна.
Бился лбом в бетон,
думал всё изменится.
Бог с ним...
Время наебениться."

vak: (Default)
Довёл я наконец до ума библиотеку асинхронных компонентов для Xilinx FPGA, и затолкал на плату пример вычисления наибольшего общего делителя. В большинстве случаев он даже корректно работает. :) Вводим с переключателей два шестнадцатеричных числа, нажимаем на кнопку, получаем результат. Вот как это выглядит:



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

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



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



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

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

vak: (Default)
Наконец-то нашёл время обработать и выложить отсканированные схемы ЭВМ микро-БЭСМ. Огромное спасибо Татьяне Сапожниковой за присланные материалы.
  • Лист №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)

Почему-то не получается скомпилировать...
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Народ предлагает всякие разные решения проблемы.
vak: (Default)
После посещения тюрьмы Алькатрас стало понятно, кто первым придумал офисный стиль опенспейс.
vak: (Default)
Появилась статья, суммирующая положительный опыт применения открытого процессорного ядра MIPSfpga в образовательных целях.

https://www.ncsu.edu/wcae/ISCA2017/papers/chaver.pdf
vak: (Default)
Я наконец доотладил библиотеку асинхронных компонентов, так что заработала схема вычисления наибольшего общего делителя. На рисунке можно видеть, как идёт процесс для НОД(203, 116) -> 29.
  1. Ввод X := 203 и Y := 116
  2. Вычитание X := X - Y = 87
  3. Вычитание Y := Y - X = 29
  4. Вычитание X := X - Y = 58
  5. Вычитание X := X - Y = 29
  6. Вывод Out := 29



Теперь надо прошить эту схему в FPGA и проверить на реальном железе.
vak: (Default)
Знаете ли вы, что парк Пескадеро и парк Big Basin смыкаются в одной точке? Смычка происходит в южной части хребта Butano Ridge. Отсюда берёт начало ручей Бутано.



В эту точку теоретически можно добраться из парка Portola Redwoods, но это заняло бы часов пять, и подъём там довольно серьёзный, порядка 2500 футов. Сегодня мы опробовали более простой путь. Не доезжая основной парковки парка Big Basin есть место, где тропа Skyline-to-the-Sea пересекает 236-е шоссе. Здесь на обочине есть места для парковки четырёх машин: одно справа и три чуть дальше слева.



Через какое-то время сворачиваем на Basin Trail и за пару часов приятной прогулки оказываемся у цели. Обратно можно вернуться по дороге, минут за сорок.



Вот такие странные деревья попадаются на Butano Ridge.

vak: (Default)
Обычно под асинхронным триггером понимают так называемую RS-защёлку, состоящую из пары соединённых крест-накрест элементов И-НЕ:



Работа такого триггера описывается таблицей:
/Set  /Reset  Действие
---------------------------
  0     0     Запрещено
  1     0     Q = 0
  0     1     Q = 1
  1     1     Без изменения
Недостаток этой схемы состоит в наличии запрещенного состояния: когда на вход поступают нули, выход оказывается в неопределённом, или хуже того, в метастабильном состоянии.

Между тем, гораздо более удобным оказывается схема, состоящая из элементов И + ИЛИ:



Функционирует эта схема похожим образом, но без неопределённого состояния:
 Set  Enable  Действие
---------------------------
  x     0     Q = 0
  1     1     Q = 1
  0     1     Без изменения
Как можно заметить, защёлка И+ИЛИ работает в "положительной" логике: передний фронт на входе превращается в передний фронт на выходе и наоборот, отрицательный фронт превращается в отрицательный. Комбинируя с другой положительной логикой, можно получить все нужные примитивы для асинхронного дизайна. К примеру, добавив на входах пару элементов И и ИЛИ, получаем известный С-элемент Мюллера.
vak: (Default)
Через два месяца, 21 августа ожидается полное солнечное затмение. Ради такого дела мы собираемся двинуть на север, в штат Орегон, чтобы насладиться этим редким зрелищем в полной мере. Вот карта с обозначенной полосой полной фазы затмения:

vak: (Default)
По ходу дела пришлось вносить коррективы в изначальный маршрут. Выехали мы чуть позднее чем планировали, а вернуться хотелось немного пораньше. Реальный путь получился такой:



Гугл утверждает, что этот маршрут проходится за 2 ч 24 мин. Оптимист однако! Тут перепад высоты 1207 футов. Мы шли где-то 4 часа.



Ежевики поели изрядно. Её тут вагон, основная масса не созрела еще. Приходите через неделю, будет чем полакомиться. :)
vak: (Default)
Один из вариантов завтрашнего похода. На месте уточним, скорректируем согласно пожеланиям трудящихся. У Юры на самом деле имеется совершенно другой грандиозный маршрут, но я замысливаю уйти в раскол. :)