В списке хабов есть FPGA, но в статье про них ни слова.
Вы используете ПЛИС или это ошибка? Какие? Для каких целей? Было бы интересно про эту кухню почитать, на хабре такого мало.
Отношение скорости света в вакууме к групповой скорости распространения волны в линии передачи — коэффициент укорочения. Он зависит от погонных индуктивности и емкости кабеля. Например для utp cat5 кабеля это примерно 1.5.
Пока скачивается книга хотел бы выразить благодарность как авторам и переводчикам, так и лично Юрию за доведенную до сообщества информацию. Надеюсь книга окажется занимательной и полезной.
Ну и конечно животрепещущий вопрос от любителей подержать томик в руках: а будет ли бумажная версия?
Согласен с вами полностью (выпуск 2012).
Вот правда не было второй категории у нас. А из первой я не слышал про такие большие цифры)
Считаю, что у инженера обязан быть опыт работы по завершении института. Без этого этого нет никакого смысла учиться.
Интересная статья, спасибо. Было бы интересно почитать, как запускается и как работает freeRTOS.
ПС Кажется у вас в последнем примере в суперцикле не хватает getchar из UART.
Так же в SV есть удобство в виде автоматического выравнивания разрядности данных.
Т.е. если в проекте используется тип данных integer но по логике работы понятно что значение данного регистра не превышает 255 (в десятичной системе),
то после компиляции данный регистр будет 8 разрядным.
Таким образом налицо очередная вольность допускаемая стандартом SV — он не требует явного выравнивания длин регистров.
Не понятно про какой регистр речь. Если вы про CNT_OUT — он явно объявлен 8 битным, если же вы про cnt, то мне кажется, что это ошибка.
cnt используется, как счетчик, им отмериваются интервалы относительного времени. Если синтезатор сделает cnt 8 битным ваша схема не будет работать, если он как-то пересчитает разрядность — будет работать не правильно.
Мне кажется вы не корректно поступаете сравнивая VHDL и SystemVerilog ( хотя в названии статьи заявлено, что речь пойдет про Verilog).
Если Verilog и VHDL еще можно сравнивать по функциональности и стилистике разработки (об этом немного ниже), то SystemVerilog вещь сильно превосходящая оба традиционных языка (хоть и полностью включающая в себя Verilog и считающаяся по сути просто новым стандартом Verilog). Но да, незадача, ни одна среда проектирования не поддерживает всех его выкрутасов.
Я недавно начал изучать SystemVerilog и даже просто пролистав стандарт уже кажется, что стиль разработки должен сильно поменяться при переходе от Verilog к SystemVerilog.
Но все же, если сравнивать языки по уровню вхождения, то тут двоякая ситуация.
Я, как и вы, обладая более «программистским» складом мышления выбрал сразу же без раздумий Verilog. Тут больше внимания, можно уделить именно алгоритмам работы, информационному взаимодействию что-ли. Но нужно знать и больше всяких замысловатых вещей. Вот тоже блокирующее и неблокирующее присвоение.
VHDL же больше понятен со стороны схемотехники. Да, он избыточен по написанию, но он ближе к железу. То что написано на неё работает так, как написано. VHDL, как говорится, не дает «выстрелить себе в ногу».
Спасибо, было интересно почитать. Так просто выглядит, что кажется что от радаров до сонаров один шажочек.
Как я понял вы работаете на этом поприще? Если да, то парочка вопросов:
1. Как примерно применяются «шаблоны настройки радара»? хранятся таблицами?
2. Про преобразование луча непонятно описано, когда и в каком виде применяется окно Чебышева? К сигналу ли? Или к сигналам от каждого элемента решетки/подрешетки, значит ваша приемная антенна аналог АФАР?
3. Используются звуковые частоты. А какие примерно? Какая несущая и полоса?
4. Вот по последнему пункту:
Из контекста кажется что АРУ( кстати ВАРУ и ШАРУ применяется? или содержит всё?)=>демодуляция=>антиалиасинг делаются в аналоговом виде, потом конвертация в цифровой вид (АЦП?). Тут наверное недоразумение, ведь антиалиасинг — фильтр подавляющий эффекты децимации.
Про децимацию тоже ни слова. В радиолокации например сигнал децимируется до полосы сигнала.
Это странно, ведь при таких малых частотах можно позволить поставть АЦП в каждый элемент решетки и производить все вычисления в цифровом виде. Или если какие-то особенности связанные со звуком?
5. Если не секрет какие микроконтроллеры используются?
Ну и придирки тоже есть.
1. Эффект Доплера для электромагнитных волн — это и есть то самое обыкновенное понимание. Эффект Доплера применим к любым волнам распространяемым в какой либо среде. Для электромагнитных волн эта среда — воздух.
2. Обычно используется термин «согласованная фильтрация». Ведь сигнал согласован с импульсной характеристикой фильтра.
3. Согласованный фильтр и свертка на БПФ — это два кардинально разных алгоритма вычисления свертки(сжатия в контексте).
Извините, если я слишком критично отнесся к написано. Очень уж интересная тема.
Не приведено такое важное понятие, касающееся ФМн, как «обратная работа».
Сразу пример, чтобы проще пояснить.
У вас принят код «0» — 0градусов, «1» — 180 градусов. И Вы, собственно, передаете последовательность сигнальных интервалов с такой фазой. Излучаете это в канал связи (атмосферу например) и в нем ваш сигнал будет иметь фазовый сдвиг ( переотражения, метео-явления и так далее). Если этот эффект даст сдвиг больше, чем на 90 градусов, то Ваш «0» по заложенному коду будет трактоваться как «1», и наоборот. В итоге Вы имеете абсолютно неверную последовательность.
Относительная ФМн позволяет этого избежать. Естественно используя хитрость.
При ОФМн кодируется не абсолютная величина начальной фазы на сигнальном интервале, а её изменение.
Например задается код. «0»- не менять фазу, «1» — повернуть фазу на 180 градусов.
Тут также при обратной работе будет возникать систематическая ошибка.
Делается следующее. Передается «коррекционный бит». Например условлено, что первый сигнальный интервал не информативен, а сообщение начинается со второго. Получается, что если второй бит «0» — фаза сохранится, если «1» — фаза повернется на 180 градусов относительно коррекционного бита. Всё обратная работа устранена.
Да, не путайтесь, всё верно. Для простой амплитудной модуляции информационным сигналом является именно модулирующее колебание (закон изменения амплитуды несущей), а несущая на то и несущая что его переносит.
Центральная, высокая гармоника спектра — это именно несущая. И да, она не несет полезной информации. Боковые гармоники — это представление модулирующего колебания, они отстают на частоту модуляции.
Пример:
Моделирующее колебание — 10кГц, несущая — 1МГц.
в спектре 3 составляющие: несущая — 1МГц; 2 боковые 0.990МГц и 1,010МГц.
Чтобы выделить из сигнала информацию — нужно выделить именно эти 10кГц.
Конечно это просто пример, закон модуляции может быть не синусоидальный и не периодический.
1) Вы работаете один? Я работаю в команде и стилистика, хоть и на словах, но имеется и обсуждается.
2) а) Например блок
Always @(posedge clk)
begin
a=x+y;
b=q+g;
c=n+m;
end
Все присвоения в таком случае сработают параллельно.
5) Маловата частота конечно для такой плис, но если запас в 2 раза, то проблем нет.
Matlab, кстати, очень рекомендую. Весь ЦОС всегда полностью моделирую, но вот генерацией HDL кода пока не занялся.
Вот пара моментов, которые прям бросились в глаза:
1) Входы-выходы объявляются в заголовке модуля обычно. Вы объявляете регистры и цепи в процессе их появления в тексте. Мелочь, конечно, но для меня странно выглядит.
2) Для каждого блока always используете один оператор. Почему не в операторных скобках в одном блоке always?
3) У вас все повторяющиеся условия ( которые отрабатывают счетчик) можно свести в один case ( автомат получится). Вы это делаете, чтоб синтезировалась обработка условий через enable в триггерах вместо мультиплексора, которым реализуется автомат? Насколько это эффективнее?
4) Я бы параметризовал многие вещи. Для гибкости. Вдруг пригодится.
5) На какой частоте все работает? Имеется в виду оценка Тime quest'а.
Извините, если несуразные вопросы. Стаж у самого чуть больше года. Может я что-то важное упускаю?
Eщё нескромный вопрос. Не пробовали генерировать фильтр из матлаба?
Спасибо!
Все подсказки данные в статье подтверждаю:
5 уровней (можно сказать 5 преобразований данных)
не нужно усложнять
подсказка из видео про черный
надпись действительно используется
оцениваю задачи пальцем в небо
Классная загадка, мне понравилась. Отняла правда целый день.
ПС решил, что стоит оставить только один ответ.
Вы используете ПЛИС или это ошибка? Какие? Для каких целей? Было бы интересно про эту кухню почитать, на хабре такого мало.
Ну и конечно животрепещущий вопрос от любителей подержать томик в руках: а будет ли бумажная версия?
www.kit-e.ru/articles/circuit/2008_3_161.php
Мне в свое время сильно помогло «въехать в тему»
Вот правда не было второй категории у нас. А из первой я не слышал про такие большие цифры)
Считаю, что у инженера обязан быть опыт работы по завершении института. Без этого этого нет никакого смысла учиться.
ПС Кажется у вас в последнем примере в суперцикле не хватает getchar из UART.
Не понятно про какой регистр речь. Если вы про CNT_OUT — он явно объявлен 8 битным, если же вы про cnt, то мне кажется, что это ошибка.
cnt используется, как счетчик, им отмериваются интервалы относительного времени. Если синтезатор сделает cnt 8 битным ваша схема не будет работать, если он как-то пересчитает разрядность — будет работать не правильно.
Обычный Verilog вообще не позволит так написать.
Если Verilog и VHDL еще можно сравнивать по функциональности и стилистике разработки (об этом немного ниже), то SystemVerilog вещь сильно превосходящая оба традиционных языка (хоть и полностью включающая в себя Verilog и считающаяся по сути просто новым стандартом Verilog). Но да, незадача, ни одна среда проектирования не поддерживает всех его выкрутасов.
Я недавно начал изучать SystemVerilog и даже просто пролистав стандарт уже кажется, что стиль разработки должен сильно поменяться при переходе от Verilog к SystemVerilog.
Но все же, если сравнивать языки по уровню вхождения, то тут двоякая ситуация.
Я, как и вы, обладая более «программистским» складом мышления выбрал сразу же без раздумий Verilog. Тут больше внимания, можно уделить именно алгоритмам работы, информационному взаимодействию что-ли. Но нужно знать и больше всяких замысловатых вещей. Вот тоже блокирующее и неблокирующее присвоение.
VHDL же больше понятен со стороны схемотехники. Да, он избыточен по написанию, но он ближе к железу. То что написано на неё работает так, как написано. VHDL, как говорится, не дает «выстрелить себе в ногу».
Как я понял вы работаете на этом поприще? Если да, то парочка вопросов:
1. Как примерно применяются «шаблоны настройки радара»? хранятся таблицами?
2. Про преобразование луча непонятно описано, когда и в каком виде применяется окно Чебышева? К сигналу ли? Или к сигналам от каждого элемента решетки/подрешетки, значит ваша приемная антенна аналог АФАР?
3. Используются звуковые частоты. А какие примерно? Какая несущая и полоса?
4. Вот по последнему пункту:
Из контекста кажется что АРУ( кстати ВАРУ и ШАРУ применяется? или содержит всё?)=>демодуляция=>антиалиасинг делаются в аналоговом виде, потом конвертация в цифровой вид (АЦП?). Тут наверное недоразумение, ведь антиалиасинг — фильтр подавляющий эффекты децимации.
Про децимацию тоже ни слова. В радиолокации например сигнал децимируется до полосы сигнала.
Это странно, ведь при таких малых частотах можно позволить поставть АЦП в каждый элемент решетки и производить все вычисления в цифровом виде. Или если какие-то особенности связанные со звуком?
5. Если не секрет какие микроконтроллеры используются?
Ну и придирки тоже есть.
1. Эффект Доплера для электромагнитных волн — это и есть то самое обыкновенное понимание. Эффект Доплера применим к любым волнам распространяемым в какой либо среде. Для электромагнитных волн эта среда — воздух.
2. Обычно используется термин «согласованная фильтрация». Ведь сигнал согласован с импульсной характеристикой фильтра.
3. Согласованный фильтр и свертка на БПФ — это два кардинально разных алгоритма вычисления свертки(сжатия в контексте).
Извините, если я слишком критично отнесся к написано. Очень уж интересная тема.
Сразу пример, чтобы проще пояснить.
У вас принят код «0» — 0градусов, «1» — 180 градусов. И Вы, собственно, передаете последовательность сигнальных интервалов с такой фазой. Излучаете это в канал связи (атмосферу например) и в нем ваш сигнал будет иметь фазовый сдвиг ( переотражения, метео-явления и так далее). Если этот эффект даст сдвиг больше, чем на 90 градусов, то Ваш «0» по заложенному коду будет трактоваться как «1», и наоборот. В итоге Вы имеете абсолютно неверную последовательность.
Относительная ФМн позволяет этого избежать. Естественно используя хитрость.
При ОФМн кодируется не абсолютная величина начальной фазы на сигнальном интервале, а её изменение.
Например задается код. «0»- не менять фазу, «1» — повернуть фазу на 180 градусов.
Тут также при обратной работе будет возникать систематическая ошибка.
Делается следующее. Передается «коррекционный бит». Например условлено, что первый сигнальный интервал не информативен, а сообщение начинается со второго. Получается, что если второй бит «0» — фаза сохранится, если «1» — фаза повернется на 180 градусов относительно коррекционного бита. Всё обратная работа устранена.
Про радионавигацию и связь ничего не говорю.
Центральная, высокая гармоника спектра — это именно несущая. И да, она не несет полезной информации. Боковые гармоники — это представление модулирующего колебания, они отстают на частоту модуляции.
Пример:
Моделирующее колебание — 10кГц, несущая — 1МГц.
в спектре 3 составляющие: несущая — 1МГц; 2 боковые 0.990МГц и 1,010МГц.
Чтобы выделить из сигнала информацию — нужно выделить именно эти 10кГц.
Конечно это просто пример, закон модуляции может быть не синусоидальный и не периодический.
Как-то не обращал на это внимания, прям жил во лжи.
2) а) Например блок
Always @(posedge clk)
begin
a=x+y;
b=q+g;
c=n+m;
end
Все присвоения в таком случае сработают параллельно.
5) Маловата частота конечно для такой плис, но если запас в 2 раза, то проблем нет.
Matlab, кстати, очень рекомендую. Весь ЦОС всегда полностью моделирую, но вот генерацией HDL кода пока не занялся.
1) Входы-выходы объявляются в заголовке модуля обычно. Вы объявляете регистры и цепи в процессе их появления в тексте. Мелочь, конечно, но для меня странно выглядит.
2) Для каждого блока always используете один оператор. Почему не в операторных скобках в одном блоке always?
3) У вас все повторяющиеся условия ( которые отрабатывают счетчик) можно свести в один case ( автомат получится). Вы это делаете, чтоб синтезировалась обработка условий через enable в триггерах вместо мультиплексора, которым реализуется автомат? Насколько это эффективнее?
4) Я бы параметризовал многие вещи. Для гибкости. Вдруг пригодится.
5) На какой частоте все работает? Имеется в виду оценка Тime quest'а.
Извините, если несуразные вопросы. Стаж у самого чуть больше года. Может я что-то важное упускаю?
Eщё нескромный вопрос. Не пробовали генерировать фильтр из матлаба?