SM 0 26 февраля, 2010 Опубликовано 26 февраля, 2010 · Жалоба Речь о синтезируемом HDL, под "writeln" понимается последовательный вывод в какое-либо _одно_ устройство (UART, например). Обойтись, обойтись. Один грамотно написанный хорошо параметризованный модуль, выполняющий ф-цию а-ля принтф решит все проблемы. И докучи будет производить вывод "как бы в отдельном треде" по сравнению с аналогичной программой. Даже если речь о синтезируемом, хотя это далеко не так, так как синтезируемость различных конструкций функциональных описаний будет только увеличиваться, и речь тут в общем-то не о сравнении того, что где есть на данный момент времени, а о тенденциях. ------ Кстати... Про синтез с симулинка, далеко не единственный синтез с функционального описания. Есть решения синтеза SV-описания с UML-описания, а это уже покруче будет, и серьезно покруче. Я не знал про это, знал пока только про синтез программ с UML. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 26 февраля, 2010 Опубликовано 26 февраля, 2010 · Жалоба Обойтись, обойтись. Один грамотно написанный хорошо параметризованный модуль, выполняющий ф-цию а-ля принтф решит все проблемы... Хотел-бы увидеть на каком-либо простом примере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 26 февраля, 2010 Опубликовано 26 февраля, 2010 · Жалоба Хотел-бы увидеть на каком-либо простом примере. Ну предложите что нибудь реально кому нибудь нужное, может и будет смысл тратить время на написание всякой такой хрени. В виде модуля можно целиком микропроцессор с периферией описать, а тут уж какой-то принтф. И потом это все частности, если Вы не представляете, как это сделать, то это не значит, что другие более опытные тоже не представляют. Просто это никому не нужно, вот и не делают. На общие принципы в языках программирования и языках функционального описания (описания устройств в частности) это все никак не влияет. конкретный пример - какая нибудь мегафункция, например пусть преобразования фурье. С виду точь-в-точь как в языке программирования функция, но программа не пойдет дальше, пока результат функции не будет получен, а здесь вычисление преобразования будет происходить одновременно с остальными действиями, описанными в описании, если, конечно, не будет введено дополнительное ожидание готовности результата. Это и есть принципиальное отличие - что все блоки и функции работают одновременно и параллельно. Как бы если бы это была программа - каждый блок работает в своем треде. И даже если написан цикл, то это не значит, что этот цикл будет выполнятся по итерациям, как в языках программирования, а может и единовременно весь целиком, все зависит от описания. Только давайте прекратим переводить все в русло каких-то частностей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 26 февраля, 2010 Опубликовано 26 февраля, 2010 (изменено) · Жалоба Меня интересует общие принципы/идеи описания устройств "последовательного выполнения" на синтезируемом HDL - без явного описания КА (с флагами готовности и тп), а не какие-либо мегафункции сами по-себе (есть желание усовершенствовать самопальный препроцессор Верилога). Изменено 26 февраля, 2010 пользователем Leka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 26 февраля, 2010 Опубликовано 26 февраля, 2010 · Жалоба Меня интересует общие принципы/идеи описания устройств "последовательного выполнения" на синтезируемом HDL - без явного описания КА (с флагами готовности и тп), а не какие-либо мегафункции сами по-себе (есть желание усовершенствовать самопальный компилятор в Верилог). Так сделайте неявное описание КА, скрытое от глаз внутри параметризуемого модуля, внутри которого оно будет явным. Ну например на входе у модуля некий массив, на выходе - элемент массива с номером, увеличивающимся раз в такт. Либы они на то и либы, чтобы скрывать что-то сложное. Как это именно сделать, я не могу сказать, это зависит от конкретной задачи. А уж если речь о самопальном компиляторе - то сгенерировать явный КА (точнее счетчик) ИМХО наилучшее решение "в лоб". Я то думал речь о том, чтобы облегчить жизнь пишущему вручную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 26 февраля, 2010 Опубликовано 26 февраля, 2010 (изменено) · Жалоба Я то думал речь о том, чтобы облегчить жизнь пишущему вручную. Как раз об этом. Если внести в синтезируемый HDL _удобные_ средства описания "последовательных" устройств - отпадет надобность в "C to HDL" и тп средств. Изменено 26 февраля, 2010 пользователем Leka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Алгоритм, записанный на языке - это тоже один из видов функционального описания. Программой он станет лишь когда его превратят (сделают реализацию алгоритма) в последовательнось команд для исполнительного устройства. Без него (исполнительного устройства, исполняющего программу) программа не имеет никакого смысла, чтобы быть программой, необходимо (т.е. обязательное условие) исполняться на каком либо исполнительном устройстве. Ок, оставим философию в стороне. int a; int b; int c; int f(int x, int y) { return a + b; } c = f(a, b); Это программа? Программа. Где исполнительное устройство? Что объединяет ФЯП, HDL, кубики симулинка и упомянутую Вами схему в квартусе - общий принцип построения этих описаний - параллельное (единовременное) вычисление всех определенных в описании функций. И это главное и определяющее единство принципов всех четверых. А не мелкие нюансы синтаксиса записи или ориентированности на тот или иной ряд задач. То, что "функциональное программирование" названо термином программирование на мой взгляд досадная случайность, исключение, подтверждающее правило, получившееся из-за того, что в то время никаких других доступных способов вычисления, кроме как программных не было, ну и математики так это и назвали. Корректно именовать все эти способы описания - именно функцональным описанием. А вот что с ним потом делать - интерпретировать как программу, скомпилировать в программу или синтезировать устройство - это уже вопрос реализации. Не, я не понял. Вы интенсивно используете устоявшийся термин "функциональное программирование". Этот термин вполне однозначно обозначает вполне конкретную область программирования, имея прямое отношение к дискретной математике. В основе ФП лежит так называемое лямбда-исчисление, строится это на всяких теориях о вычислимости и т.п. Область эта достаточно уже пропахана - разработаны и успешно применяются языки ФП, куча публикаций (даже на русском языке есть журнал: http://www.fprog.ru/)... Короче, одно из двух: либо я неимоверно слеп, что в упор не вижу в HDL ничего относящегося к области функционального программирования, либо вы под термином "функциональное программирование" понимаете что-то свое, только вам понятное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Есть решения синтеза SV-описания с UML-описания, а это уже покруче будет, и серьезно покруче. Я не знал про это, знал пока только про синтез программ с UML. А ссылкой не поделитесь ? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Как раз об этом. Если внести в синтезируемый HDL _удобные_ средства описания "последовательных" устройств - отпадет надобность в "C to HDL" и тп средств. Так это и есть переход от низкоуровневой модели, на которой оперируют HDL, к высокоуровневой - уход от клоков, потактовой синхронизации и т.п. И не важно, С это или другой язык - чем уровень абстракции выше (при той же эффективности реализации), тем лучше - легче заниматься проектированием. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Это программа? Программа. Где исполнительное устройство? Это не программа. Это пока что алгоритм, или, что эквивалентно, функциональное описание (программы или устройства). Программой может быть реализация "этого" - если "это" скомпилировать и выполнить на исполнительном устройстве, либо выполнить на исполнительном устройстве под интерпретатором. Либо хотя бы быть однозначно предназначенным для этого. Без этого "это" программой не является и являться не может. Короче, одно из двух: Нет, третье. Невнимательное чтение и попытка сравнять термин "функциональное описание" (functional model, functional description), что есть собственно алгоритм, записанный в тексте на каком либо языке или в графике и "функциональное программирование", что есть действительно раздел математики, и при помощи него, как и при помощи HDL, можно эффективно составить функциональное описание устройства. А ссылкой не поделитесь ? Спасибо. Сам еще не наткнулся на этот продукт. Одни слова вокруг да около, конференции да презентации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Это не программа. 5 баллов!!! Тогда always_ff @(posedge clk) begin ... end - это не HDL описание. Вот и договорились. Нет, третье. Невнимательное чтение и попытка сравнять термин "функциональное описание" (functional model, functional description), что есть собственно алгоритм, записанный в тексте на каком либо языке или в графике и "функциональное программирование", Невнимательное чтение?!! А может кто-то невнимательно пишет (и/или мыслит)? Иначе как все это можно понимать (выделено мной, посты можно найти целиком по ссылкам в заголовках цитат): Как по мне, так программирование принципиально проигрывает описанию устройств. Разумеется функциональное исключаем, его суть очень похожа на описание устройств, я имею в виду классическое программирование. А о чем речь - в первую очередь о том, что при описани устройств на HDL, во всех существующих, можно мыслить так же, как при функциональном программировании (хотите - наоборот - при использовании функционального программирования мыслить мерками описания устройств). ... Будущее за введением в имеющиеся языки принципов функционального программирования, в HDL их вводить не надо, они там с рождения, их там развивать надо, И чем больше в языки вводится абстракции и элементов функционального программирования, тем больше программисты превращаются в RTL-дизайнеров, потому что все меньше становится программирования, и все больше функционального описания устройств как единого целого. ...Вообще, даже складывание кубиков в симулинке это в общем функциональный ЯП, и одновременно HDL-описание, так как точности (читай размеры шин между блоками) четко определены. А описание в виде соединения блоков в симулинке - это типичное функциональное описание. Вот этим и отличается - это разновидность функционального программирования - и в данном случае присутствует синтез как и программы (всякие там техасско-адишные дела например) с функционального описания, так и схемы устройства. Ладно, теперь стало окончательно понятно, что никакого отношения к функциональным языкам программирования ваши упоминания о них не имели. Имели вы в виду по сути описание алгоритма на любым способом (графическим, на HDL) кроме как на традиционных ЯП, и называли это местами "функциональным описанием", а местами "функциональным программированием". Не употребляли бы этот устоявшийся термин, не возникло бы и вопроса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Тогда always_ff @(posedge clk) begin ... end - это не HDL описание. Вот и договорились. Нет, это именно HDL описание. Так как описано на HDL. Вы вообще вникните как нибудь на досуге в аббревиатуру HDL, много интересного откроется, и про то, сколько в ней есть о программировании в том числе. Она, эта аббревиатура, полно и точно определяет, что делается при помощи этой группы языков. Невнимательное чтение?!! А может кто-то невнимательно пишет (и/или мыслит)? Иначе как все это можно понимать (выделено мной, посты можно найти целиком по ссылкам в заголовках цитат): Вы не первый и не последний, кто подлавливает меня на невнимательности. Я не могу себе позволить по полдня думать над математической точностью каждой фразы, чтобы никто не мог придраться. Кому надо, тот поймет. Кому не надо, тот будет как Вы этим подкалывать. Я к этому привычный, и мне оно пофигу. Весь смысл в том - что есть языки, удобные для для функционального описания, коими являются ФЯП, HDL, симулинки всякие и прочие графические средства, и вообще прочие средства представления алгоритмов во всем их множестве, и это их объединяет. А есть удобные только для написания программ. Коим является например тот же С (не его расширение с отдельным довольно жестким набором правил - SC - он дорос, чтобы именоваться средством функционального описания). А программа просто не может существовать без исполнительного устройства по определению, работающего по этой программе (Или Винер уже не авторитет?). Ни к чему не привязанный текст или графика - всегда функциональное описание, или иначе алгоритм, а точнее множество алгоритмов, объединенных в единое целое. Программа - его реализация для определенного исполнительного устройства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба 5 баллов!!! Что же тут смешного? С Википедии: Компью́терная програ́мма — последовательность инструкций, предназначенная для исполнения устройством управления вычислительной машины. Чаще всего образ программы хранится в виде исполняемого модуля (отдельного файла или группы файлов). Из этого образа, находящегося как правило на диске, исполняемая программа в оперативной памяти может быть построена программным загрузчиком. В зависимости от контекста, рассматриваемый термин может относиться также и к исходным текстам программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Нет, это именно HDL описание. Так как описано на HDL. Т.е. то, что код написан на языке программирования - это его программой не делает, потому что, якобы, нет устройства. А если код написан на HDL, то это его делает HDL описанием по-любому независимо от того, на чем оно выполняется и выполняется ли вообще. Потому что употреблена священная мантра "HDL". Что-то с логикой тут не в порядке. Что касается аббревиатуры HDL, то это всего лишь название, и не слишком удачное. Исторически сложившиеся. Вы не первый и не последний, кто подлавливает меня на невнимательности. Я не могу себе позволить по полдня думать над математической точностью каждой фразы, чтобы никто не мог придраться. Кому надо, тот поймет. Кому не надо, тот будет как Вы этим подкалывать. Никакой математической точности и не требовалось - достаточно было не употреблять этот термин, потому что человек, знакомый с ним, будет понимать совсем не то, что вы хотели сказать. И употребляя этот термин не к месту вы вводите в заблуждение. Зачем вам это? Я и не ставил себе целей кого-то подлавливать и подкалывать. Поверьте, мне есть чем заняться, и я трачу немало времени на эту дискуссию (хоть и не хотел) только потому, что она мне интересна и я сам в процессе обсуждения начинаю глубже понимать суть этих вещей. Коим является например тот же С (не его расширение с отдельным довольно жестким набором правил - SC Вот опять вы ставите практически знак равенства между С и С++ (потому что SC - это С++ в чистом виде без каких-либо расширений и модификаций), а ведь разница между ними просто огромна! И если вам про это сказать, вы будете утверждать, что, дескать, опять подловили, мне некогда формулировать с математической точностью, и вообще пофиг. Если хотите, чтобы к вашим словам относитесь серьезно, то уделяйте больше внимания соответствию слов и смысла, который они несут. Сами посудите - вот вы читаете конфу, попадается вам интересный пост, вы его читаете, но кое-где не улавливаете смысла в сказанном по причине того, что терминология как-то не попадает в значение подразумеваемого автором. Потом в другом посте этого же автора аналогичное, потом в третьем... Какое у вас сложится отношение? Правильно - не надо придавать значения словам этого автора - он как-то путается и/или не заморачивается с соответствием формулировок смыслу и говорит не то, что имеет в виду. Ну, и зачем? SC - он дорос, чтобы именоваться средством функционального описания). SC (С++) как средство функционального описания (в вашем смысле) на эн голов выше любого HDL и симулинка в придачу. На нем можно описать алгоритм практически на любом из используемых на практике уровней абстракции - от клоков и тактов, до функционального программирования. Другое дело, что далеко не все на нем удобно делать, используя только его - правильный путь: разработка библиотек. А программа просто не может существовать без исполнительного устройства по определению, работающего по этой программе (Или Винер уже не авторитет?). Ни к чему не привязанный текст или графика - всегда функциональное описание, или иначе алгоритм, а точнее множество алгоритмов, объединенных в единое целое. Программа - его реализация для определенного исполнительного устройства. А HDL описание может работать без устройства? Без железа? Ровно то же самое. С Википедии: Авторитетный источник. :) Во-первых, кто сказал, что это компьютерная программа? Вот я скажу нашему программисту Боре, чтобы он мне вычислил значения в соответствии с этой программой и он вычислит. Где компьютер? :) Во-вторых, даже в этом же довольно узком определении (файлы какие-то, загрузчики... где у меня в AVR файлы и загрузчики?) тем не менее сказано, что этот термин относится и к исходным текстам программ. Вы-то как сами считаете - приведенный код (на ЯП Си) - это программа или нет? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Вы-то как сами считаете - приведенный код (на ЯП Си) - это программа или нет? :) Это можно назвать программой только в узком значение, синониме выражения "исходный текст программы", как и написано в приведенной мной цитате из "авторитетного источника". В более широком смысле, программой это, конечно же, не является. Во-первых, кто сказал, что это компьютерная программа? Вот я скажу нашему программисту Боре, чтобы он мне вычислил значения в соответствии с этой программой и он вычислит. Где компьютер? :) Ну, можно вообще каждого второго в этом топике "обламать" и "подловить", если начать использовать слово "программа" в значении "программа передач". Разве в этом смысл? Во-вторых, даже в этом же довольно узком определении (файлы какие-то, загрузчики... где у меня в AVR файлы и загрузчики?) тем не менее сказано, что этот термин относится и к исходным текстам программ. Про "игру в слова" смотрите предыдущее предложение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться