Pull to refresh

Comments 5

Интересно, а в какой степени и для каких задач можно сделать и применить решения на
Verilog, VHDL ресурса rosettacode.org?

Так, к примеру, на этом ресурсе:
21 решённая задача на Verilog
и 11 решённых задач на VHDL
+ 12 решённых задач на SystemVerilog

P.S. Или задачи, представленные для решения на этом ресурсе больше подходят для Софт-процессоров реализованных в составе FPGA?

Сводная подборка информации по проектам Софт процессоров

Но, есть же к примеру проект и сообщество ПО FlProg
где даже в рамках логических элементов делают ПО под контроллеры Ардуино.
(не видно, вроде, проектов где для контроллеров общего применения был бы применён VHDL, Verilog ...)

Я ткнул в несколько примеров в rosettacode и к сожалению эти примеры не имеют вообще никакого отношения к дизайну микросхем на верилоге и просто используют верилог как язык программирования. ну это как использовать автомобиль жигули для занятия любовью на парковке. Ну то есть так можно, диван в нем есть, но это не то, для чего он предназначен.

Например http://rosettacode.org/wiki/100_doors#Verilog

module main;
  integer i;
 
  initial begin
    $display("Las siguientes puertas están abiertas:");
    for (i=1; i<=10; i=i+1) if (i%i*i<11) $display(i*i);
    $finish ;
  end
endmodule

Где здесь сигналы, логика, регистры, стадии конвейера, иерархия модулей итд? Что это вообще демонстрирует? Что в нем можно делать аналог printf для написания тестов.

Еще хуже сложение http://rosettacode.org/wiki/A%2BB#Verilog

В GrayCode приведено использование как выше и модуль с логикой. Второе можно использовать, но так как оно приведено вместе с первым, то для начинающего не понятно что с этим делать - писать как в первом варианте или во втором? При том что первый вариант не имеет никакого отношения к реальному использованию Verilog http://rosettacode.org/wiki/Gray_code#Verilog

Вот это вообще не пример, просто ошметки конструкций написанный человеком не в теме (command? он что, думает что верилог - это скриптовый язык?) http://rosettacode.org/wiki/Conditional_structures#Verilog

C VHDL и SystemVerilog то же самое - люди не в теме взяли справочник по языку, выдернули из него понятное лично для них по аналогии с другими языками и написали нечто, что уводит от реального использования. Если увидите там хоть один реальноподобный пример, кроме модульной версии gray counter я привел выше - покажите, мне интересно что там еще можно нарыть. Половина примера из 10 случайно ткнутых.

*** Сводная подборка информации по проектам Софт процессоров ***

Анализировать код софт-процессора для новичка, который не знает что такое последовательностная логика, как она выражается в верилоге (always @ (posedge clock)) и во что превращается (D-триггеры) так же бесполезно, как анализировать код Си-компилятора, даже простого типа LCC или PCC - человеку, который не знает что такое указатель, стек, дерево выражения или парсирование. И не умеет писать на Си.

Более того, софт-процессор софт-процессору рознь.

Прежде всего, софт-процессор используется в двух контекстах:

  1. Чтобы противопоставить процессор реализованный в FPGA, процессору, реализованному в ASIC, например стоящему рядом с FPGA ядру ARM в Zynq. Проблема в том, что и для первого и для второго процессоры пишутся на верилоге, то есть между ними нет приниципиальной разницы, только всякие мелочи типа использование специального макро DSP48 в Xilinx FPGA для оптимизации ALU.

  2. В компаниях процессорного IP, например MIPS Technologies где я работал, одно и то же ядро (например MIPS 4K используемое в микроконтроллерах Microchip PIC32) могло продаваться и как soft core, и hardened core (то есть не с исходниками а в виде "черного ящика" инстанциируемого в системе на кристалле заказчика на этапе физического проектирования). Принципиальной разницы тут нет - это как продавать программу либо в исходниках на Си, либо в виде скопилированной библиотеки - .lib, .dll, .so.

Так вот возвращаясь к вашей табличке, софт-процессор софт-процессору рознь. На одних (schoolRISCV) который мы используем в курсе, можно понять идею процессора, потому что он очень маленький (300 строк на верилоге). Если же вы возмете например процессорное ядро с конвейером используемое в микроконтроллерах, или не дай бог ядро T1 выпущенное на волю Sun-ом, то там для новичка, который вообще не знает концепции конвейера - это просто темная масса кода в десятки тысяч строк (есть в тысячи и в сотни тысяч, но идея понятна)

*** Но, есть же к примеру проект и сообщество ПО FlProg
где даже в рамках логических элементов делают ПО под контроллеры Ардуино. (не видно, вроде, проектов где для контроллеров общего применения был бы применён VHDL, Verilog ...) ***

Я не разбирал, что это, похоже что-то очередное no-code программирование. Если это так, это не имеет вообще никакого отношения к вопросу. Программирование микроконтроллера - это написание программы, кода, который превращается в цепочку инструкций, которые процессор вытаскивает из памяти и изменяет по этому поводу свое состояние. Проектирование на верилоге на уровне регистровых передач - это в частности конструирование самого процессора.

Разница как между умением водить автомобиль (программирование) и умением проектировать его двигатель (проектирование на уровне регистровых передач).

Я нарисовал для этого вот такие поясняющие картинки:

Sign up to leave a comment.

Articles