Перейти к содержанию
    

  

70 проголосовавших

  1. 1. Как следует называть код, написанный на HDL?

    • Программа
      10
    • Схема
      1
    • Описание схемы
      47
    • Другой вариант
      12


А почему модели-то? Может все таки устройства? В общем, это было бы верно - просто прямой дословный перевод аббревиатуры HDL - язык описания устройств.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

голосую за "описание".

 

ЗЫ:при том подчёркиваю - просто "описание", а не "описание схемы" (вопрос "описание чего" решается в зависимости от того, что именно описываешь), потому что на языках описания, можно описывать

1) что угодно, хоть погоду (другое дело у ХДЛ есть специализация на аппаратуре, но это ни чуть не мешает описать на них например модель движения транспорта на перекрёстке, или игру в шахматы)

2) как угодно - структурно, поведенчески, поточно(?), ещё_какое_нибудь_красивое_слово;

3) чтобы использовать там где угодно - в моделировании (описание модели), верификации (описание утверждения /тестбенч - это по сути высокоуровневое утверждение, даже если не описано на языках утверждений типа PSL/), синтезе (описание устройства /термин устройства здесь в широком смысле, как например во фразе "устройство дома"/)

ЗЗЫ: кстати против термина "программа" в некоторых контекстах не имею ничего

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во первых потому, что оно не является последовательностью, а скорее параллельностью :), а последовательность с дельта-циклами в моделяторе - лишь приближение к истинно параллельному анализу описанного устройства. Это как в математике - решение задачи численными методами, а не нахождение решения аналитически. То есть "описание действий" и "описание последовательности действий" - это две большие разницы. Первое программой не является, а второе - является.

Программа - алгоритм, записанный на каком-либо языке (обычно на специализированном, предназначенном для этого - ЯП). Алгоритм - последовательность действий, приводящая к трубуемому результату. Последовательность - да. Но в данном контексте это последовательность не того сорта, когда всякое действие строго следует за другим, а последовательность в смысле упорядоченной совокупности действий. Т.е. иными словами: алгоритм - это упорядоченная совокупность действий... Действия идут в определенном порядке для достижения результата, но нет строгого требования, чтобы всякое действие начиналось только тогда, когда завершено предыдущее. И ничего не мешает выполнять действия хоть параллельно, если это не нарушает упорядоченность алгоритма.

 

Пример последовательного алгоритма на HDL (в ПЛИС, скажем): Finite State Machine.

 

Пример параллельного алгоритма на ЯП и процессоре, который вы упоминали, TMS320C64xx: в нем 8 вычислительных устройств, которые можно заставить работать параллельно, действия кодируются в одной длинной параллельной инструкции. И полно на данный момент процессоров, которые умеют выполнять пачку действий параллельно. И что, это не программа уже получается, что-ли?

 

Во вторых потому, что устройство, описанное на HDL, не исполняется на вычислительном устройстве. На вычислительном устройстве можно лишь смоделировать работу устройства, описанного на HDL. Но не выполнить HDL.

Во-первых, приложение к некоему вычислительному устройству - это весьма частный случай. Алгоритмы - они на разных исполнительных устройствах (и не только) могут выполняться, не обязательно именно вычислительных.

 

Во-вторых, работа симулятора - в чистом виде выполнение алгоритма на вычислительном устройстве - компьютере.

 

Что касается исходного вопроса, то мои пять копеек: вопрос такой спорный и неоднозначный потому, что сравниваются несравнимые вещи. Программа - это алгоритм. А схема - это реализация (одна из возможных) алгоритма. Таким образом, программа и схема просто находятся на разных уровнях иерархии, и сравнивать их "x vs. y" некорректно.

 

По поводу того, является ли код на верилоге программой или схемой, однозначного ответа тоже нет. Зависит от контекста. Например, нетлист на верилоге уже сильно похож на схему. В то же время поведенческое описание скорее является программой. Тут как раз и проявляется та разница в уровнях абстракции. Если говорить о верилог-описании в том виде, который используется для ввода, то вариант "программа" куда ближе, чем вариант "схема", хотя лично мне тоже больше нравится вариант "поведенческая модель". Программа как алгортим - это слишком обще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Программа - алгоритм, записанный на каком-либо языке

