Вы находитесь на странице: 1из 9

Министерство науки и высшего образования Российской Федерации

ФГАОУ ВО «Севастопольский государственный университет»


Институт Радиоэлектроники и интеллектуальных технических систем
Кафедра «Радиоэлектронные системы и технологии»

Отчет
по лабораторной работе №2
«ПРЯМОЙ ЦИФРОЙ СИНТЕЗ АНАЛОГОВЫХ СИГНАЛОВ С
ПОМОЩЬЮ СИГНАЛЬНЫХ ПРОЦЕССОРОВ TMS320C5535»
по дисциплине
«Системы цифровой обработки сигналов»

Выполнил: ст. гр. РС/с-18-1-о


Наумов Я.А.
Защитил с оценкой_______
Принял:
Тыщук Ю.Н.

Севастополь
2023
2

1. ОПИСАНИЕ ЛАБОРАТОРНОЙ РАБОТЫ

1.1. Цель работы

- Получение дополнительных навыков разработки систем ЦОС на


примере реализации проекта синтеза аудиосигналов с использованием
отладочного набора разработчика TMS320C5535eZDSP.
- Исследование дополнительных возможностей среды
программирования Code Composer Studio, изучение основных этапов
разработки программного обеспечения под операционную систему реального
времени DSP/BIOS.

1.2. Задание №1

В соответствии с вариантом индивидуального задания (Таблица 1),


необходимо сгенерировать мелодию в виде последовательности звуковых
гармонических сигналов с использованием функции sine ( ), входящей в состав
библиотеки DSPLIB.
Таблица 1 — Индивидуальное задание

В таблице 2.2 указаны ноты и соответствующие им частоты.


В программе 2.1 представлен листинг основного файла проекта main.c,
реализующий воспроизведение заданной последовательности нот с заданными
частотами и длительностями.
Таблица 2.2 — Ноты и соответствующие им частоты
3

1.3. Задание №2

В соответствии с вариантом индивидуального задания, необходимо


синтезировать гармонический сигнал с частотой 2 кГц, частотой дискретизации
44 кГц и частом отсчетов 22 с использованием таблицы кодировки.

2. ВЫПОЛНЕНИЕ ЛАБОРАТОРНОЙ РАБОТЫ

2.1. Выполнение задания №1

Программа 2.1 — Листинг для первого задания


#include "stdio.h"
#include "usbstk5505.h"
#include "aic3204.h"
#include "PLL.h"
#include "sinewaves.h"
Int16 left_input;
Int16 right_input;
Int16 left_output;
Int16 right_output;
#define SAMPLES_PER_SECOND 48000
#define GAIN_IN_dB 0

unsigned int j = 0; // Cycle variable


unsigned int k = 0; // Cycle variable
float time = 0; // Tone length
float freq = 0; // Tone frequency
4

// Tone parameters
float time1 = 0.5; // Length of 1 tone
float time2 = 1; // Length of 2 tone (1,3 sec maximum)
float freq1 = 1000;
float freq2 = 2000;

float freq_Mi = 329.6;


