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

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

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

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


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

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

А преобразовать число в std_logic_vector и обратно - вообще запросто. Можно даже не лазить по чужим библиотекам, быстрее самому написать под свои задачи. Вот, например:

-- Преобразование десятичного числа в std_logic_vector
function NaturalToSLV (NaturalValue: natural; Size: natural) return std_logic_vector is

Думаю, в данном случае лучше вместо циклов использовать стандартные выражения std_logic_vector(to_unsigned(natural_value, size)),

и to_integer(unsigned(SLV)), поскольку так короче, будет быстрее симулироваться, и исключается вероятность неадекватного восприятия функции синтезатором. И ещё можно воспользоваться оверлоадингом и сократить имена функций до ToSLV и ToNatural, как это делают в тех же стандартных библиотеках.

 

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


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

Думаю, в данном случае лучше вместо циклов использовать стандартные выражения std_logic_vector(to_unsigned(natural_value, size)),

и to_integer(unsigned(SLV)), поскольку так короче, будет быстрее симулироваться, и исключается вероятность неадекватного восприятия функции синтезатором. И ещё можно воспользоваться оверлоадингом и сократить имена функций до ToSLV и ToNatural, как это делают в тех же стандартных библиотеках.

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

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

А что тут может быть неадекватно воспринято синтезатором? У меня до сих пор вопросов не было.

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


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

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

А что тут может быть неадекватно воспринято синтезатором? У меня до сих пор вопросов не было.

 

Пора спуститься на грешную землю.

Использование fpga, дело дорогое, заточенное под конкретные нужды.

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

Quartus 9.0 для семейств 10К (встречается графика в полный рост, АльтераHDL)

Quartus 13.0 (циклоны, стратиксы 1, 2) и текущий продукт.

Все это легко накладывается на верилог.

В свободное от работы время можно конечно заняться и интеллектуальными изысканиями.

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


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

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

 

Ее злобные военные придумали, а профессора и доценты уже нашли свое злобное применение :). Но и задачи совершенно другие для Ада ставились, не железо описывать (зачем типы проводам вообще? У проводов бывают три-четыре типа, которые как раз в верилоге и есть). Ошибка программы на Ада при отладке могла очень дорого стоить, 1 ошибка = -1 ракета (или -1 город :) ) например. А тут 1 ошибка = 10-15 минут ее поиска и = -1 ошибка и все цело и невредимо. Так вопрос - стоит ли тратить лишние, напримепр, сутки, и лишних пару миллионов нейронов, на описание (этот процесс является тупой и нудной работой, когда вся схема уже придумана и обдумана, и его хочется завершить как можно скорее), чтобы получить лишь какую-то эфемерную вероятность не совершить ошибку, чем потом в вполне интересном и занимательном процессе отладки ее найти, если уж умудрился ее сделать, и устранить за минут 10-15 интересной и увлекательной работы?

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


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

to_unsigned и to_integer - это как раз из какой-то популярной внешней библиотеки
Не какой-то популярной и внешней, а самой что ни на есть стандартной.

 

Чтобы ими пользоваться без ошибок, надо сначала в той библиотеке хорошенько разобраться.
Дадада, язык мы изучать хотим, а стандартные библиотеки нет. Это как если бы в Си все писали свои функции работы, например, со строками вместо тех, что есть <string.h>.

 

И ещё такие грабли: если таких библиотек несколько, то надо точно выдерживать порядок их упоминания в use, а то бывают одноимённые функции в разных библиотеках, и начинаются прелюбопытные вещи.
В этом случае надо использовать полные имена.

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


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

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

Негде тут взяться лишним суткам. У меня два макроса в редакторе сделано, для конструкций process и if rising'edge со всеми подробностями. И всё, миллионы нейронов отдыхают :) Зато потом читать приятно, всё удобно расписано :)

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

А я не схемы придумываю, я описываю аппаратуру :)

минут 10-15 интересной и увлекательной работы

Из них 6 минут на полную компиляцию и прошивку проекта после устранения ошибки - только что замерил, Actel A3P600L. И так каждый раз :wacko:

Не какой-то популярной и внешней, а самой что ни на есть стандартной.

Ага, numeric_std. Я специально посмотрел. О вкусах не спорят, конечно, но для меня std_logic_1164 - стандартная, а всё остальное - популярное необязательное. Беда даже не в том, что надо разбираться, а в том, что разобравшись - обязательно забудешь через полгода и получишь кучу warning-ов в самых неожиданных местах. А в своих двух десятках строк всегда разберёшься. Правда, я не работаю со сложными проектами.

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


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