Во первых - вовсе не обязательно на каком-то языке. Программа это просто последовательность инструкций (действий), подаваемая на вход какого-то вычислительного или исполнительного устройства. Инструкции могут быть, и чаще всего представлены машинными кодами. Могут быть в каком либо другом виде (фантазия безгранична) - но суть программы - быть последовательно во времени по частям (инструкциям, действиям) поданной на исполнительное или вычислительное устройство. Программа может быть описана и на языке высокого уровня, по аналогии с поведенческим описанием схемы, а может и на низком, на ассемблере/в кодах, по аналогии с нетлистом/кодом/топологией.

Во вторых - программа это не алгоритм. Это одна из множества возможных реализаций алгоритма. Если алгоритм реализован при помощи последовательной подачи инструкций на вычислительное/исполнительное устройство (или одновременной подачи нескольких потоков инструкций на несколько устройств) - то алгоритм реализован программно (software). Если алгоритм преобразован собственно исполнительное устройство - то он реализован аппаратно (hardware).

Алгоритм -

Со всем тем, что касается алгоритма - согласен, все так.

Пример параллельного алгоритма на ЯП и процессоре, который вы упоминали, TMS320C64xx: в нем 8 вычислительных устройств, которые можно заставить работать параллельно, действия кодируются в одной длинной параллельной инструкции. И полно на данный момент процессоров, которые умеют выполнять пачку действий параллельно. И что, это не программа уже получается, что-ли?

Это 8 одновременно исполняемых программ, которые обмениваются между собой данными. На 8 вычислительных устройств подается 8 потоков инструкций одновременно. Ну или одна 8-мипоточная программа, что есть синоним.

Во-первых, приложение к некоему вычислительному устройству - это весьма частный случай. Алгоритмы - они на разных исполнительных устройствах (и не только) могут выполняться, не обязательно именно вычислительных.

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

Во-вторых, работа симулятора - в чистом виде выполнение алгоритма на вычислительном устройстве - компьютере.

Да, только программой является не само описание, а симулятор, который при помощи численных методов анализирует описание как единое целое. Это еще в том частном случае, если симулятор программный, а не вот такой http://www.cadence.com/products/fv/xtreme_...es/default.aspx, в котором аппаратно реализована симуляция, в который загружается непосредственно схема описанного устройства с контрольными точками для снятия временных диаграмм.

Что касается исходного вопроса, то мои пять копеек: вопрос такой спорный и неоднозначный потому, что сравниваются несравнимые вещи. Программа - это алгоритм. А схема - это реализация (одна из возможных) алгоритма. Таким образом, программа и схема просто находятся на разных уровнях иерархии, и сравнивать их "x vs. y" некорректно.

Нет. И программа, и схема это различные методы реализации алгоритма, и находятся они на одном уровне иерархии.

 

Правда есть нюанс... Схема, как и ее описание, может в себе содержать устройство, исполняющее программу, и саму программу. А вот наоборот, программа в себе устройство содержать не может. Разве что только его приближенную модель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему модели-то? Может все таки устройства? В общем, это было бы верно - просто прямой дословный перевод аббревиатуры HDL - язык описания устройств.

 

 

да... тут из-за двойственности...

xHDL используется ведь не только для реализации, но и для моделирования

 

Еще ... если описываем существующее устройство - например MCU-51, то описание есть "модель"

 

Вообще-то, что тут думать...

Разработчики VHDL явно назвали - язык описания аппаратуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во первых - вовсе не обязательно на каком-то языке.

Именно на языке. Алгоритм - вещь вообще абстрактная, он может спокойно жить в голове у человека. А вот будучи записанным с помощью языка он превращается в программу.

 

Программа это просто последовательность инструкций (действий), подаваемая на вход какого-то вычислительного или исполнительного устройства. Инструкции могут быть, и чаще всего представлены машинными кодами. Могут быть в каком либо другом виде (фантазия безгранична) - но суть программы - быть последовательно во времени по частям (инструкциям, действиям) поданной на исполнительное или вычислительное устройство.

Да, особенно показательно это выглядит при использовании функциональных языков с их lazy вычислениями. :)

 

Во вторых - программа это не алгоритм.

