Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Процедурная музыка для Марсохода

Процедурная музыка для Марсохода 12 года 8 мес. назад #651

Здравствуйте!
Создал проект, который я надеюсь, будет интересен сообществу.

Процедурная музыка для Марсохода

Цель данной работы - продемонстрировать простой и наглядный проект, подходящий для первых шагов работы с платой. Источником музыкального сигнала будет не последовательность нот, а формулы определенного вида, подсмотренные у демосценщиков:

countercomplex.blogspot.com/2011/10/algo...rom-one-line-of.html
countercomplex.blogspot.com/2011/10/some...-one-line-music.html

Пример подходящей формулы: (t>>7|t|t>>6)*10+4*(t&t>>13|t>>6)
Здесь единственный параметр это время, точнее, номер отсчета ИКМ(eng:PCM) сигнала при частоте дискретизации 8kHz. Вычисляемое значение используется для формирования амплитуды сигнала, берутся младшие 8 бит результата.
Из железа кроме собственно платы нужен динамик, в моём случае это звонок от старого радиотелефона. В качестве шаблона был взят marsohod.org/projects/plata1/8-emptyproject 'почти "пустой проект"'.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от leshabirukov. Причина: коррекция

продолжение: Процедурная музыка для Марсохода 12 года 8 мес. назад #652

Чтобы получить из 8-битного уровня сигнала однобитный используется самопальный ЦАП, реализованный через своего рода ШИМ, вот таким модулем:
module tsap
		( input wire [7:0] X,
		input wire [7:0] rnd,
		output wire res	);
	assign res= 
	rnd[0] ? X[7] : (
	rnd[1] ? X[6] : (
	rnd[2] ? X[5] : (
	rnd[3] ? X[4] : (
	rnd[4] ? X[3] : (
	rnd[5] ? X[2] : (
	rnd[6] ? X[1] : (
	rnd[7] ? X[0] : 0)))))));
endmodule
Сигнал rnd берется от счетчика, считающего тики клока. Сейчас в проекте реализованы три мелодии выбираемые кнопками 0 и 1. Вот как выглядит основной модуль:
module jukebox
	( input [22:0] X, 	// номер отсчета
	input [8:0] D,		// рандомизатор для "ЦАП"
	input [3:0] K,		// состояние кнопок
	output wire Y );	// выход на динамик
	wire [22:0] t;
	assign t=X;
	wire [22:0] X2=
		~K[0] ? t * ((t>>12|t>>8)&63&t>>4) :			//	25% LE
		~K[1] ? (t*5&t>>7)|(t*3&t>>10) :			//	14% LE
				(t>>7|t|t>>6)*10+4*(t&t>>13|t>>6);	//	14% LE
	tsap ( X2, D, Y );
endmodule
Много других формул можно найти тут . Некоторые из этих формул, предназначенных для С и java script работают без изменений и для верилога. Надо однако иметь в виду, что каждое умножение в формуле превратится в схеме в умножитель (умножение на константу оптимизируется, к счастью), а это 15% ёмкости CPLD; блок для деления не влезает вообще.
Итак, реализован механизм генерации музыкоподобного звука для Марсохода. Если сравнивать с реализацией такой же функции на микроконтроллере, то при условии что музыка не единственная функциональность, проект на ПЛИС оказывается проще, не влияет на скорость соседних задач, только объем отъедает. В прилагаемом wma-файле записано то, что в итоге получилось. Прилагаются также фотографии и проект для Quartus.

UPD: К сожалению, проект и wma-файл слишком велики с точки зрения движка форума. Во вложении верилог и bdf-файлы.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от leshabirukov.

Re: продолжение: Процедурная музыка для Марсохода 12 года 8 мес. назад #653

Круто, чо.
Видели такое на АтМеге

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: продолжение: Процедурная музыка для Марсохода 12 года 8 мес. назад #654

  • nckm
  • nckm аватар
  • Не в сети
  • Администрация форума
  • Администрация форума
  • Сообщений: 112
  • Спасибо получено: 34
Вы пришлите нам описание проекта на почту Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. и мы его опубликуем!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: продолжение: Процедурная музыка для Марсохода 12 года 8 мес. назад #655

EP4CE22F17C6N пишет: Круто, чо.
Видели такое на АтМеге

Да, в блоге VIznut-а кто-то отписывался, но это всё таки совсем не то, что реализовать на HDL-е.

nckm пишет: Вы пришлите нам описание проекта на почту Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. и мы его опубликуем!

Отправил. Готов выслушать замечания и пожелания по тексту или доработке проекта.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.143 секунд
Работает на Kunena форум