Pull to refresh

Comments 25

из такого цикла статей пора делать методичку. Молодец

Стараюсь. Может где-то кому-то неопределившимуся в жизни - поможет пробудить интерес и провести профессиональное самоопределение :)

Интересно насколько сложно написать скалер монитора Full HD?

Ведь даже небольшой организации это под силу?

  1. Скалеру монитора нужна, в первую очередь, память хотя бы под один фрейм, а 6 мегабайт на плиссину обычно никто не кладет. Есть HyperBus RAM, и совмещенные варианты в духе Gowin GW1NDR, но это уже экзотика

  2. Скалеру с VGA-входом нужно скоростное АЦП, которого не бывать почти никогда в ПЛИС

  3. ПЛИС - это как правило не сильно тиражируемое решение (дорого, жрет много), поэтому в массовые приборы их не так часто кладут

Только почему до сих пор Verilog? Уже, пожалуй, все средства разработки под ПЛИС поддерживают SystemVerilog, а он имеет изрядное число преимуществ, и не только для верификации, но и для синтеза. В частности, используя вместо always специализированные always_ff, always_latch, always_comb, можно сказать компилятору, что ты хочешь получить, и это поможет избежать неявных ошибок.

Автору так привычнее/удобнее. Я вообще за VHDL - в нём контроля за пользователем больше и вероятность себе ногу отстрелить ниже)

UFO just landed and posted this here

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

В VHDL контроля больше, но и писать на нём нудно с его объявлениями, требованиями соответствия разрядностей и типов. Хотя это дело привычки, конечно.

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

UFO just landed and posted this here

Так обычно это косяк получается от невнимательности. Человек отвлёкся или в одном месте поправил, закопался, а другое место "уплыло".

Как уже отметили, предупреждений в проектах очень много, но, в отличие от обычного программирования, от них невозможно избавиться. Скажем, если пишешь на це++ и у тебя вылетает предупреждение, ты вполне можешь проверить не понравившееся компилятору место и внести ту или иную корректировку. А с HDLами -- облом-с :( И в результате пустопорожних предупреждений появляется море, в котором тонут редкие реально важные.

У меня как-то был небольшой проект, в котором варнингов практически не было. Я прямо прямо эстетическое удовольствие испытывал от этого =)

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

UFO just landed and posted this here
UFO just landed and posted this here

Да, на определенной планке требований - да, все так. Но у меня скорее хоум-проект, который определяется уровнем очень-очень низкого уровня компетенций, который едва ли будет достаточно для того чтобы оценить во всей красе преимущества SystemVerilog.

Но совет я услышал, это очень ценно. Я попробую одним глазком подглядеть в ту сторону. Благодарствую :)

Вот-вот. В SV есть enum и нет нужды вручную писать перечисление, вроде этого:

localparam IDLE_STATE 		= 4'b0001;	// 1
localparam START1_STATE		= 4'b0010;	// 2
localparam START2_STATE		= 4'b0011;	// 3
localparam HOLD_STATE		= 4'b0100;	// 4
...

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

Мне бы с моим уровнем просто что-то реализовать бы :)

Какие основные преимущества вы видите в использовании Verilog для разработки I2C Master Controller по сравнению с другими языками программирования?

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

Первые книги по языкам описания цифровой архитектуры по Verilog.

Поэтому это скорее то, на чем быстрее всего было возможно реализовать задумку и не более того. Да и предыдущие статьи писал как раз на Verilog.

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

В общем все мои доводы актуальны только для меня. Когда придёт пора совершенствоваться в этом - разумеется можно будет присмотреться к другим IDE, уйти в OpenSource, на SystemVerilog и прочее. Пока что есть что есть :)

Имею первые книги читал именно про Verilog. Торопился, фразу не дописал)

Однозначно одобряю такие статьи. Всегда интересно, как коллеги по цеху реализуют интерфейсы для общения с внешним миром для ПЛИС. Где-то свои выводы подтвердишь чужим опытом, где-то что-то новое узнаешь.

Я думаю, что мой опыт далек от профессионализма и вряд ли можно считать эталоном.

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

Но тем не менее - спасибо за хорошую оценку моих материалов! Я стараюсь

Циклы почти как тут реализованы :)

https://habr.com/ru/articles/769972/

В принципе так можно любой практически автомат реализовать. Но я что-то о процессоре задумаля под такое программирование. Приобрёл плату отладочную - уже ждёт меня дома. Думаю не мало подчерпну из Ваших публикаций. Платку для начала взял такую Макетная плата Xilinx ZYNQ7000 XC7Z020. Уже ждёт меня в моём городе на почте. Слишком быстро пришла с Китая, не ожидал такой скорости.

Sign up to leave a comment.