float freq_Mib = 311.1; // Frequency of 1 tone, Hz
float freq_Do = 261.6; // Frequency of 2 tone, Hz
float freq_Dod = 554.4;
float freq_Fa = 349.2;
float freq_Lya = 440.0;
float freq_Lyab = 415.3;
float freq_Sol = 392;
float freq_Re = 293.6;
float time_n[22] = {0.2, 0.2, 0.4, 0.2, 0.2, 0.4, 0.2, 0.2, 0.2, 0.2,
0.8, 0.2, 0.2, 0.4, 0.2, 0.2, 0.4, 0.2, 0.2, 0.2, 0.2, 0.8};
float note[22];
void generate_tone(float frequency, float time)
{
for ( j = 0 ; j < SAMPLES_PER_SECOND * time ;j++ ) // time1
length (in seconds)
{
aic3204_codec_read(&left_input, &right_input); // Configured
for one interrupt per two channels.
left_output = generate_sinewave_1(frequency, 3000);
right_output = left_output;
aic3204_codec_write(left_output, right_output);
}
}
void main( void )
{
USBSTK5505_init( ); // Initialize BSL
pll_frequency_setup(100); //Init the Phase Locked Loop in EEPROM
aic3204_hardware_init(); //Init hardwar interface and I2C for code
aic3204_init(); // Initialise the AIC3204 codec
5

/* Set sampling frequency in Hz and ADC gain in dB */


set_sampling_frequency_and_gain(SAMPLES_PER_SECOND, GAIN_IN_dB);
printf("\nRunning Lab_2 Project\n\n");
printf( "Generate melody on right and left HP output\n\n" );
asm(" bclr XF");

note[0] = freq_Re;
note[1] = freq_Mi;
note[2] = freq_Fa;
note[3] = freq_Re;
note[4] = freq_Mi;
note[5] = freq_Fa;
note[6] = freq_Re;
note[7] = freq_Mi;
note[8] = freq_Fa;
note[9] = freq_Re;
note[10] = freq_Mi;
note[11] = freq_Dod;
note[12] = freq_Re;
note[13] = freq_Mi;
note[14] = freq_Dod;
note[15] = freq_Re;
note[16] = freq_Mi;
note[17] = freq_Lya;
note[18] = freq_Sol;
note[19] = freq_Fa;
note[20] = freq_Mi;
note[21] = freq_Re;
for (k = 0; k < 22; k++)
{
generate_tone(note[k],time_n[k]);
}
/* Disable I2S and put codec into reset */
aic3204_disable();

printf( "\n***Program has Terminated***\n" );


SW_BREAKPOINT;
6

2.2. Выполнение задания №2

Программа 2.3 — Листинг для второго задания


#include "stdio.h"
#include "usbstk5505.h"
#include "aic3204.h"
#include "PLL.h"
#include "sinewaves.h"
#include "sinetable.h"
Int16 left_input;
Int16 right_input;
Int16 left_output;
Int16 right_output;

#define SAMPLES_PER_SECOND 44000


#define GAIN_IN_dB 0

unsigned int j = 0; // Cycle variable


unsigned int k = 0; // Cycle variable
float time = 0; // Tone length
float freq = 0; // Tone frequency

// Tone parameters
float time1 = 0.5; // Length of 1 tone
float time2 = 1; // Length of 2 tone (1,3 sec maximum)

float freq1 = 1000;


float freq2 = 2000;

int N0 = 22; //число отчетов


int freq0 = 2000; //частота сигнала
void main( void )
{
/* Initialize BSL */
USBSTK5505_init( );
7

/* Initialize the Phase Locked Loop in EEPROM */


pll_frequency_setup(100);

/* Initialise hardware interface and I2C for code */


aic3204_hardware_init();

/* Initialise the AIC3204 codec */


aic3204_init();

/* Set sampling frequency in Hz and ADC gain in dB */


set_sampling_frequency_and_gain(SAMPLES_PER_SECOND, GAIN_IN_dB);

printf("\nRunning Lab_2 Project\n\n");


printf( "Generate melody on right and left HP output\n\n" );

asm(" bclr XF");

for (i = 0; i < (N0 - 1); i++)


{
for (j = 0; j < SAMPLES_PER_SECOND*(1 / (N0*freq0)); j++)
{
aic3204_codec_read(&left_input, &right_input);
left_output = (sinetable[i] / 1000);
right_output = left_output;
aic3204_codec_write(left_output, right_output);
}
}

/* Disable I2S and put codec into reset */


aic3204_disable();

printf( "\n***Program has Terminated***\n" );


SW_BREAKPOINT;
}

На Рис. 2.1 представлена временная диаграмма синтезируемого сигнала.


8

Рис. 2.1 — Временная диаграмма сигнала


9

ВЫВОДЫ

В процессы выполнения лабораторной работы была сгенерирована


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

Вам также может понравиться

  • практика
    практика
    Документ10 страниц
    практика
    Ярослав Наумов
    Оценок пока нет
  • Spetsifikatsia
    Spetsifikatsia
    Документ2 страницы
    Spetsifikatsia
    Ярослав Наумов
    Оценок пока нет
  • Perechen Elementov - List 1
    Perechen Elementov - List 1
    Документ2 страницы
    Perechen Elementov - List 1
    Ярослав Наумов
    Оценок пока нет
  • зачёты
    зачёты
    Документ1 страница
    зачёты
    Ярослав Наумов
    Оценок пока нет
  • Kursach PIOS
    Kursach PIOS
    Документ38 страниц
    Kursach PIOS
    Ярослав Наумов
    Оценок пока нет
  • ацуацкуц
    ацуацкуц
    Документ1 страница
    ацуацкуц
    Ярослав Наумов
    Оценок пока нет
  • Perechen Elementov - List 2
    Perechen Elementov - List 2
    Документ1 страница
    Perechen Elementov - List 2
    Ярослав Наумов
    Оценок пока нет