vak: (Улыбка)
[personal profile] vak
В поисках неортодоксальных подходов к разработке хардвера, в частности в области асинхронной логики, я неожиданно для себя открыл интересный язык Balsa, и стоящую за ним методику, называемую 'Handshake Circuits'. Взгляните, вот программа вычисления наибольшего общего делителя на Бальсе:
procedure GCD (
    input x: byte;
    input y: byte;
    output z: byte
) is
local 
    variable a, b: byte
begin
    loop
        x -> a || y -> b;
        loop
            while a /= b then
            begin
                if a > b
                then a := (a - b as byte)
                else b := (b - a as byte)
                end
            end
        end;
        z <- b
    end
end
При компиляции она превращается в такую асинхронную схему:

Дальше она преобразуется в Verilog и синтезируется в собственно микросхему. Разве не прелесть? Не одним верилогом жив человек! :)

Бальса разрабатывалась в 1998-2010 годах в университете Манчестера. Её исходные тексты доступны на сайте университета на условиях лицензии GPL. Подход подробно описан в диссертации Andrew Barsley "Balsa: An Asynchronous Circuit Synthesis System".

Date: 2016-09-08 06:19 (UTC)
From: [identity profile] andrey-yurin.livejournal.com
До чего, всё таки, не привычно асинхронную логику видеть. Как раз пару дней назад читал статью: "sorting network on FPGA". Потребовалось сделать быструю сортировку массива 16х16 элементов. Ну так вот как следует из дизайна, то при применении чисто комбинационной схемы в "классическом" САПР пропускная способность получалась из-за задержек порядка 1.66 GB/s. А после "fully pipelined" она выростала до 7.9 GB/s. Это я не к тому, что "только синхронная логика". А к тому, что видеть такие здоровые комбинационные схемы как минимум непривычно. Ибо ВСЯ виденная мной литература для практических применений твердит - используйте конвейер.

Date: 2016-09-08 07:03 (UTC)
From: [identity profile] dom3d.livejournal.com
Непонятно, но здорово!

Date: 2016-09-08 08:17 (UTC)
From: [identity profile] dom3d.livejournal.com
Когда я увидел пример первой программы для графической станции фирмы Silicon Graphics, то не понял ни одной строки когда.
Страшно расстроился. Спросить было некого.

Date: 2016-09-08 09:27 (UTC)
From: [identity profile] v1adis1av.livejournal.com
Можно с алголом-60 перепутать.

Date: 2016-09-08 16:36 (UTC)
From: [identity profile] v1adis1av.livejournal.com
Так сложилось, что у меня это был первый язык программирования, но я его забыл давно и прочно ))

Date: 2016-09-09 22:11 (UTC)
From: [identity profile] oppad (from livejournal.com)
я правильно понимаю, что картинки это, так называемые, сети Петри (Petry net)? а FSM или графы это вырожденные случаи этих сетей. конечно, интереснее было бы гифку посмотреть :)