У меня два макроса в редакторе сделано, для конструкций process и if rising'edge со всеми подробностями.

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

 

Зато потом читать приятно, всё удобно расписано

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

 

Из них 6 минут на полную компиляцию и прошивку проекта после устранения ошибки

Это значительно приятнее 6-ти минут писания всяческой "воды" в проекте. Можно, например, этот форум почитать :)

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


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

Ага, numeric_std. Я специально посмотрел. О вкусах не спорят, конечно, но для меня std_logic_1164 - стандартная, а всё остальное - популярное необязательное. Беда даже не в том, что надо разбираться, а в том, что разобравшись - обязательно забудешь через полгода и получишь кучу warning-ов в самых неожиданных местах. А в своих двух десятках строк всегда разберёшься. Правда, я не работаю со сложными проектами.

Строго говоря, стандартная библиотека - это ieee. А numeric_std и std_logic_1164 - packages. Арифметику вы считаете только в integer и своими функциями переводите в std_logic_vector? А если надо длиннее 32 бит?:) Кстати, если пишете редко и простые проекты, наверное, verilog подойдёт лучше, там гораздо меньше сущностей, которые надо помнить, чтобы сделать что-то нормально работающее.

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


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

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

 

Как же их не игнорировать если их тысяча-две может набраться? ;)

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


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

Шедеврально

VHDL - заставляет делать меньше ошибок за счет строгой типизации.

 

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

 

Вы уверены что вы правильно определили преимущество языка:)?

 

Как же их не игнорировать если их тысяча-две может набраться? ;)

 

если не требуют строгой типизации, это не означает что ей нельзя следовать! Следите за типами, знаками, и размерностью и все будет хорошо

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


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

Арифметику вы считаете только в integer и своими функциями переводите в std_logic_vector?

Именно так. А что?

А если надо длиннее 32 бит?

Не знаю :( Не случалось ещё. Нарисую что-нибудь, арифметику-то я знаю :)

Вы уверены что вы правильно определили преимущество языкаsm.gif?

А Вы уверены, что правильно отследили мою логику и не смешали её с не моей? :)

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


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

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

 

 

зачем нужен абстрактный вектор? В С/C++ нет абстрактного битового типа (void не в счет), из которого делать какие-то битовые флаги. Но никто не мешает сделать int, и работать с его битами. Какой грандиозный смысл вводить std_logic_vector, который нельзя просто ни сложить ни вычесть, который данные в себе? Чем плохо если он по умолчанию будет целым, с возможностью битового доступа? Какой великий функционал он потеряет?

 

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

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


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

Также я чувствую что это всех раздражает, часть в этом честно призналась

То есть все, кто работает на VHDL без раздражения - нечестные люди? Ух :) Или, если честные, то глупые и/или недопонимающие?

Ответы на Ваши вопросы, конечно же, есть, но они уже неоднократно давались в похожих темах, и очень лень тут повторяться.

Я заметил, что люди, работающие на Си, часто появляются в темах по Паскалю и советуют бросить немедленно дурацкий Паскаль и переходить на Си. Обратного я не встречал. То есть работа на Си частенько портит характер? :) Неужели Verilog до такой степени похож на Си? :)

А вообще - мастеру пристало уважать инструмент другого мастера :)

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


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

Я заметил, что люди, работающие на Си, часто появляются в темах по Паскалю и советуют бросить немедленно дурацкий Паскаль и переходить на Си. Обратного я не встречал. То есть работа на Си частенько портит характер?

 

Все значительно проще ;) Допустим, в среднем, на 1 паскалятора приходится примерно 1000 С-шников. И какова вероятность того, что С-шник придет на форум к паскаляторам переубеждать их, ну и соотв. наоборот? :) :)

 

А вообще, мое IMHO, что паскаль->C, и VHDL->Verilog, это обычный путь проф. развития. Кто-то дошел, кто-то не дошел, ну а кто-то принципиально-религиозно не хочет доходить... Корни всего этого происходят из процесса обучения, в большинстве случаев обучают программистов сначала паскалю, а железячников - VHDL (по крайней мере раньше так было). Переход же на С у первых, а на верилог у вторых, это процесс профессионального роста, когда меняются приоритеты - становится надо сделать работу быстро и эффективно, чтобы работало, а не условно наглядно-красиво с точки зрения преподавателя, чтобы на 5 в зачетку. И таков путь большинства, но, разумеется, есть и исключения (те самые, религиозные, которые при этом профессионалы ничуть не хуже).

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


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

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

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

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

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

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

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

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

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

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