Pull to refresh

Comments 14

Мы то думали у вас там "нейронка", а оказалось все банально - подсчет нот. :)

Юрий, процесс создание битстрима для ПЛИС это как называется ? Не программирование ?

Нет, это RTL design с последующим синтезом. То есть форма схемотехники, только не двиная мышкой по экрану, как было принято в 1980 году, а выражая схему кодом.

Программирование - это по сложившейся с 1940-х годов традиции, процесс написания кода, который транслируется в цепочку инструкций фон-Нейманновской машины (сейчас кто-то что-то скажет про гарвардскую архитектуру, но это нерелевантно).

Вы же не будете говорить, что скажем написание HTML кода - это "программирование", правильно?

Вот разница между программированием и проектированием на уровне регистровых передач для ASIC:

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

Имхо, здесь много условностей. Можно рассматривать и схему на Verilog как программу. Просто в другой форме. В реальности результат тоже будет реализовывать некоторый алгоритм. Но оперировать не виртуальными а реальными сущностями.

Поэтому,имхо, интересно говорить не о том - какое из представлений правильное, а о том что есть два представления, о том - почему.... и тд.

В электронных компаниях (я работал в MIPS, Imagination Technologies, Juniper Networks, Samsung) никто синтезируемый код на верилоге программой не называет. Говорят просто "RTL': "напишите RTL", "готов RTL?" , а не "напишите программу?" , "готова ли программа?" итд.

И не "подсчет нот", а определение последовательности нот конечным автоматом

А как схема обрабатывает смещения на октаву? Например.

Кажлая следующая октава выше по частоте от предыдущей ровно вдвое - посмотрите полный код по ссылке, там это есть

Вот конкретное место чтобы распознать три октавы:

function [19:0] check_freq (input [18:0] freq_100); check_freq = check_freq_single_range (freq_100 * 4) | check_freq_single_range (freq_100 * 2) | check_freq_single_range (freq_100); endfunction

См. все https://github.com/DigitalDesignSchool/ce2020labs/blob/master/day_2/piswords/lab_5_mic/top.v

У ней внутре нейронка - это же универсальная фраза.

и превратить Россию через 10-20 лет в великую микроэлектронную державу

Великий оптимист, однако.

Ну я же работал в последние 25 лет с китайцами (сначала с Тайваня и Гонконга, потом с КНР, в том числе в совместном проекте c Huawei, где я обучал инженеров Huawei интегрировать процессорные ядра в их систему на кристалее ), и на моих глазах КНР из нуля (в 1996 году КНР даже не показывали на презентациях по рынку микроэлектроники) в современную КНР

Прикольная тема! Правда меня в последнее время волнует немного другой вопрос: как сконфигурировать/запрограммировать что угодно - есть инструкция, а вот как создать алгоритм по которому это будет работать в принципе?

Понятно, что вопрос философский, из серии "как научиться решать математические задачи", но меж тем 90% подобного устройства - хороший рабочий алгоритм... А уж что там будет ноты подсчитывать - горстка логических элементов в ПЛИС или кучка триггеров в АЛУ проца - вообще не имеет значения.

А вы пропустили абзац про zero-crossing и конечные автоматы?

Sign up to leave a comment.

Other news