Вот тут, похоже, и кроется корень разногласий. :) Программа - это алгоритм, записанный на языке. Алгоритм - не программа, но программа - алгоритм.

 

 

Это одна из множества возможных реализаций алгоритма. Если алгоритм реализован при помощи последовательной подачи инструкций на вычислительное/исполнительное устройство (или одновременной подачи нескольких потоков инструкций на несколько устройств) - то алгоритм реализован программно (software). Если алгоритм преобразован собственно исполнительное устройство - то он реализован аппаратно (hardware).

Очень эфемерная граница. Где разница между совокупностью цифровых автоматов, представляющих собой, например, ядро микроконтроллера с памятью, откуда поступают так называемые инструкции, и набором цифровых автоматов в ПЛИС, которые тоже читают некие коды из внутренней памяти ПЛИС и выполняют действия в соответсвии с этими кодами?

 

Это 8 одновременно исполняемых программ, которые обмениваются между собой данными. На 8 вычислительных устройств подается 8 потоков инструкций одновременно. Ну или одна 8-мипоточная программа, что есть синоним.

Ну, тогда у меня в ПЛИС работает несколько десятков/сотен программ (каждый always блок). Просто эн-поточная программа. :biggrin:

 

Да, только программой является не само описание, а симулятор, который при помощи численных методов анализирует описание как единое целое.

Мда... А вот у меня скрипт на языке Python, он программа? Видимо, нет, программа - это интерпретатор python.exe, а этот скрипт - не программа... Может, схема? :biggrin:

 

Нет. И программа, и схема это различные методы реализации алгоритма, и находятся они на одном уровне иерархии.

Схема - это вообще графическое представление объектов и их связей. Не более того. Любая схема - хоть функциональная, хоть принципиальная. Схема никак не может быть алгоритмом, только его реализацией. А вот программа - вполне может быть алгоритмом. Особенно (и как правило) на высоком уровне. Как пример - программа на функциональном ЯП. Программа - это более абстрактное понятие, нежели схема. Не случайно большие с сложные алгоритмы реализуются на языках, а не на схемах - именно благодаря большему уровню абстракции, что дает дает возможность не грузить мозг деталями реализации. Т.ч. схема и программа в общем виде - это отнюдь не одного уровня понятия. Хотя программа вполне может быть детализованой до схемы любого уровня. Но вот обратное неверно.

 

Правда есть нюанс... Схема, как и ее описание, может в себе содержать устройство, исполняющее программу, и саму программу. А вот наоборот, программа в себе устройство содержать не может. Разве что только его приближенную модель.

Да, тут вообще сплошные нюансы. И спор чаще всего сводится к спору о терминах. :) Суть все понимают одинаково, но слова для этого применяют разные. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Именно на языке. Алгоритм - вещь вообще абстрактная, он может спокойно жить в голове у человека. А вот будучи записанным с помощью языка он превращается в программу.

Да без языка - легко. Машинные коды это не язык. Это представление программы в виде последовательности. И в голове у человека может жить и программа, ни на каком носителе и ни на каком языке не записанная, если он себе представляет какую-то последовательность каких-то действий, приводящих к выполнению задачи, представленной алгоритмом.

Алгоритм - не программа, но программа - алгоритм.

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

 

Очень эфемерная граница. Где разница между совокупностью цифровых автоматов, представляющих собой, например, ядро микроконтроллера с памятью, откуда поступают так называемые инструкции и набором цифровых автоматов в ПЛИС, которые тоже читают некие коды из внутренней памяти ПЛИС и выполняют дейтсвия в соответсвии с этими кодами?

Я уже говорил выше, что любое устройство может внутри себя содержать одно или более более мелких устройств, в том числе исполняющих программу, ничего в этом зазорного нет, что при помощи языка описания устройств описано соединение цифрового автомата с памятью, в которой хранится программа. И совершенно не важно, как эта схема реализована потом - в виде припаянной внешней ПЗУ к процессору, или все внутри ПЛИС, или все на кристалле на транзисторном уровне, или вообще в виде кучи труб с водой и клапанов. Так что между двумя перечисленными Вами вещами границы нет. Это просто два эквивалентных (если они работают согласно одинаковых алгоритмов) устройства, реализованных при помощи разных технических решений.

