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

  

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

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

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


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

Если это нетлист , то здесь можно 100% сказать что это просто сxема в текстовом виде ,

если rtl , то это ближе к описание сxемы,

если behav. , то можно интерпритировать это как программу , поскольку реализация алгоритма работы программы в общиx чертаx сxoжы с другими языками программирования .

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


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

Корни HDL где-то в начале 70-х прошлого столетия. А до этого все вручную успешно чертили электрические схемы, которые описывали, например, программно управляющие автоматы. То есть схема часто описывала и программу.

В те времена появились языки описания логических схем, и их преимущество было в компактности, они также упрощали процесс синтеза цифровых автоматов (ЦА состоят из управляющего автомата УА и операционного устройства ОУ). Но все равно без схемы создать цифровой автомат тогда было пока не возможно. По мере усложнения алгоритмов (программ) работы цифровых автоматов и привлечением компьютеров к процессу синтеза, оказалось, что от схем можно совсем отказаться, а весь процесс синтеза стал напоминать больше программирование. Тогда же и пошел бурный прогресс HDL, к процессу синтеза ЦА легко подключались и программисты, которые электрические схемы то никогда и не любили чертить. Ну а потом оказалось, что схемы для синтеза ЦА вовсе то и не нужны, с лихвой достаточно и языков HDL ….

 

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

 

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

Так что, не важно, какого цвета кошка, лишь бы она ловила мышей…. :)

 

Я очень много перерисовал схем, а голосовал за программу.

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


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

На мой взгляд, правильней всего говорить - описание схемы (функционально-логическое описание схемы), если речь идёт о HDL приминительно к схемам.

 

Serhiy UA пишет

"Так что, не важно, какого цвета кошка, лишь бы она ловила мышей".

С точки зрения практики, при прагматичном подходе - да именно так и есть. Но сам вопрос из области эстетики. Как правильней, "описание схемы" или "программа".

 

Хотел бы добавить 3 своих копейки. Предыдущие ораторы много говорили про алгорит и программу. Моё понимание программы такое: "программа - это описание алгоритма".

Получаем: текст на HDL - "описание схемы". Программа - "описание алгоритма".

 

 

Serhiy UA пишет

Что такое простая таблица истинности, это программа или схема?"

 

- таблица истинности это не программа, не алгорит и даже не схема. Таблица истинности это форма представления математической функции (задающее отображение N мерного пространства (0, 1)^N -> (0, 1)). Это некий мат аппарат, стоящий по иерархии "выше" чем схема или программа. Врочем как и конечный автомат, как операция сложения - сложение это программа или схема?.

Автомат, таблица истинности, сложение - форма представления мат. функции.

 

Да, мат. функцию часто можно реализовать в виде программы или схемы. Но это не значит что это одно и то же.

 

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

Язык порождаемый машиной Тьюринга более мощный нежели язык порождаемый Конечными Автоматами.

 

Отсюда следует, что т.к. любая схема может быть описана таблицей истины, связывающей выходы со входами и внутренний состоянием схемы (как раз и есть конечный автомат), то любой схеме, можно поставить в соответствие программу, описывающую её мат. функцию на алгоритмически полном языке. Отсюда кажется что программа == описание схемы.

 

Искать разницу на "функциональном уровне" и не следут - её нет. Математика любит абстракции, она редуцирует часть не существенных для неё свойств обьектов.

 

 

SM

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

Согламен с SM. Добавлю:

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

 

В целом разница между схемой и алгоритмом и есть разница между описанием схемы и программой. Я лично, чётко, сформулировать не могу.

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

 

Вобщем:

- в случае программы вы, так или иначе, описываете последовательность шагов вычислителя(ей)

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

Изменено пользователем Arranje

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


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

Пришёл в голову хороший пример:

код на VHDL это что-то вроде:

"Дерево синее, большое".

 

Можно описать и по другому:

"Обьект, красного цвета, органический, осенью должно заснуть, но весной обязательно проснуться, пусть через 4 месяца как проснётся на нём появляются обьекты, содержащие растворимые человеческими ферментами вещества. Пусть последние содержат фруктозу". И т.п.

 

Можно написать и вот так: "Хочу обьект, который умеет делать вот так: <далее программа, например из примера ниже> и ещё вот так <...> и вот так <...>, но красное". Просто для описания свойства испльзовалась программа. Это не значит, что все мои цитаты - программы. Более того, даже последняя цитата - не программа, это описание обьекта, содержащие несколько программ.

 

В то время как программа это:

"Если дует ветер - согни ветви. Если спишь и тепло как минимум неделю - проснись. Если тепло 4 месяца - отправь в ветви больше питательных веществ, ветви знают что делать.

Если не спал пол года - усни".

 

И тем более дерево - это точно не программа и не алгоритм.

 

 

Надеюсь удалось показать разницу.

Изменено пользователем Arranje

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


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

В то время как программа это:

"Если дует ветер - согни ветви. Если спишь и тепло как минимум неделю - проснись. Если тепло 4 месяца - отправь в ветви больше питательных веществ, ветви знают что делать.

Если не спал пол года - усни".

 

И тем более дерево - это точно не программа и не алгоритм.

 

 

Надеюсь удалось показать разницу.

Попробуйте провести подобное сравнение, взяв императивный ЯП и функциональный. :biggrin:

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


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

Из функциональных языков я знаком только с Haskel'ем да и то не так хорошо как с VHDL или C.

Насчёт хаскеля: из-за сравнения с образцом, которое имеет место быть всегда, получает что программа интерпретируется как и императивная, с оговоркой, что каждый вызов функции переводится как "выполни <имя функции>".

 

Например:

Если Ветренно - выполни действие_когда_ветренно (ветренно). Действия_когда_ветренно означают, что нужно выполнить согнуть_ветви из (списка ветвей). 
       Если ветвей нет, согнуть_ветви означают что нужно ничего не делать. 
       Если ветви есть, согнуть_ветви означают, что нужно изменить угол наклона последней ветви по отношению к горизонту и согнуть остальные ветви.
Если штиль - выполни стандарные_действия (штиль). Стандартные_дейтвия означают ничего не делать.

 

Как видете, всё равно так или иначе список дейтвий или руководство к действию.

Изменено пользователем Arranje

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


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

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

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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