Цифровой дизайн не имеет ничего общего с разработкой программного обеспечения (возможно, за исключением того, что синтаксис Verilog немного похож на язык C, но выглядит только так). Таким образом, очень сложно ответить на этот тип вопросов адекватно. Но как парень, который прошел путь от разработки программного обеспечения до проектирования оборудования, я попробую. Оглядываясь назад на себя, я бы посоветовал себе тогда, если бы знал, что знаю сейчас:
Начинать с нуля
Забудьте все о разработке программного обеспечения. Особенно языки программирования. Эти принципы не применяются в цифровом дизайне. Вероятно, было бы легко для парня, который проектировал процессор, программировать его на ассемблере или даже на C, но программист на ассемблере не сможет проектировать процессор.
На вашем пути обучения не склонны решать то, что кажется легкой проблемой с вашими существующими знаниями из программного обеспечения. Одним из классических примеров является «цикл». Даже если вы можете написать цикл for, скажем, в verilog - он служит другим целям. Он в основном используется для генерации кода. Это также может быть цикл for, как его видят разработчики программного обеспечения, но он ничего не даст, кроме симуляции (то есть вы не сможете программировать FPGA таким образом).
Поэтому для каждой задачи, которую вы хотите решить, не думайте, что знаете, как это сделать, вместо этого проведите исследование - проверьте книги, примеры, спросите более опытных людей и т. Д.
Изучите аппаратное обеспечение и язык HDL
Самые популярные языки HDL - Verilog и VHDL. Есть также специфичные для производителя, такие как AHDL (Altera HDL). Поскольку эти языки используются для описания аппаратных компонентов, все они в значительной степени используются для выражения одного и того же в схожих модах, но с другим синтаксисом.
Некоторые люди рекомендуют изучать Verilog, потому что он выглядит как C. Да, его синтаксис представляет собой смесь C и Ada, но он не облегчает разработку программного обеспечения. На самом деле, я думаю, что это может даже ухудшить ситуацию, потому что будет искушение написать C на Verilog. Это хороший рецепт для очень плохого времени.
Имея это в виду, я бы порекомендовал посмотреть с VHDL. Хотя с Verilog тоже все в порядке, если учесть вышеизложенное.
Важно помнить, что вы должны понимать, что вы выражаете на этом языке. Какое оборудование «описывается» и как оно работает.
По этой причине я бы порекомендовал вам приобрести какую-нибудь книгу по электронике в целом и такую хорошую книгу, как эта - HDL Chip Design (она же синяя книга).
Получить симулятор
Прежде чем начать что-либо делать аппаратно и использовать какие-либо специфичные для поставщика функции и т. Д., Приобретите себе симулятор. Я начинал с Verilog и использовал Icarus Verilog вместе с GTK Wave. Это бесплатные проекты с открытым исходным кодом. Используйте примеры, которые вы видите в книгах, попрактикуйтесь, создав собственные схемы, чтобы почувствовать вкус этого.
Получить совет по развитию
Когда вам захочется идти вперед, возьмите доску для разработки. Если вы знаете, что ваш работодатель хочет пойти с Решеткой, тогда возьмите доску Решетки.
Методы программирования очень похожи, но есть детали, которые отличаются. Например, разные инструменты, разные опции, разные интерфейсы. Обычно, если у вас есть опыт работы с одним поставщиком, переключиться не сложно. Но вы, вероятно, хотите избежать этой дополнительной кривой обучения.
Я бы также позаботился о том, чтобы на плате были компоненты, которые вы планируете использовать или которые можно расширять. Например, если вы хотите спроектировать сетевое устройство, например, маршрутизатор, убедитесь, что на плате установлен Ethernet PHY или его можно расширить, например, через разъем HSMC и т. Д.
Платы обычно идут с хорошим справочником, руководством пользователя и примерами дизайна. Изучите их.
Читать книги
Вам нужно будет читать книги. В моем случае у меня не было друзей, знакомых с цифровым дизайном, и этот сайт тоже не очень помог из-за одной простой вещи - я даже не знал, как сформулировать свой вопрос. Все, что я мог придумать, было что-то вроде: «Хм, ребята, есть что-то, dcfifo, и я услышал кое-что о проблемах пересечения области часов, что это такое и почему мой дизайн не работает?»
Я лично начал с этого:
У поставщиков ПЛИС есть много поваренных книг с лучшими практиками. Изучите их вместе с эталонными конструкциями. Вот один из Альтера, например.
Вернись с более конкретными вопросами
Пока вы просматриваете свои книги, имитируете дизайн, мигаете несколькими светодиодами на вашей плате разработки, у вас, скорее всего, возникнет много вопросов. Убедитесь, что вы не видите ответов на них на следующей странице книги или в Интернете (то есть на форуме, посвященном решетке), прежде чем задавать их здесь.