Ну, тогда у меня в ПЛИС работает несколько десятков/сотен программ (каждый always блок). Просто эн-поточная программа. :biggrin:

always-блок никак не может быть программой. Он может быть устройством, исполняющим программу, он может быть одновременно комбинацией из устройства, исполняющего программу и хранилища, в котором хранится набор инструкций, который является программой. Но никак не программой как таковой. То, что внутри ПЛИС работает целая туча устройств, каждое из которых управляется своей программой - это норма жизни, это так и есть, это абсолютно верно. Это и есть основное преимущество ПЛИС перед процессорами.

Мда... А вот у меня скрипт на языке Python, он программа? Видимо, нет, программа - это интерпретатор python.exe, а этот скрипт - не программа... Может, схема? :biggrin:

Да, это программа, так как это последовательность действий, выполняемая исполнительным устройством, интерпретатором, который в свою очередь тоже программа.

Схема никак не может быть алгоритмом, только его реализацией.

А вот программа - вполне может быть алгоритмом.

Ошибаетесь. И то, и другое может быть лишь реализацией алгоритма, или его абстрактным представлением. Возьмем классическое определение алгоритма по Кнуту: "Конечный набор правил, который определяет.....". И этот конечный набор правил в общем случае не может быть описан единственным способом ни в виде программы, ни в виде схемы, ни в виде описания устройства, этот конечный набор правил может быть описан различными схемам, различными программами, что соответствует множеству реализаций алгоритма, как программных, так и схемотехнических.

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

Да одного уровня, одного. В свое время на уровне схем решались значительно более сложные задачи, нежели потом на полученных по этим схемам (без применения программ вообще) устройствах исполнялись программы. Как вот и сейчас - просто для упрощения задач по разработке устройств и систем в целов придумали замену схемам - языки описания аппаратуры. Так как схемы стали слишком сложны. Раньше в схему включали ПЗУ с программой, теперь ее описывают на языке описания аппаратуры, как массив данных. И программирование идет параллельным путем. Раньше писали в кодах, теперь придумали для облегчения жизни кучу разных ЯВУ, чтобы себе жизнь облегчить, так как в кодах слишком сложно стало. Но эти две вещи не пересекаются друг с другом, за исключением того, что устройство, представленное как схемой (процессор соединен с ПЗУ), так и описанием схемы (автомат, управляемый последовательностью команд, поступающих их массива данных), может содержать в себе программу. Но наоборот - нет, программа в себе может содержать лишь приближенную модель устройства, пусть даже исполняющего другую программу, но устроство содержать не может.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да без языка - легко. Машинные коды это не язык. Это представление программы в виде последовательности.

Почему не язык? Вполне себе язык, в котором словами являются коды.

 

С этим я согласен, но с одной поправной - программа это одна из возможных реализаций алгоритма. В этом смысле можно сказать, что программа - алгоритм, т.е. его представление в виде последовательности действий,

Нет, программа - это не реализация, это форма представления алгоритма.

 

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

А вот устройство - это уже реализация алгоритма и не более.

 

Я уже говорил выше, что любое устройство может внутри себя содержать одно или более более мелких устройств, в том числе исполняющих программу, ничего в этом зазорного нет, что при помощи языка описания устройств описано соединение цифрового автомата с памятью, в которой хранится программа. И совершенно не важно, как эта схема реализована потом - в виде припаянной внешней ПЗУ к процессору, или все внутри ПЛИС, или все на кристалле на транзисторном уровне, или вообще в виде кучи труб с водой и клапанов. Так что между двумя перечисленными Вами вещами границы нет. Это просто два эквивалентных (если они работают согласно одинаковых алгоритмов) устройства, реализованных при помощи разных технических решений.

Как же нет, если первый вариант у меня получен из кода на С++, а второй - из кода на Verilog? По-вашему же выходит, что первое - это программа, а второе - схема. :)

 

always-блок никак не может быть программой. Он может быть устройством, исполняющим программу, он может быть одновременно комбинацией из устройства, исполняющего программу и хранилища, в котором хранится набор инструкций, который является программой. Но никак не программой как таковой.

Я хотел сказать, что на уровне always-блоков я могу описать все эти цифровые автоматы, которые будут выполнять работу на основе поступающих из внутренней памяти кодов. Т.е. это будет реализация типа как software, но описанная тем не менее, якобы как hardware на HDL. :) В этом смысле это описание - как множество работающих параллельно программ, ничем не отличается от упомянутого TMS'а.

 

