Проектирование WAV плеера
Разработка конструкции структурной схемы WAV плеера. Устройство хранения информации и ее декадирования. Отфильтрование высокочастотной составляющей. Использование передаточной функции для оценки зависимости амплитуды выходного сигнала от частоты.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.05.2014 |
Размер файла | 87,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования Республики Беларусь
Учреждение образования
Белорусский государственный университет информатики и радиоэлектроники
Факультет радиотехники и электроники
Кафедра радиотехнических систем
Пояснительная записка к курсовой работе
на тему
Проектирование WAV плеера
Проверил: Каленкович Е.Н.
Выполнила: Кацер О.Ю.
Минск 2014
Содержание
Введение
1. Разработка структурной схемы
2. Разработка принципиальной схемы
3. Разработка ПО
Заключение
Список использованной литературы
Введение
Wav плеер на attiny85 это простейший аудиоплеер, который может воспроизводить WAV-файлы, которые находятся на карте памяти SD. Микроконтроллеры серии ATtinyX5 (25/45/85) с 8 выводами имеют два выхода fast PWM (быстрый ШИМ) с несущей частотой 250 кГц. Это позволяет выводить звук с хорошим качеством и в широком частотном диапазоне. информация высокочастотный плеер декадирование
Формат WAV изначально использовался в системе Windows для сохранения цифровых аудиоданных. Это самый известный и широко поддерживаемый формат благодаря популярности платформы Windows и большому количеству написанных для неё программ. Почти любая современная программа, работающая со звуком, может прочитать или записать формат WAV, поэтому этот формат очень интересен для разработчиков программного обеспечения. Далее подробно описываются структуры данных формата WAV.
Поскольку формат WAV-файла пришел от операционной системы Windows, в которой традиционно использовались процессоры Intel, все значения данных формата хранятся как Little-Endian, т. е. самый младший значащий байт идет первым. WAV-файлы могут содержать строки текста, например метки секций, информационные комментарии и т. д. Строки сохраняются таким образом, что первый байт указывает количество байт текста ASCII в строке. WAV-файл использует стандартную RIFF-структуру, которая группирует содержимое файла из отдельных секций (chunks) - формат выборок аудиоданных, аудиоданные, и т. п. Каждая секция имеет свой отдельный заголовок секции и отдельные данные секции. Заголовок секции указывает на тип секции и количество содержащихся в секции байт. Такой принцип организации позволяет программам анализировать только необходимые секции, пропуская остальные секции, которые не известны или которые не требуют обработки. Некоторые определенные секции могут иметь в своем составе подсекции (sub-chunks). Например, как можно увидеть на диаграмме, описывающий основной формат WAV-файла, секции "fmt " и "data" являются подсекциями секции "RIFF". Одна хитрая вещь, связанная с секциями файла RIFF, состоит в том, что адреса начала секций должны быть выровнены на размер слова (2 байта). Это означает, что общий размер секции должен быть кратен 2. Если секция содержит нечетное число байт данных (невыравненное до 2 байт), то добавляется дополнительный нулевой байт данных в конец данных секции. Этот дополнительный байт не учитывается в размере секции заголовка, таким образом, программа всегда должна учитывать выравнивание для расчета смещения начала следующей секции.
Заголовки WAV-файла используют стандартный формат RIFF. Первые 8 байт файла - стандартный заголовок секции RIFF, который имеет ID секции "RIFF" и размер секции, равный размеру файла минус 8 байт, используемых для RIFF-заголовка. Первые 4 байта данных в секции "RIFF" определяют тип ресурса, который можно найти в секции. WAV-файлы всегда используют тип ресурса "WAVE". После типа ресурса (ID "WAVE") идут все секции звукового файла, которые определяют аудиосигнал.
Количество каналов указывает, сколько отдельных аудиосигналов закодировано в секции данных звука (wave data chunk). Значение 1 означает монофонический сигнал, 2 означает стерео, и т. п.
Описываемый аудиоплеер построен на карте памяти SD (SDC) и микроконтроллере ATtiny85.
Формат был разработан в 1999 году фирмами Panasonic, SanDisk и Toshiba на основе MMC-карты. В 2000 году на CES компаниями Matsushita, SanDisk и Toshiba было объявлено о создании SD Card Association. Карта размером 24Ч32Ч2,1 мм снабжена собственным контроллером и специальной областью, способной, в отличие от MMC, записывать информацию таким образом, чтобы "незаконное" чтение информации было невозможно, в соответствии с требованиями "Secure Digital Music Initiative". Этот факт был отражён в названии стандарта ("Secure Digital"). Для записи в защищённую область используется специальный протокол записи, недоступный для обычных пользователей. При этом карта также может быть защищена паролем, без которого доступ к записанной информации невозможен; восстановить работоспособность карты можно только её полным переформатированием с потерей записанной информации.
Карты формата Secure Digital снабжены механическим переключателем защиты от записи. В положении "lock" невозможны запись информации, и, соответственно, удаление файлов и форматирование карты, что позволяет избежать случайной потери информации. Однако следует учитывать, что собственно защита от записи осуществляется не самой картой, а устройством, использующим карту, и может оказаться в нём не реализованной, либо намеренно отсутствовать. Например, автозагрузка резидентной программы CHDK для фотоаппаратов Canon работает, только когда карта защищена от записи.
1. Разработка структурной схемы
Структурная схема проектируемого устройства представлена на рисунке 1.1.
Рисунок 1.1 - Схема структурная
Основной задачей, решаемой при составлении структурной схемы, является определение и рациональное совмещение блоков устройства, которые подключаются к микроконтроллеру.
Проектируемое устройство содержит следующие узлы:
Устройство хранения информации - это SD карта на которой хранится WAV файл.
Устройство декодирования информации - это микроконтроллер ATtiny85 по требованиям ТЗ.
Кнопка(1шт) - переход к следующему треку.
Фильтр нижних частот.
Усилитель мощности.
Устройство вывода информации - динамическая головка 8 Ом.
2. Разработка принципиальной схемы
Микроконтроллер ATtiny85
Характеристики Attiny85:
· 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением
· 8 Кбайт внутрисхемно-программируемой Flash-памяти
· 512 байт EEPROM
· 512 байт встроенной SRAM
· периферия "на борту":
o один 8-разрядный таймер/счетчика
o один 8-разрядный высокоскоростной таймер/счетчик (на 2 PWM)
o универсальная последовательная шина USI с детектором начала обмена
o 10-битный АЦП:
· 4 независимых канала
· 2 пары дифференциальных каналов с выбором усиления (1х, 20х)
· измерение температуры
o внутрисхемное программирование через SPI
o программируемый сторожевой таймер (WATCHDOG) с отдельным генератором
o аналоговый компаратор
o супервизор питания
o внутренний калиброванный осциллятор
· рабочие напряжения 2,7 - 5,5 В
· индустриальный температурный диапазон -40°C to 85°C
· максимальная рабочая частота 20 МГц
Цоколёвка МК приведена на рисунке 2.1.
Рисунок 2 - Цоколевка МК
Фильтр нижних частот
При подключении к усилителю необходимо отфильтровать высокочастотную составляющую НЧ-фильтром. Схема простейшего фильтра нижних частот приведена на рис. 3. Передаточная функция этого фильтра определяется выражением: W(s) = 1/(1+sRC).
Рис 3. Простейший фильтр нижних частот первого порядка.
Заменив s на jw, получим частотную характеристику фильтра. Для реализации общего подхода целесообразно нормировать комплексную переменную s.
S=s/wc,
где wc - круговая частота среза фильтра. В частотной области этому соответствует
jW =j(w /wc).
Частота среза wc фильтра на рис. 3 равна 1/RC. Отсюда получим
S=sRC и W(S)=1/(1+S). (10)
Используя передаточную функцию для оценки зависимости амплитуды выходного сигнала от частоты, запишем
|W(jW)|2 =1/(1+W2).
При W"1, т.е. для случая, когда частота входного сигнала w"wc, |W(jW)| = 1/W. Это соответствует снижению коэффициента передачи фильтра на 20 дБ на декаду.
Параметры R и C фильтра выбираются таким образом, чтобы частота среза фильтра была много меньше рабочей частоты МК.
fмк=48 Мгц
Пусть Rфильтра=20 кОм и Cфильтра=0.01 мкФ, тогда
fср= 1/(2р R C)=1/(2р•20000•0.01•10-6)=1,96Гц
ОУ на TDA 7050
TDA7050 от PHILIPS это стерео усилитель для наушников. Минимальная обвеска, надежность. Не сгорает при переполюсовках, при повышении питания, не требовательна к питанию.
Выпускается в двух корпусах - DIP8 и SO8, питание обычно 3...4В, работает от 1,6В до 6 В.
Малое потребление тока.
3. Разработка ПО
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include "diskio.h"
#include "pff.h"
#define FCC(c1,c2,c3,c4) (((DWORD)c4"24)+((DWORD)c3"16)+((WORD)c2"8)+(BYTE)c1) /* FourCC */ /* рабочая зона */
volatile BYTE FifoRi, FifoWi, FifoCt; /* FIFO управление */
BYTE Buff[256]; /* Wave буфер FIFO */
FATFS fs; /* Объект файловой системы */
DIR dir; /* Объект каталога */
FILINFO fno; /* информация о файле */
WORD rb;
static
DWORD load_head (void)
{
DWORD fcc, sz;
UINT i;
FRESULT res;
res = pf_read(Buff, 256, &rb); /* Загрузить файл заголовка (256 bytes) */
if (res || rb != 256) return res;
if (LD_DWORD(Buff+8) != FCC('W','A','V','E')) return 12;
i = 12;
while (i < 200) {
fcc = LD_DWORD(&Buff[i]); /* FCC */
sz = LD_DWORD(&Buff[i+4]);/* Размер блока */
i += 8;
switch (fcc) {
case FCC('f','m','t',' ') : /* 'fmt ' кусок */
if (sz > 100 || sz < 16) /* Проверить Размер блока */
return 10;
if (Buff[i+0] != 1) /* Проверить тип кодирования (1) */
return 11;
if (Buff[i+2] != 1 && Buff[i+2] != 2) /* Проверить каналы (1/2) */
return 11;
GPIOR0 = Buff[i+2]; /* Флаг канала */
if (Buff[i+14] != 8 && Buff[i+14] != 16)/* Проверить разрешение (8/16) */
return 11;
GPIOR0 |= Buff[i+14]; /* Разрешение флаг */
OCR0A = (BYTE)(F_CPU / 8 / LD_WORD(&Buff[i+4])) - 1; /* Частота дискретизации */
break;
case FCC('f','a','c','t') : /* 'fact' chunk (skip) */
break;
case FCC('d','a','t','a') : /* 'data' chunk (начать играть) */
fs.fptr = i;
return sz;
default : /* Неизвестный кусок (ошибка)*/
return 14;
}
i += sz;
}
return 15;
}
static
FRESULT play (const char *fn)
{
DWORD sz;
FRESULT res;
BYTE sw;
WORD btr;
wdt_reset();
if ((res = pf_open(fn)) == FR_OK) {
sz = load_head(); /* Загрузить файл заголовка */
if (sz < 256) return 99;
fs.flag |= FA_STREAM; /* Задать режим stream */
FifoCt = 0; FifoRi = 0; FifoWi = 0; /* Сброс FIFO */
res = pf_read(0, 512 - fs.fptr, &rb); /* сектор unaligned части */
sz -= rb;
sw = 1; /* Кнопка статус флага */
do {
/* Вперед аудио данных */
btr = (sz > 1024) ? 1024 : (WORD)sz;
res = pf_read(0, btr, &rb);
if (res != FR_OK || btr != rb) break;
sz -= rb;
sw "= 1;
if (bit_is_clear(PINB, 0) && ++sw == 1) break;
wdt_reset();
} while (rb == 1024); /* Повторять до тех пор, пока есть данные для чтения */
}
while (FifoCt) ; /* Ждать FIFO пустой */
OCR1A = 128; OCR1B = 128;
return res;
}
/* Main */
int __attribute__((naked)) main (void)
{
BYTE res;
MCUSR = 0; /* Включить WDT */
wdt_enable(WDTO_1S);
// OSCCAL += 2; /* Настройте внутренний osc */
PORTB = 0b111011; /* Инициализировать порт: H H H L H P */
DDRB = 0b111110;
PLLCSR = 0b00000110; /* Выбрать PLL часы для TC1.ck */
GTCCR = 0b01100000; /* Включить TC1.OCB как ШИМ-out (L-ch)*/
OCR1B = 128;
#if STEREO
TCCR1 = 0b01100001; /* Включить TC1.OCB как ШИМ-out (L-ch))*/
OCR1A = 128;
#else
TCCR1 = 0b00000001; /* Начать TC1 */
#endif
TCCR0A = 0b00000010;/* ВключитьTC0.ck = 2 МГц интервал таймера*/
TCCR0B = 0b00000010;
OCR0A = 255;
TIMSK = _BV(OCIE0A);
GPIOR0 = 1;
sei();
for (;;) {
res = pf_mount(&fs); /* Инициализировать FS */
if (res) continue;
Buff[0] = 0; /*Открыть звуковой файл (корневой каталог)*/
res = pf_opendir(&dir, (char*)Buff);
if (res) continue;
for (;;) { /* Воспроизведение всех файлов в каталоге */
res = pf_readdir(&dir, &fno);
if (res || !fno.fname[0]) break;
if (fno.fattrib & (AM_DIR|AM_HID)) continue;
res = play(fno.fname);
if (res) break;
}
}
for(;;) ;
}
Заключение
В результате выполнения курсового проекта был разработан WAV плеер.
Разработанная конструкция отличается простотой схемотехнического решения, небольшим количеством использованных в схеме комплектующих элементов, является практически универсальной и может легко изменяться и расширяться.
Список использованной литературы
1. Справочник по AVR-микроконтроллерам: Пер. с англ.-М.: ДМК Пресс, 2004.-512 с.
2. Справочник. Микроконтроллеры: архитектура, программирование, интерфейс. Бродин В.Б., Шагурин М.И. М.:ЭКОМ, 1999.
3. Тавернье К. AVR-микроконтроллеры. Практика применения: Пер. с фр. - М.: ДМК Пресс, 2003.-272 с.
4. Левкович В.Н., Каленкович Е.Н., Казека А.А. Микропроцессорные устройства. Лабораторный практикум: Минск БГУИР, 2012. - 92 с.
Размещено на Allbest.ru
Подобные документы
Разработка структурной схемы усилителя низкой частоты. Расчет структурной схемы прибора для усиления электрических колебаний. Исследование входного и выходного каскада. Определение коэффициентов усиления по напряжению оконечного каскада на транзисторах.
курсовая работа [1,1 M], добавлен 01.07.2021Разработка конструкции печатной платы "MP3-плеера", воспроизводящего файлы аудио формата и передающего аудио сигнал через разъем. Обоснование методов конструирования, структуры и разработка компоновочной схемы изделия. Расчет надежности устройства.
курсовая работа [4,9 M], добавлен 03.07.2013Логическое, схемотехническое и топологическое проектирование делителя частоты с переменной скважностью выходного сигнала, маршрут его изготовления. Разработка технологического маршрута изготовления КМОП ИС. Электрохимическое осаждение плёнок пермаллоя.
дипломная работа [2,5 M], добавлен 26.07.2017Проектируемое устройство для сбора и хранения информации как информационно-измерительная система исследований объекта. Выбор элементной базы и принципиальной схемы аналого-цифрового преобразователя. Расчет автогенератора и делителя частоты, блока питания.
контрольная работа [68,9 K], добавлен 17.04.2011Анализ структурной схемы системы передачи информации. Помехоустойчивое кодирование сигнала импульсно-кодовой модуляции. Характеристики сигнала цифровой модуляции. Восстановление формы непрерывного сигнала посредством цифро-аналогового преобразования.
курсовая работа [2,6 M], добавлен 14.11.2017Выбор частоты дискретизации широкополосного аналогового цифрового сигнала, расчёт период дискретизации. Определение зависимости защищенности сигнала от уровня гармоничного колебания амплитуды. Операции неравномерного квантования и кодирования сигнала.
курсовая работа [2,0 M], добавлен 18.07.2014Определение передаточной функции цепи. Анализ частотных, временных, спектральных характеристик радиотехнических цепей. Исследование влияния параметров цепи на характеристики выходного сигнала. Нахождение выходного сигнала методом интеграла наложения.
курсовая работа [607,6 K], добавлен 09.08.2012Сравнительный анализ существующих способов построения телевизионных камер на приборах с зарядовой связью. Разработка структурной схемы. Синтез схемы управления выходным регистром, а также разработка принципиальной схемы генератора тактовых импульсов.
дипломная работа [2,6 M], добавлен 20.11.2013Определение дальности частотным способом. Расчет основных характеристик и описание алгоритма. Разработка структурной схемы, блок схемы и текста программы. Измерение изменения частоты излучаемых колебаний за время прохождения сигнала до цели и назад.
курсовая работа [71,9 K], добавлен 07.02.2011Анализ прохождения сигнала через линейное устройство. Анализ выходного сигнала на основании спектрального метода. Передаточная функция линейного устройства и его схема. Анализ спектра выходного сигнала. Расчёт коэффициента усиления по постоянному току.
курсовая работа [168,3 K], добавлен 25.05.2012