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

как быстро вникнуть в чужой код

книжек как грязи

Пару примеров? Хотя бы уровня "FPGA Prototyping by VHDL examples".

 

только едва ли описание реальных устройств полезнее перепечатки стандарта

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

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


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

Пару примеров? Хотя бы уровня "FPGA Prototyping by VHDL examples".

библия Дугласа Смита HDL Chip design не попадалась ?

 

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


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

http://www.ozon.ru/?context=search&text=VHDL

:)

 

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

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


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

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

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

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


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

Ну нет...

 

Одно дело обучение, другое дело работа, разговор был про одно, продолжился в контексте другого... Троллинг?

 

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


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

если возврат к теме, то продолжая чужой проект у меня 2 сценария.

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

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

 

Естественно если работаю с проектом на предмет исправления ошибки, то в обоих вариантах вношу правки.

 

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

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


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

Заново писать проект - это затратный бред, даже если он очень неправильный, но по какой-то причине продается, выкинуть и написать заново - не правильно,

 

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

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


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

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

тогда в моей терминологии такой проект не может продаваться:) И тут надо смотреть на создание нового проекта, и не считать это правкой старого... как-то так... а в целом из всего есть исключения

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


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

тогда в моей терминологии такой проект не может продаваться:) И тут надо смотреть на создание нового проекта, и не считать это правкой старого...

 

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

 

А продаваться "оно" еще как может, и продается вовсю и всеми (я это подробно исследовал на примере PCI, PCIe и USB IP - за их мегауниверсальность надо платить лишней площадью и тормозами). Сейчас редко кто "впихивает невпихуемое" :), современная тенденция - тупо поставить ПЛИС грейдом повыше, и/или площадью потолще, не думая о том, что затрата "лишнего" месяца на оптимизацию принесет впоследствии прибыль от экономии на себестоимости продукта, которая, чаще всего, покроет этот месяц с лихвой (за редким исключением единичных изделий и прототипов). Хотя, конечно, для этого надо быть не на зарплате... Сорри за мини-оффтопик.

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


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

Думаю, подходящая ветка.

module tst(
    output reg q=0,
    input d1, d2, d3, clk 

);
    always
        while(d1)
            while(d2)
                while(d3)
                    @(posedge clk)
                        q <= ~q;    
endmodule

Просьба:

1) объяснить работу этого модуля с точки зрения стандарта Верилога,

2) привести в моделируемый вид,

3) перевести в синтезируемый (для ПЛИС) вид.

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


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

always @(posedge clk)
  if(((d1&d2&d3) == 1'b1)
    q<=~q;

 

может что-то типа того?

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

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


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

Кстати, для программистов на С или Дельфях есть интресное решение- перекомпилить весь проект с отладочной информацией и натравить на результат ИДУ - она построит граф вызовов функций и по нему можно многое понять, тем более, что имена функций будут соответсвовать исходникам.

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


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

ага...

 

вот мне проект достался самое длинное имя переменно 6 букв.

переменные типа

F_ENSM - это флаг включения шагового двигателя

F_WP - флаг программной работы, при этом есть еще F_WORK - который тоже флаг работы, но другой.

Все переменные глобальные, и мизер комментариев, причем часто такого рода

 

//чтобы работало эту переменную надо задать в 1

W_DFSV = 0;

 

или

 

//вызов функции с параметром 1 выключит все устойства, с параметром 0 оставит CASEL включенным

void ALLOFF(void)

{

 

}

 

при этом что такое CASEL никто незнает, ровно как вызвать void функцию с параметром:).....

 

а вы говорите граф построит и станет понятно:)....

 

Кстати с графом тоже облом 90% переменных глобальные, и меняются в нескольких прерываниях, которые блокируют друг друга, так что....

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


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

always @(posedge clk)
  if(((d1&d2&d3) == 1'b1)
    q<=~q;

может что-то типа того? ...пока эти 3 сигнала в единице по каждому клоку сигнал ку меняется, и это происходит вечно...

Нет.

зачем 3 раза вложили вайлы фиг знает...

Это я задачку на сообразительность подкинул - смотрю, на каком форуме дизайнеры круче.

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


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

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

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

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

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

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

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

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

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

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