То, что внутри ПЛИС работает целая туча устройств, каждое из которых управляется своей программой - это норма жизни, это так и есть, это абсолютно верно. Это и есть основное преимущество ПЛИС перед процессорами.

Да внутри ПЛИС вообще нет ни программ, ни схем. Там есть "железо", которое работает, как его запрограммировали. :)

 

 

Да, это программа, так как это последовательность действий, выполняемая исполнительным устройством, интерпретатором, который в свою очередь тоже программа.

Тогда мне не понятно, почему мой тестбенч, написанный на Verilog (или SystemVerilog), и исполняемый симулятором, не является программой?

 

Да одного уровня, одного. В свое время на уровне схем решались значительно более сложные задачи, нежели потом на полученных по этим схемам (без применения программ вообще) устройствах исполнялись программы. Как вот и сейчас - просто для упрощения задач по разработке устройств и систем в целов придумали замену схемам - языки описания аппаратуры.

Вот! :biggrin:

 

Так как схемы стали слишком сложны.

Вот! :biggrin:

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как же нет, если первый вариант у меня получен из кода на С++, а второй - из кода на Verilog? По-вашему же выходит, что первое - это программа, а второе - схема. :)

Не обманивайте! Цитирую Ваши слова "ядро микроконтроллера с памятью, откуда поступают так называемые инструкции" - это Ваш первый вариант, и из этого вовсе не следует, что эта система описана на C++. Даже следует большее, что это не может быть описано на C++, а описано либо схемой, либо языком описания аппаратуры. А уж на чем была написана программа, исполняемая в первом случае ядром микроконтроллера, во втором - автоматом ПЛИС, это уже не важно, обе могли быть написаны на C++, и после компиляции полученный машинный код вставлен в верилог-описание, или приложен в виде распечатки к схеме с ПЗУ.

Я хотел сказать, что на уровне always-блоков я могу описать все эти цифровые автоматы, которые будут выполнять работу на основе поступающих из внутренней памяти кодов. Т.е. это будет реализация типа как software, но описанная тем не менее, якобы как hardware на HDL. :)

Да, разумеется, на HDL можно описать устройство, исполняющее программу вместе с самой программой на раз, легко. Внутрь описания можно даже включить любую программу в виде машинных кодов. Но никак нельзя сделать наоборот - программой описать устройство (а не его приближенную модель). Точно так же, как и невозможно на HDL описать программу без устройства (пусть даже ее не исполняющего, а только хранящего).

Да внутри ПЛИС вообще нет ни программ, ни схем. Там есть "железо", которое работает, как его запрограммировали. :)

Это кто это Вам такое сказал? У подавляющего большинства производителей ПЛИС - их конфигурируют, а не программируют (подразумевая под этим процесс загрузки конфигурационного файла в нее). То, что термин "программирование" стал обозначать кроме процесса составления программы еще и занесение в долговременную память любых данных совершенно ни о чем не говорит, кроме того, что просто так получилось. А у многих внутри ПЛИС реализованы программные автоматы, процессорные ядра, и еще много-много чего, работающего по программам.

Тогда мне не понятно, почему мой тестбенч, написанный на Verilog (или SystemVerilog), и исполняемый симулятором, не является программой?

Потому, что он не является последовательностью действий, а есть описание устройства, тестирующего что-то там. И отличие моделирования поведения устройства от исполнения программы в том, что при исполнении программы исполнительное устройство, будь оно хоть микропроцессор, хоть интерпретатор, исполняет команду за командой, а при моделировании устройства программа-моделировщик рассчитывает следующее состояние системы в целом через какой-то квант времени в зависимости от предыдущего состояния и внешних воздействий, и этот процесс не является исполнением программы, а является процессом рассчета состояния модели. Именно по этому тестбенч, которым описано тестирующее устройство, и анализируется симулятором численными методами в целом, как одна большая математическая формула, не является программой. Или Вы хотите сказать, что математическая модель устройства, представленная пачкой формул на бумаге, это тоже программа, потому, что эти формулы матлабом типа-могут-исполняться? Нет. Математическая модель это одно, описание устройства или схема это другое, хоть и довольно близкое к мат-модели, а программа - третье.

Не случайно ли произошел переход от ввода схем к вводу на языках? Не потому ли на языках проще, что на них уровень абстракции выше?

Да, именно по этому. И по этому же при составлении программ произошел переход от кодов к ЯВУ.

Не потому ли уровень абстракции выше, что на языке - это программа, которая уже есть непосредственно алгоритм, в отличие от схемы, которая - не алгорим, а только лишь его реализация?

Нет. Не по этому. Для того, чтобы называться программой, вовсе не надо никакого уровня абстракции. И уровень абстракции выше не потому, что это программа, или не программа, а просто потому, что он выше. Понятие алгоритма - это набор правил. Программа- это последовательность действий, удовлетворяющих набору правил, и не важно на каком она языке. Схема - может тоже отображать последовательность действий, удовлетворяющих набору правил. Если это, к примеру, схематическое изображение алгоритма в виде стрелочек и квадратиков. И в этом случае, можно даже заявить, что эта схема есть сам алгоритм (хотя это тоже не совсем так). А может схема представлять и устройство, удовлетворяющее этому набору правил, если это, например, соединенный микропроцессор с ПЗУ, даже если внутри ПЗУ имеется программа. Точно так же может быть и схема на транзисторах, удовлетворяющих этому набору правил. Все то, что касается схем, полностью применимо и к языкам описания аппаратуры, благо они представляют одно и то же в разном виде. В общем Вы смешали мух с котлетами, божьим даром и яичницой. Путь разработки устройств начинался с описания устройства схемой и пришел к описанию устройства на HDL, что эквивалентно соответствующей схеме, и всегда HDL-описание можно представить схемой и наоборот, схему HDL-описанием. И, независимо, путь разработки программ для устройств, их исполняющих, начинался с написания их в кодах, потом ассемблер, потом ЯВУ. И всегда можно преобразовать программу, представленную одним из этих представлений в эквивалентное другое. Но никак нельзя программу преобразовать в устройство, и нельзя устройство преобразовать в программу. Можно только приближенно смоделировать одно другим и наоборот. Устройством можно выполнить программу, а программой можно просчитать работу устройства.

И, главное:

- Алгоритм <=> набор правил.

- Программа <=> последовательность действий, удовлетворяющая набору правил.

- Схема или HDL-описание <=> описание устройства в целом, удовлетворяющего набору правил.

не может быть ни схема, ни программа, ни HDL-описание собственно алгоритмом.

 

Вы, это, классику-то читали? Винера, Кнута... Или сами свою теорию по ходу дела придумываете? Если так, то желаю успеха в этой научной работе, но я тут только оппонент :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это кто это Вам такое сказал? У подавляющего большинства производителей ПЛИС - их конфигурируют, а не программируют (подразумевая под этим процесс загрузки конфигурационного файла в нее). То, что термин "программирование" стал обозначать кроме процесса составления программы еще и занесение в долговременную память любых данных совершенно ни о чем не говорит, кроме того, что просто так получилось.

Осталось понять, почему ПЛИС - программирумая логическая интегральная схема, а не конфигурируемая логическая интегральная схема - КЛИС. :lol:

 

Потому, что он не является последовательностью действий, а есть описание устройства, тестирующего что-то там. И отличие моделирования поведения устройства от исполнения программы в том, что при исполнении программы исполнительное устройство, будь оно хоть микропроцессор, хоть интерпретатор, исполняет команду за командой, а при моделировании устройства программа-моделировщик рассчитывает следующее состояние системы в целом через какой-то квант времени в зависимости от предыдущего состояния и внешних воздействий, и этот процесс не является исполнением программы, а является процессом рассчета состояния модели. Именно по этому тестбенч, которым описано тестирующее устройство, и анализируется симулятором численными методами в целом, как одна большая математическая формула, не является программой.

Т.е. если я напишу программу на С++ (или на питоне), которая будет моделировать какой-либо процесс, то это будет не программа? А что? Устройство? Схема?

 

И, главное:

- Алгоритм <=> набор правил.

- Программа <=> последовательность действий, удовлетворяющая набору правил.

- Схема или HDL-описание <=> описание устройства в целом, удовлетворяющего набору правил.

не может быть ни схема, ни программа, ни HDL-описание собственно алгоритмом.

 

Вы, это, классику-то читали? Винера, Кнута... Или сами свою теорию по ходу дела придумываете? Если так, то желаю успеха в этой научной работе, но я тут только оппонент :)

Ну, вот чего не хотелось бы, так это: 1) взывать к авторитетам; 2) переходить на личности. :)

 

Но раз уж упомянули сих монументальных дядек, то "Единого «истинного» определения понятия «алгоритм» нет." И далее:

 

«Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность». (Д. Э. Кнут)

 

«Алгоритм — это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи». (А. Колмогоров)

 

«Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату». (А. Марков)

 

«Алгоритм — точное предписание о выполнении в определенном порядке некоторой системы операций, ведущих к решению всех задач данного типа». (Философский словарь / Под ред. М. М. Розенталя)

 

«Алгоритм — строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд».

 

«Алгоритм — это последовательность действий, направленных на получение определённого результата за конечное число шагов».

 

«Алгоритм — однозначно, доступно и кратко (условные понятия — названия этапа) описанная последовательность процедур для воспроизводства процесса с обусловленным задачей алгоритма результатом при заданных начальных условиях. Универсальность (или специализация) алгоритма определяется применимостью и надёжностью данного алгоритма для решения нестандартных задач».

 

«Алгоритм — это понятные и точные предписания исполнителю совершить конечное число шагов, направленных на решение поставленной задачи».

 

«Алгоритм — это некоторый конечный набор рассчитанных на определённого исполнителя операций в результате выполнения которых через определённое число шагов может быть достигнута поставленная цель или решена задача определённого типа».

 

«Алгоритм — это последовательность действий, либо приводящая к решению задачи, либо поясняющая почему это решение получить нельзя».

Выбирайте на вкус. И уж точно алгорим - это далеко не просто набор правил. Но описание именно шагов, необходимых для достижения результата. Ну, а программа - форма представления алгоритма.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осталось понять, почему ПЛИС - программирумая логическая интегральная схема, а не конфигурируемая логическая интегральная схема - КЛИС. :lol:

Потому, что так исторически сложилось, что процесс записи любых данных в память стал именоваться "программированием". А по-нашему так вообще "прошиванием". Это факт. А еще можно вспомнить другие отвлеченные вещи, например почему всякие там члены партии и правительства программы пишут - тоже что ли программированием увлекаются :) Они, кстати, и схемы составлять умеют, причем замудренно-сложные... И устройство системы на языке каком нибудь, особенно русско-матерном, описать могут :)

Т.е. если я напишу программу на С++ (или на питоне), которая будет моделировать какой-либо процесс, то это будет не программа? А что? Устройство? Схема?

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

И уж точно алгорим - это далеко не просто набор правил. Но описание именно шагов, необходимых для достижения результата. Ну, а программа - форма представления алгоритма.

Да, если специально зажать себя в определении алгоритма как описания шагов, необходимых для достижения результата, то при этом определении можно сказать, что программа это форма представления алгоритма. При этом такой алгоритм следовало бы именовать ограниченным термином - алгоритм программы, и после этого смело утверждать, что программа - это форма представления алгоритма программы. Расширенная, подробная, так сказать. Но понятие алгоритма в общем виде значительно более широкое, чем просто описание шагов, алгоритм - это именно набор правил, следуя которым достигается результат. И эти правила не обязательно именно шаги. Не надо себя ограничивать. И любая сущность, будь то устройство, или программа, если они решают задачу в полном соответствии с данным набором правил - есть эквивалентное представление этого алгоритма в соответствующей форме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

HDL, это описание. описание такое же как HTML. HTML - это же не программа, и не схема...

Потому и называеся - языка описания!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

голосую за описание

 

Ибо ноги у вхдл растут из

Был разработан в 1983 г. по заказу Министерства обороны США с целью формального описания логических схем для всех этапов разработки электронных систем, начиная модулями микросхем и заканчивая крупными вычислительными системами.

 

 

http://ru.wikipedia.org/wiki/VHDL

 

то есть военным нужно было некое описание схемы на вопрос "А собственно как ваша железячная херотень работает, вы знаете?" :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...