You are on page 1of 69

CCS4 DSP Workshop

Training Guide Document for student



Ti liu hng dn th nghim X l s tn hiu trn phin bn CCS mi 4.x ca
Texas Instruments. Ti liu dnh cho sinh vin chuyn nghnh in t ,H Cng
Nghip TP HCM.

2013
Hoang Nguyen, Electronic Faculty
Industrial University of Ho Chi Minh City
12/1/2013
Draft version
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 1




DSK6416 Labs workshop with
CCS4


Contents
1 Gii thiu v DSP Development Kit ......................................................................................... 2
Gii thiu ....................................................................................................................... 2 1.1
DSK TMS320C6713 v TMS320C6416 .............................................................................. 3 1.2
Code Composer Studio ................................................................................................... 5 1.3
2 Ci t mi trng th nghim cho Kt DSP DSK6416 .............................................................. 6
Ci t CCS4 IDE ............................................................................................................. 8 2.1
Ci t th vin v mi trng pht trin code cho DSK6416 ....................................... 10 2.2
3 Cc bi th nghim DSP trn kit DSK6416 .............................................................................. 11
Lab 1 Lm quen vi CCS4 ........................................................................................... 11 3.1
Lab 2 Thut ton to sng sin trn DSP ...................................................................... 30 3.2
Lab 3 - Giao tip AIC23 X l tn hiu m thanh trn Kit DSK6416 ............................... 36 3.3
Lab 4 - Thit k b lc FIR trn DSK6416 ....................................................................... 42 3.4
Lab 5 - Thit k b lc IIR trn DSK6416 ........................................................................ 53 3.5
Lab 6 - Thut ton bin i Fourier FFT (Optional) ........................................................ 61 3.6
Reference ................................................................................................................................ 68


CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 2

1 Gii thiu v DSP Development Kit
Gii thiu 1.1
B TMS320C6416 v TMS320C6713 Digital Signal Processing Starter Kit
(DSK) ca Texas Instrument l nn tng pht trin gi thnh thp cho cc ng
dng x l tn hiu s thi gian thc. Mi b bao gm mt mch pht trin vi
b x l tn hiu s dng s thc du chm ng TMS320C6713 hoc b x l
tn hiu s dng s thc du chm tnh TMS320C6416 , mt b Audio Codec
TLV320AIC23 v mt Emulator kt ni ti PC qua cng USB. Phn mm chy
trn my tnh l Code Composer Studio (CCS) c cung cp bi TI h tr
vit cc chng trnh C hay ngn ng assembly v c bin dch, dowload ,
chy trn kit DSK.
B x l tn hiu s (DSP) l mt dng vi x l chuyn dng. N c cu trc
v tp lnh ca DSP c ti u ha cho qu trnh x l tn hiu s thi gian
thc. Kit DSK6416 s dng dng DSP h TMS320C6000 (C6x). Cu trc ca b
x l tn hiu s C6x rt thch hp trong cc tnh ton m rng. Da trn kin
trc tp lnh cc di (VLIW), C6x c xem l mt trong nhng h vi x l
mnh m nht ca TI.
B x l tn hiu s c s dng tng i rng ri, t communication v
iu khin n x l ging ni v hnh nh... Chng ta c th thy chng trong
cc thit b in thoi di ng, my fax/modem, a cng, radio, my in, tai nghe,
my chi nhc mp3, HDTV, my nh k thut sc bit DSPs c s dng
ph bin trong iu khin ng c v cc ng dng trong nghnh cng nghip
t v cc ng dng cng nghip. Nhn chung, DSPs c quan tm ch yu khi
chng ta cn x l tn hiu thi gian thc. X l thi gian thc c ngha l qu
trnh phi theo kp vi cc s kin xy ra ngoi.

Hnh 1.1 : Cc ng dng ca DSP
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 3

DSK TMS320C6713 v TMS320C6416 1.2
DSK TMS320C6713


Hnh 1.2 : Kit C6713 DSK
Thng s chnh :
A Texas Instruments TMS320C6713 DSP operating at 225 MHz.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 4

An AIC23 stereo codec
16 Mbytes of synchronous DRAM
512 Kbytes of non-volatile Flash memory (256 Kbytes usable in default
configuration)
4 user accessible LEDs and DIP switches
Software board configuration through registers implemented in CPLD
Configurable boot options
Standard expansion connectors for daughter card use
JTAG emulation through on-board JTAG emulator with USB host interface or
external emulator
Single voltage power supply (+5V)

DSK TMS320C6416

Hnh 1.3 : Kit 6416 DSK
Thng s board C6416 DSK :
A Texas Instruments TMS320C6416T DSP operating at 1 Gigahertz.
An AIC23 stereo codec
16 Mbytes of synchronous DRAM
512 Kbytes of non-volatile Flash memory
4 user accessible LEDs and DIP switches
Software board configuration through registers implemented in CPLD
Configured boot options and clock input selection
Standard expansion connectors for daughter card use
JTAG emulation through on-board JTAG emulator with USB host interface or
external emulator
Single voltage power supply (+5V)
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 5



Code Composer Studio 1.3
CCS cung cp mt mi trng pht trin tch hp (IDE) da trn ngn ng C
cho cc ng dng x l thi gian thc. N cn tch hp c mt trnh dch C ,
assembler v liker , phin bn CCS4 cng h tr cc emulator cho php pht
trin nhanh cc ng dng DSP trn nhiu nn tng khc nhau. Ngoi ra, n cn
h tr kh nng hin th ha v h tr g li thi gian thc.

Hnh 1.4 CCS phin bn mi nht V5.x
Mt project trn CCS s bao gm tt c cc file cn thit, to ra file thc
thi .out . CCS cho php chng ta ty chnh cc option, cc define nh rt nhiu
cc cng c IDE thng dng khc, Bn CCS3.x th ch tng thch vi h iu
hnh Win XP tr v trc. Trong khi cc phin bn mi hn nh CCS4.x hay
CCS5.x h tr Windows 7 v Win Vista c 32 v 64-bit. Cc phin bn CCS4.x
tr ln s dng nn tng java v c giao din i mi v phc tp hn bn CCS
3. B li, chng tch hp hu ht cc dng MCU, DSP v OMAP ca TI vo mt
cng c pht trin duy nht.
Trong phm vi ti liu th nghim ny, chng ta s s dng phin bn CCS
4.x v nn tng phn cng l DSK6416. Tuy vy , Nu chng ta pht trin cc
ng dng ny trn DSK6713, th cng khng c s khc bit nhiu lm v mt
thut ton, ngoi tr vic hiu sut thc thi ca chng c th khc nhau do C6416
c kin trc s thc du chm tnh, so vi C6713 vi kin trc s thc du chm
ng.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 6


2 Ci t mi trng th nghim cho Kt DSP DSK6416
Trong a CD i km theo kit c phin bn CCS3.1 . Tuy nhin, hin CCS3.x
ch chy trn h iu hnh Win XP m khng h tr Win 7 hoc Vista. Do ,
trong ti liu ny, chng ta s s dng bn 4.x mi hn, c h tr Windows 7 v
Vista.
B kit pht trin DSK6416 v DSK6713 ca Texas Instruments .



Mi trng pht trin cn yu cu ti thiu :
CPU Ti thiu Pentum 4 1.8Ghz tr ln
Window XP , Win 7 hoc Vista
CCS phin bn 4.x i km theo ti liu.
Ci t Matlab phin bn 2006 tr ln.
Kit TMS320C6416 hoc TMS6713
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 7


Trong phn ny, chng ta s ci t chng trnh CCS 4.x. Sau , chng ta
s phi thc hin mt s thao tc ci t v setup mi trng pht trin DSP trn
CCS4.x ca Texas Instruments. Phn tip theo chng ta s thc hin cc bi th
nghim v cc thut ton x l tn hiu s, b lc s

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 8

Ci t CCS4 IDE 2.1
Click vo chng trnh ci t ci t CCS4.


Hnh 2.1 : Ci t CCS4
Sau ta chn Next, giao din s hin ra nh sau :

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 9

Hnh 2.2 : Click custom, b cc phn khng cn thit
Bc tip theo ta chn dng chip C54x, C55x, C6000 DSP, cn li u b
chn, nhn next qua mc Select Components. Trong mc ny ta chn tt c.

Hnh 2.3 : Chn cc dng chip v components cn thit.
Sau chn next tin hnh ci t. Ch , trong qu trnh ci t, CCS4 s
t ci t Driver cho b emulator. Do , chng ta phi xc nhn yes cho mt s
hp thoi trong qu trnh ci t.
Nu trong qu trnh ci khng xy ra li g, th CCS4 setup s hin ra bng
thng bo hon tt nh sau :

Hnh 2.4 : Ci t hon tt, nhn Finish kt thc.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 10

Ci t th vin v mi trng pht trin code cho DSK6416 2.2
Sau khi ci t song CCS, ta tin hnh ci t th vin v mi trng pht
trin cho CCS. u tin, ta copy ba th mc : BIOS, CSL, DSK6416 vo th
mc ci t CCS4

Hnh 2.5 : Ci t hon tt, nhn Finish kt thc.
Ty vo h iu hnh , v ty vo th mc ta chn lc ci t, th th mc ci
s khc nhau. Hnh sau v d cho h iu hnh win 7, ci t th mc mc nh

Hnh 2.6 : Ci t hon tt, nhn Finish kt thc.


Trong th mc chnh, ta cn c hai file : c6416dskinit.c v
c6416dskinit.h , Hai file ny l hai file cu hnh cc thit lp c bn
dnh cho Kit DSK, hai file ny s c dng khi ta to project mi.

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 11

3 Cc bi th nghim DSP trn kit DSK6416
Lab 1 Lm quen vi CCS4 3.1
Trong bi Lab ny, chng ta s
c lm quen vi mi trng pht trin CCS4.
Hc cch to mt project mi, import mt project tn ti,
Bin dch mt chng trnh v debug trn phn cng DSK6416


To Project mi vi CCS4

u tin khi ng CCS4 bng cch click vo biu tng CCS4 trn
desktop, hoc trong Programs.

Hnh L-1.1 : Ci t hon tt, nhn Finish kt thc.
Sau l mn hnh hin th yu cu chn Workspace, l khng gian lm vic
ca CCS4. Ta c th chn mc nh ti a C.

Ch , a ch th mc workspace khng nht thit phi l th mc cha cc
projects ca ta sau ny. Do , ta c th chn mc nh a ch ny , v sau ny
khi to project ta s ch nh cho chng th mc khc nu mun.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 12


Hnh L-1.2 : Chn OK ci mc nh, hoc nhn browse chn th mc khc
Bc tip theo s l phn ci t bn quyn cho CCS4. Bi v chng ta khng
c license chnh thc, do ta s chn bn Evaluate 30 days. Chng ta cng c
th to ti khon TI trn website www.ti.com ng k mt license free s
dng.

Hnh L-1.3 : Chn Evaluate 30 days
Sau vo Menu File -> New-> CCS Project nh hnh sau :

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 13


Hnh L1.4 : Chn Evaluate 30 days
Ti hp thoi, ta t tn cho project v chn ni lu tr cho project. Nu chn
Use default location, CCS4 s lu vo th mc ca workspace.

Hnh L-1.5 : Chn Evaluate 30 days
Chn dng DSP s dung, c th y l C6000 family. Sau click Next
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 14


Hnh L-1.6 : Chn dng chip DSP Family cho project
V tip tc chn Next

Hnh L-1.7 : Additional Project Setting
Thit lp nh trong hnh L-1.8 v Finish . Nu mun chn cc example c
sn, th chn Next ri chn cc example nh hnh L-1.9

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 15


Hnh L-1.8 : Chn cc option cho C6416

Hnh L-1.9 : Chn cc example c sn trong CCS4
Sau , ta c mt project trng nh hnh L-1.10, nu CCS4 khng hin ra
nh vy, chng ta click vo View -> C/C++ project
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 16


Hnh L-1.10 : New Project with CCS4
Bc tip theo l thit lp mi trng pht trin cho project.
Click phi vo project helloworld > Properties nh hnh L-1.11.


Hnh L-1.11 : Project Properties
Chn C/C++ Build > Include Options > Thm ba ng dn ti th mc
DSK6416, CSL v BIOS m chng ta copy phn trc.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 17


Hnh L-1.12 : C/C++ Include Options
Ti mc Predefined Symbols, chng ta s nh ngha tn chip s dng l
CHIP_6416


Hnh L-1.13 : C/C++ Include Options
Ti mc File Search Path chng ta thm cc th vin v ng dn cha cc
th vin .
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 18


Hnh L-1.14 : C/C++ Include Options
Trong phn C6000 Linker > Basic Option , Thm Stack Size v Heap Size l
0x400 nh hnh L-1.15. V khai bo Data model l kiu far trong mc C6000
Compiler > Runtime Model Options > Data Access Model nh hnh L-1.16.

Hnh L-1.15 : Khai bo Stack Size v Heap Size
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 19


Hnh L-1.16 : Khai bo Stack Size v Heap Size

Bc tip theo l vit mt chng trnh C helloworld.
Click phi vo project helloworld > New > Source File nh hnh L-1.17.


Hnh L-1.17 : New Project with CCS4
Chn th mc lu file cng vi thu mc cha project. t tn file l
Helloworld.c . Nhn Finish kt thc.

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 20


Hnh L-1.18 : New Project with CCS4
Trong giao din vit code ca file Helloworld.c , Vit on code sau :

#include <stdio.h>

void main (void)
{
printf( \n\rHello World from DSK6416 ! ); //xut message ra console
return ;
}
Sau save li nh sau :

Hnh L-1.19 : New Project with CCS4

Bc tip theo l tin hnh bin dch chng trnh.
Click phi vo Project > Build Active Project
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 21


Hnh L-1.20 : New Project with CCS4
Nu khng b li g trong qu trnh vit code , ta s thu c kt qu nh hnh
L-1.21. Nu c li xy ra. Hy kim tra li code chng trnh, v cc option
chnh cho ng nh hng dn trn hay cha.

Hnh L-1.21 : New Project with CCS4
Bc tip theo to file configuartion kt ni vi DSK6416.
Qui trnh kt ni vi board trong CCS4 c qun l theo kiu target
configuration File. Ngha l , kt ni vi board DSK, ta phi to mt file
config cho board . Vi cch qun l ny, CCS4 cho php chng ta trin khai
ng dng trn nhiu nn tng khc nhau m khng phi thay i nhiu trong mi
trng pht trin.
To file Target Config bng cch vo Target > New target Configuration...
nh hnh L-1.22

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 22


Hnh L-1.22 : New Project with CCS4
i tn thnh Helloworld.ccxml, ri nhn finnish.

Hnh L-1.23 : New Project with CCS4
Sau , chnh cc thng s nh hnh L-1.23, ri save li. Ch , l sau khi
save li file config ta phi c thm file Helloworld.ccxml trong giao din project
nh hnh L-1.24. Nu khng thy file ny, Thc hin li cc bc trn

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 23


Hnh L-1.24 : Target Configuration File for DSK6416

Hnh L-1.25 : File Helloworld.ccxml
Bc tip theo l load chng trnh xung board thc thi.
Trc ht, ta phi kt ni DSK6416 vi PC thng qua cp USB. Qu
trnh kt ni s cn ci t driver Emulator. Trong qu trnh ci t CCS4, n
t ng ci t driver ny. Tuy nhin , nu v l do no m PC cha ci c
driver cho DSK6416 Emulator, th chng ta c th ci li driver trong th mc
DSK Emulator Driver i km vi ti liu ny. Nu qu trnh ci t hon tt, ta
s c phn cng sau trong phn hardware Manager ca Windows nh hnh L-
1.26
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 24


Hnh L-1.26 : Spectrum Digital Emulator for DSK6416
By gi, chng ta s load chng trnh xung board DSK6416 thc thi
bng cch chn Project > Debug Active Project . Nu qu trnh kt ni khng c
li th CCS4 s hin ra mn hnh Debug nh hnh L-1.27. Nu c li xy ra, hy
kim tra li kt ni USB , Driver Emulator hoc reset li board DSK6416.


Hnh L-1.27 : Debug chng trnh Helloworld
Ta ch cc nt Run , Pause , Stop iu khin qu trnh debug chng
trnh, ngoi ra cn c cc icon step, step over
Ta nhn nt Run chy chng trnh , nt Pause dng chng trnh, nu
mun thot khi giao din debug th nhn Stop. V kt qu sau khi thc thi
chng trnh Helloworld thu c trn mn hnh Console nh hnh L-1.28. Nu
khng thy xut hin ca s Console, vo View > Console .
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 25


Hnh L-1.28 : Mn hnh Console khi Run chng trnh Helloworld.c

Import mt project c sn
Trong qu trnh pht trin, bn c th cn import mt project c sn. Cch
thc hin nh sau :
Click File > Import ca s s hin ra bng hi thoi nh hnh L-1.29

Hnh L-1.29 : Import Project
Sau , chn Browse ti th mc cha project mun import. Sau nhn
finish hon tt.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 26


Hnh L-1.30 : Browse to CCS Project
Sau khi Import, ca s qun l project s hin ra project m ta import. Ch
project no in m v c ch [Active - Debug] ngha l ta ang lm vic trn
project . Mun chuyn qua project khc lm vic , click phi vo project
v chn Set as Active project

Hnh L-1.31 : Qun l nhiu project trong CCS4

API giao tip vi ngoi vi trn board DSK6416
i km vi board mch DSK6416, chng ta c nh sn xut cung cp km
theo cc API h tr cho board DSK gip vic giao tip ng dng tr nn n
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 27

gin hn. Trong phn th nghim ny, chng ta s s dng th vin giao tip
vi led v Dip SW.

Vi cc hm API c sn chng ta ch vic khai bo v s dng chng trong
chng trnh ca mnh.
V d: Vit chng trnh giao tip vi LED v DIP trn board DSK6416.
Khi nhn Dip switch 0 th led 1 s sng, ngc li led 1 s tt.
Chng ta s hiu chnh code cho chng trnh Helloworld.c thc hin v
d ny. on code chng trnh c vit li nh sau :
/*
* Demo with LED, DIP on board
* Author : Hoang Nguyen
* Date : 12/1/2013
* Hardware : DSK6416 board
* Platform : CCS4 Texas Instruments
*
*
//Include API library support for DSK6416 board
#include <stdio.h>
#include "dsk6416_dip.h"
#include "dsk6416_led.h"
void main()
{
printf("\n\rHello World from DSK6416 !");
printf("\n\rDemo Led & SW using DSK6416 Library!");
DSK6416_init(); // Init DSK6416 board
DSK6416_LED_init(); //init Led
DSK6416_DIP_init(); //init Dip switch
while(1) {
DSK6416_LED_on(0); //turn on led 0
if(DSK6416_DIP_get(0)) //read dip switch 0 pressed status
DSK6416_LED_on(1); //turn on led 1
else
DSK6416_LED_off(1); //turn off led 1
}
while(1); //stop here
}



CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 28


Hnh L-1.32 : Hiu chnh chng trnh Helloworld.c
Bin dch chng trnh v np code thc thi xung board DSK6416, chng ta
c th gt SW trn board v xem led hin th tng ng.

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 29


Bi tp thm :
1) Vit code hin th led sng ui cho kit DSK6416 ( Gi , s
dng hm delay DSK6416_waitusec() c sn trong th vin
dsk6416.h )
2) VIt code c switch thay i kiu nhp nhy ca led s
dng hm DSK6416_LED_toggle() c sn trong th vin
dsk6416_led.h


CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 30

Lab 2 Thut ton to sng sin trn DSP 3.2
Trong bi lab ny, chng ta s
Tm hiu thut ton to sng sine n gin.
Vit chng trnh C trn DSK6416 bng phng
php tra bng.
S dng cng c graph phn tch ph ca tn hiu

Nguyn l to sng sin :
Trong bi ny chng ta s thc hin thut ton dsp u tin, l to tn hiu
sin bng phng php tra bng. Mt mng sine_table lu tr 8 phn t to
thnh sng sine, c tnh t cng thc sau :
1000sin(2ni8) , trong i chy t 0 ti 7


Hnh L-2.1 : Tn hiu sine tm im
T cng thc ny ta s c mng sng sine nh sau :
sine_table[8]={0,707,1000,707,0,-707,-1000,-707};

Trong bi lab ny, chng ta s vit chng trnh to sng sine bng cch tra
bng nh sau :
u tin l to project sine_gen
To mt project sine_gen nh hng dn bi lab 1. Sau to file
mi c tn l sine_gen.c vi ni dung nh sau:

/*
* Generate a sine wave using table-lookup method
* Author : Hoang nguyen
* File : sine_gen.c
* Date : 14/1/2013
* Rev : 1.0
* Hardware: DSK6416 board
* Platform: CCS4 Texas Instruments
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 31

*/
#include <stdio.h>
//Declare Amplitude of Sine wave
short A = 10;
//create sine wave table
short sine_table[8]={0,707,1000,707,0,-707,-1000,-707};//sine
values
short output_buffer[8];//buffer luu tru du lieu song sine
void main()
{
unsigned int i,j;
printf(" \n\rSine wave generate using Table-Lookup ");
while(1) //infinity Loop sine wave generator
{
for(i=0;i<8;i++){
output_buffer[i] = sine_table[i]*A;
}
}
}

Bc tip theo l thc thi chng trnh trn kit DSK6416.
To file Target Configuration nh hng dn lab 1. Kt ni kit
DSK6416 vi PC thng qua cp USB. Sau bin dch chng trnh v np
chng trnh xung kit bng cch nhn biu tng debug , hoc vo Target->
Debug Active project nh hnh L-2.2


Hnh L-2.2 : lab2 sine_gen example
Tip theo l v th sng sine mi to.
Nhn biu tng Run thc thi code, sau khi chng trnh thc thi
c mt lc, nhn nt pause. Sau , vo Tools -> Graph -> Single Time . Mt
bng cu hnh thng s s hin ra nh hnh L-2.3

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 32


Hnh L-2.3: Tools > Graph > Single Time

Hnh L-2.4: Graph Properties for output_graph
M t cc thng s chng ta cn quan tm:
Acquisition Buffer Size: kch thc ca mng (c th y l 8 byte).
DSP data type : kiu d liu ca bin mng ( c th y l bin c gi tr
l bin nguyn 16bit c du).
Sampling rate: tn s ly mu (ex: 8KHz).
Start Address: tn ca mng mun v th.
Display data size: kch thc ca d liu cn hin th.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 33

Ngoi ra cc thng s khc chng ta mc nh. Sau khi hon tt, nhn OK.
Cng ta s thu c mt th hin th gi tr ca mng output_buffer . chnh
l hnh sine m chng ta to nn. l hnh sine ca chng ta b gp khc,
nguyn nhn l do ta ch dng 8 im to ra tn hiu sine, do tn hiu sine
ny c phn gii kh thp.


Hnh L-2.5: th biu din gi tr ca mng output_buffer
Nhn vo th chng ta c th thy rng mt tn hiu sine output_buffer
c to ra t mng sine_table, v bin ca n tng ln gp 10 ln (bin A
= 10).

Xem xt ph tn hiu ca chng.
Click vo Tools - >Graph->FFT Magnitude . V nhp vo cc thng s
nh hnh 45
.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 34

Hnh L-2.6: Graph Properties for FFT View
Mt s thng s cn quan tm:
Acquisition Buffer Size: kch thc ca mng (c th y l 8 byte).
DSP data type : kiu d liu ca bin mng ( c th y l bin c gi tr
l bin nguyn 16bit c du).
Sampling rate: tn s ly mu (ex: 8KHz).
Start Address: tn ca mng mun v th.
FFT Order: Bc ly FFT.
Ngoi ra cc thng s khc c th tm hiu thm ti liu hng dn ca CCS4.
Sau khi han tt. Nhn OK xem ph ca tn hiu output_buffer nh hnh
L-2.7


Hnh L-2.7: FFT ca tn hiu output_buffer

- Ch l vi tn s ly mu l 8000 (8Khz) th tn hu sine
ca chng ta c tn s l 1KHz. Hy gii thch ti sao ?
- Nu ta mun c sng sine vi tn s 2Khz th tn s ly mu
phi l bao nhiu?



CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 35


Bi tp thm :
1) Vit chng trnh to mt sng sine bao gm tng ca hai
sng sine c tn s 1Khz v 2Khz (vi tn s ly mu l
16Khz)
2) Vit chng trnh to sng sine 16 im , so snh vi ph
ca tn hiu sine 8 im.
3) Hiu chnh chng trnh c tn hiu sine vi bin tng
gp i.
4) Vit chng trnh to sng sine bng phng php ni suy
hoc bng cng thc.





CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 36

Lab 3 - Giao tip AIC23 X l tn hiu m thanh trn Kit 3.3
DSK6416
Trong bi lab ny, chng ta :
Hc cch giao tip khi Audio Codec trn DSK6416 .
Xut tn hiu sng sine ra headphone thng qua
AIC23.
c tn hiu vo t line-in v xut T/H ra headphone

u tin l to project sine_gen
To mt project sine_gen nh hng dn bi lab 2. Sau copy hai
file c6416dskinit.c v c6416dskinit.h vo project v to file source
sine_gen_out.c mi thay th cho file sine_gen.c vi ni dung nh sau :

/*
* Output a sine wave tone to headphone Interface with
AIC23
* Author : Hoang nguyen
* File : sine_gen_out.c
* Date : 14/1/2013
* Rev : 1.0
* Hardware: DSK6416 board
* Platform: CCS4 Texas Instruments
*/
#include <stdio.h>
#include "dsk6416_aic23.h"
unsigned int fs=DSK6416_AIC23_FREQ_8KHZ; //set sampling rate
//Declare Amplitude of Sine wave
short A = 4;
//create sine wave table
short sine_table[8]={0,707,1000,707,0,-707,-1000,-707};//sine
values
short output_buffer[8];//buffer luu tru du lieu song sine
void main()
{
unsigned int i,j;
comm_poll(); //init DSK, codec, McBSP
i=0;j=0;
printf(" \n\rSine wave generate using Table-Lookup ");
while(1) //infinity Loop sine wave generator
{
for(i=0;i<8;i++){
output_buffer[i] = sine_table[i]*A;
output_sample(output_buffer[i]); //xuat ra
AIC23
}
}
}

Trong source code ny, chng ta s dng th vic AIC23 (dsk6416_aic23)
ca DSK6416. Th vin ny cho php chng ta giao tip vi chip audio codec
trn kit DSK6416 , th vin ny s dng mt phn cng c tn l McBSP trn
Chip C6416, phn cng ny h tr giao tip trc tip vi cc chun m thanh nh
I2S , AIC rt tin li , xem hnh 47.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 37

s dng th vin, chng ta cn phi include file dsk6416_aic23. ng thi
add hai file c6416dskinit.c v c6416dskinit.h vo project. Hai file ny gip cho
chng ta khi to v cu hnh th vin d dng.

Hnh L-3.1: Giao tip vi AIC23 s dng McBSP ca C6416
Trong file chng trnh, trc tin chng ta cn khai bo tn s ly mu l
8Khz. V trong hm main , chng ta s dng hm compoll() khai bo s dng
th vin giao tip AIC23, trong bi ny, chng ta s xut d liu bng phng
php polling data. xut d liu ra chip AIC23, chng ta s dng hm
output_sample() .
Bc tip theo l thc thi chng trnh trn kit DSK6416.
To file Target Configuration nh hng dn lab 1. Kt ni kit
DSK6416 vi PC thng qua cp USB, kt ni headphone nh hnh L-3.2. Sau
bin dch chng trnh v np chng trnh xung kit bng cch nhn biu
tng debug , hoc vo Target-> Debug Active project
Chy chng trnh v nghe m thanh pht ra trn headphone. Nu khng thy
m thanh, kim tra li source code v kt ni kit DSK6416.

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 38

Hnh L-3.2: Kt ni DSK6416 vi Headphone nghe tone 888hz
Hiu chnh code to ra cc tn s 100Hz,1Khz,10Khz . Nghe tn hiu
trn headphone v nhn xt?

Audio Loop back
Bc tip theo, chng ta s phi hiu chnh source code thc hin ng
dng loopback audio nh hnh L-3.3. Trong bi trc, chng ta ch mi bit xut
m thanh ra chip AIC23, trong phn ny, chng ta s tm hiu cch c d liu
audio analog thng qua chip AIC23 nh hnh L-3.4.

Hnh L-3.3: Kt ni DSK6416 cho v d Audio Loopback

Hnh L-3.4: DSK6416 giao tip vi AIC23
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 39

c d liu t AIC23 qua ng Line in , s dng hm input_sample() .
Da vo hm ny, hy vit code thm vo on chng trnh sau c d liu
t my pht nhc , sau xut ra headphone nh hnh L-3.3.
/*
* Audio loopback example
* Author : Hoang nguyen
* File : audio_loopback.c
* Date : 14/1/2013
* Rev : 1.0
* Hardware: DSK6416 board
* Platform: CCS4 Texas Instruments
*/
#include <stdio.h>
#include "dsk6416_aic23.h"
unsigned int fs=DSK6416_AIC23_FREQ_8KHZ; //set sampling rate
void main()
{
unsigned int i,j;
comm_poll(); //init DSK, codec, McBSP
i=0;j=0;
printf(" \n\r Audio Loopback using AIC23 ");
while(1) //infinity Loop Application
{
// hy vit code y thc hin
// chc nng nh m t phn trn
}
}

To project mi c tn l audio_loopback.
Sau to file source code mi l audio_loopback.c, hy nh nhng
don code trn vo file audio_loopback.c , sau thm cc on code thc
hin yu cu ca bi th nghim da vo bng m t cc hm trong th vin nh
sau :
M t cc hm c trong th vin c6416dskinit.c
Hm M t
Void c6416_dsk_init () Thit lp board DSK6416 v McBSP giao
tip AIC23
Void comm_poll() Thit lp board DSK6416 v McBSP, v
thit lp mode polling cho McBSP
void comm_intr() Thit lp board DSK6416 v McBSP, v
thit lp mode interrupt cho McBSP
void output_sample (Uint32
out_data)
Xut d liu audio stereo ra AIC23
Outdate : d liu integer 32bit ghp gia
knh left v right m ta mun xut ra
AIC23
void output_left_sample
(short out_data)
Xut d liu audio mono knh left ra
AIC23
Outdate : d liu integer 16bit knh left m
ta mun xut ra AIC23
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 40

void output_right_sample
(short out_data)
Xut d liu audio mono knh right ra
AIC23
Outdate : d liu integer 16bit knh right
m ta mun xut ra AIC23
Uint32 input_sample () c d liu stereo audio-in t AIC23, tr
v d liu stereo ghp gia knh left v
right thnh gi tr 32-bit
short input_left_sample () c d liu mono audio-in t AIC23, tr v
d liu mono knh left 16-bit
short input_right_sample () c d liu mono audio-in t AIC23, tr v
d liu mono knh right 16-bit


CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 41


Bi tp thm :
1) Vit chng trnh to 7 tn hiu sng sine c tn s ca 7 nt nhc
: , R , Mi , Pha , Son , La , Si . Cho tn s ly mu l 24Khz.
2) Vit chng trnh chi nhc n m bi happy birthday (Gi
s dng bi tp s 1 v cc hm delay to ra on nhc mong
mun)
3) Vit chng trnh to cng tn hiu t line-in vi sng sine to
lab 2 ri xut ra headphone.



CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 42

Lab 4 - Thit k b lc FIR trn DSK6416 3.4
Trong bi lab ny, chng ta s:
Thit k b lc FIR trn matlab.
T/H b lc bng PP x l theo khi (Block processing)
T/H b lc bng PP x l theo mu (Sample by sample)


L thuyt v bc lc FIR
Nh chng ta bit b lc FIR c c trng bi :
y(n) = (n) x(n)
Vi x(n) l tn hiu ng vo, h(n) l p ng xung ca b lc, y(n) l tn hiu
ng ra sau khi c lc. tnh tch chp ny chng ta c th s dng mt s
phng php nh sau:
i vi phng php x l khi chng ta s s dng mt s phng php sau:
a. Dng tch chp (convolution)
y l phng php tnh tch chp trc tip . i vi tn hiu dng LTI s
c tnh theo cng thc ny.
y(n) = (i)x(])
,]
+]=n

Cng thc ny s tnh tng tt c cc gi tr h(i)x(j) vi i+j = n. Trong
phng trnh trn i,j ph thuc vo c tnh t nhin ca b lc v d liu u
vo l h(n) v x(n).

b. Dng trc tip(direct form)
y(n) = (m)x(n m)
mIn (n.M)
m=max (0,n-L+1)

Vi M l bc ca b lc nhn qu FIR vi p ng xung h(i) , i = 0,1,2.M.
L l chiu di ca chui d liu ng vo (c th l s mu ng vo).
Nh vy khi d liu ng ra s c chiu di nh sau:
L
y
= L+M
Suy ra: 0 n L+M-1
c. Dng tuyn tnh bt bin theo thi gian LTI (LTI form)

y(n) = x(m)(n m)
mIn (n,L-1)
m=max (0,n-M)

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 43


Vi L l chiu di (s mu) ca ng vo,
M l bc ca b lc c p ng xung h(i),vi i= 0,1,2M.
n = 0,1,2,.L+M-1. L chiu di ca tn hiu ng ra.

d. Trng thi tc thi v trng thi tnh.
y(n) = (m)x(n m)
M
m=0

Vi 0 n L 1.
y c xem nh l phng trnh vo ra I/O cho tt c b lc FIR bc
M. Nhm mc ch vit chng trnh, ngi ta s s dng cng thc b , bi
cng thc ny khng dn n vic vt qu vng bin ca dy.
Trong bi lab ny, chng ta s thc hin b lc FIR trn CCS4 bng phng
php x l khi v x l mu.
* Phng php x l khi (block processing method)
y l phng php x l mt khi d liu c sn x(n) v cho ra mt khi
d liu mi y(n).
Trc tin, ta s thit k b lc trn matlab s dng FDA Toolbox nh hnh
L-4.1. T , chng ta s thu c cc h s p ng xung h(n) ca b lc, c
th trong phn ny s l thit k b lc FIR thng thp (lowpass fir filter) bc 121
kiu Equiripple .
y l p ng xung ca b lc thu c trn Matlab vi cc thng s sau:

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 44


Hnh L-4.1: Thit k bc lc FIR trn matlab FDATool
Thng s b lc nh sau:
Specify order: l bc ca b lc 121
Fs : l tn s ly mu 32KHz
Fpass: tn s ct passband 300Hz
Fstop : Tn s ct stopband 3Khz
Sau khi thit k xong, FDA Tool ca Matlab s sinh ra cc h s b lc
h(n) . chnh l cc h s ca b lc, v cc h s ny t, ta s include
trc tip cc h s ny vo CCS4 bng tay thc hin thut ton lc FIR. Trong
bi th nghim ny, chng ta s s dng mt khi d liu m thanh 150.000 mu,
l ging ni demo thu trn PC lu trong file Speech.h . Ta s thc hin b lc
FIR tn s thp trn on speech ny, v chng ta s xem xt hiu ng ca n
nh th no.
To mt project mi c tn l fir_filter_block_processing v copy cc file
c6416dskinit.h , c6416dskinit.h v Speech.h nh hnh L-4.2.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 45


Hnh L-4.2 : Lab 4 FIR Filter Block Processing
Sau to file mi c tn main.c v thm source code cho chng trnh
main.c nh sau s dng cng thc :
y(n) = (m)x(n m)
M
m=0
, Vi 0 n L 1.

/*
* Project: fir filter deisgn on DSK6416 board
* Block processing method
* Author : Chu Manh Cuong
* Date: 24/8/2011
* Board support: DSK6416 TI
* Platform: CCS4
*
*/
//include library support
#include <stdio.h>
#include "dsk6416_aic23.h"
#include "Speech.h"
#include <dsk6416_led.h>
Uint32 fs=DSK6416_AIC23_FREQ_32KHZ; //set sampling rate
//macro function
#define max(a,b) (((a)>(b))?(a):(b))
#define min(a,b) (((a)<(b))?(a):(b))
//set gain
#define GAIN 10
//filter order
#define FIL_ORDER 122
//init lenght of input and output
#define INPUT_LEN SPEECHBUF
#define OUTPUT_LEN INPUT_LEN
//include filter coeffciens
const short h[FIL_ORDER] = {0, 0, 0, 0, 0,
0, 0,
0, 0, 1, 1, 1, 1, 2, 2,
2,
1, 0, -2, -5, -8, -12, -16, -20,
-22,
-21, -17, -8, 5, 22, 44, 67, 90,
109,
119, 117, 99, 62, 6, -69, -157, -252, -
343,
-417, -461, -460, -402, -277, -79, 191, 526,
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 46

915,
1339, 1773, 2192, 2568, 2876, 3095, 3208, 3208,
3095,
2876, 2568, 2192, 1773, 1339, 915, 526, 191,
-79,
-277, -402, -460, -461, -417, -343, -252, -157,
-69,
6, 62, 99, 117, 119, 109, 90, 67,
44,
22, 5, -8, -17, -21, -22, -20, -16,
-12,
-8, -5, -2, 0, 1, 2, 2, 2,
1,
1, 1, 1, 0, 0, 0, 0, 0,
0,
0, 0, 0, 0, 0};
signed long temp;
//init output buffer y
short y[OUTPUT_LEN];
void main()
{
int i,n;
comm_poll(); //init dsk6416 board and DAC,ADC
DSK6416_LED_init(); //LEDs init

/*fir filter with block processing method
*/
for(n=0;n<OUTPUT_LEN;n++)
{
y[n]=0;
temp = 0;
for(i=0;i<FIL_ORDER;i++)
temp += h[i]*(Speech[n-i]);
y[n] = GAIN*(temp/500000);
}
//Output to headphone
for(n=0;n<SPEECHBUF;n++)
output_sample(Speech[n]); //Original Voice

for(n=0;n<OUTPUT_LEN;n++)
output_sample(y[n]+2000); //Filtered Voice
return;
}

Chy chng trnh trn Kit DSK6416 .
Chy chng trnh v nghe headphone xem s khc bit gia vic c b
lc v khng c b lc nh hnh 53.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 47


Hnh L-4.3 : Lab 4 FIR Filter Example
Xem xt p ng b lc thc t, v phn tch ph tn hiu in/out . V
th graph ca bin h(n). Chy chng trnh v nghe headphone xem
s khc bit gia vic c b lc v khng c b lc.
p ng ca b lc c v trn CCS. Hy so snh vi p ng l tng v
trn matlab

Hnh L-4.4 : p ng ca b lc FIR v trn CCS.
Ph tn s ca tn hiu input speech:
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 48



Hnh L-4.5: th ph ca tn hiu Speech input
Ph tn s ca tn hiu sau b lc. So snh v nhn xt vi ph tn hiu u
vo

Hnh L-4.6 : th ph ca tn hiu output, sau khi qua b lc FIR thng thp

* Thit k b lc FIR thng thp vi phng php sample-by-sample

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 49

Trong phng php ny, d liu c x l tng mu thi im hin ti
bng gii thut DSP cho cc mu ng ra. Phng php ny dng ph bin
trong cc ng dng thi gian thc nh mch lc thi gian thc p dng cho tn
hiu di, x l cc hiu ng m thanh s, cc h thng iu khin s, v x l tn
hiu thch nghi
Thut ton x l mu trc tip (sample by sample ) thc hin theo thut ton
nh sau:

w
0
=x; //c d liu hin thi
y = h
0
w
0
+ h
1
w
1
+ h
2
w
2
+h
3
w
3
+h
N-1
w
N-1
; //Tnh d liu u ra
w
N-1
= w
N-2
; //Cp nht cc tn hiu tr
w
N-2
= w
N-3


w
1
= w
0

vi N l bc ca b lc, x l u vo, y l u ra, h
i
l h s b lc v w
i
l
bin trung gian.
S dng tng t v d trn vi b lc thit k bng Matlab. To mi
project fir_filter_sample_by_sample tng t nh trn v vit code cho file
main nh sau :
/*
* Project: Audio filter on DSK6416 board
* Author : Hoang Nguyen
* Date: 18/1/2013
* Board support: DSK6416 TI
* Platform: CCS4
*
*/
//include library support
#include <stdio.h>
#include "dsk6416_aic23.h"
#include "dsk6416_led.h"
#include "dsk6416_dip.h"
Uint32 fs=DSK6416_AIC23_FREQ_32KHZ; //set sampling rate
//set gain
#define GAIN 10
//filter order
#define FIL_ORDER 122
//include filter coeffciens
const short h[FIL_ORDER] = {0, 0, 0, 0, 0,
0, 0,
0, 0, 1, 1, 1, 1, 2,
2, 2,
1, 0, -2, -5, -8, -12, -16, -
20, -22,
-21, -17, -8, 5, 22, 44, 67,
90, 109,
119, 117, 99, 62, 6, -69, -157, -
252, -343,
-417, -461, -460, -402, -277, -79, 191,
526, 915,
1339, 1773, 2192, 2568, 2876, 3095, 3208,
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 50

3208, 3095,
2876, 2568, 2192, 1773, 1339, 915, 526,
191, -79,
-277, -402, -460, -461, -417, -343, -252, -
157, -69,
6, 62, 99, 117, 119, 109, 90,
67, 44,
22, 5, -8, -17, -21, -22, -20, -
16, -12,
-8, -5, -2, 0, 1, 2, 2,
2, 1,
1, 1, 1, 0, 0, 0, 0,
0, 0,
0, 0, 0, 0, 0};

//temp variable for convolution
signed long temp;

short w[FIL_ORDER];
short x;
short y;

void main()
{
int i,n=0;
comm_poll(); //init dsk6416 board and DAC,ADC
DSK6416_LED_init(); //LEDs init
DSK6416_DIP_init();
for(i=0;i<FIL_ORDER;i++)
w[i]=0;
while(1) //infinity app loop
{
if(DSK6416_DIP_get(0)==0)//bypass audio
{
DSK6416_LED_on(0); DSK6416_LED_off(3);
x = input_left_sample();
output_sample(x);
}
else if(DSK6416_DIP_get(0)==1)//filtered audio
{
DSK6416_LED_off(0); DSK6416_LED_on(3);
if(n>=FIL_ORDER)n=0;
else n++;
//Read current sample frim line-in
x = input_left_sample();
w[0] = x;
temp = 0;
for(i=0;i<FIL_ORDER;i++)
temp += h[i]*w[i];
y = GAIN*(temp/500000);
for(i=FIL_ORDER-1;i>0;i--)
w[i] = w[i-1];

//Output to Headphone
output_sample(y);
}
}
}

Kt ni phn cng nh hnh 4.6. Sau chng ta s load chng trnh xung
kit DSK6416 .
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 51

Khi chy chng trnh, chng ta s dng Dip switch SW[0] chn mode
hot ng gia s dng b lc v khng c b lc. Nhn xt v hiu ng thu
c.

Hnh L-4.7 : Audio FIR Filter Example
Nh vy, qua bi th nghim ny, chng ta hc cch thit k mt b lc
FIR , v thc hin chng trn kit DSP. c bit l chng ta bit cch x l tn
hiu audio realtime v xem xt c hiu ng thc t ca chng. Trong bi sau ,
chng ta s xem xt mt dng b lc khc , l dng IIR v cch thc hin b
lc IIR s dng ghp cascade cc tng SOS (Second-Order Section) rt thng
dng trong thc t.

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 52


Bi tp thm :
1) Vit chng trnh thu m thnh t line-in, thc hin b lc FIR
trn hai knh stereo v xut ra headphone bng phng php
sample by sample..
2) Thit k b lc thng di bc 65 , s dng Hamming windows,
vi tn s ct l 2500Hz, tn s ly mu 8Khz.
3) Thit k b lc thng cao bc 89 , s dng Hamming windows,
vi tn s ct l 2200Hz, tn s ly mu 8Khz.
4) Vit chng trnh tnh p ng tn s ca b lc FIR trn CCS4.


CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 53

Lab 5 - Thit k b lc IIR trn DSK6416 3.5
Trong bi thc hnh ny, chng ta s :
Thit k b lc IIR bng cng c FDATool ca matlab
Vit chng trnh C thc hin b lc IIR bng thut ton
x l theo tng mu cho dng audio lin tc.


Xem xt phng trnh vo ra I/O sau :

Hoc tng ng.

Phng trnh c dng qui ny chnh l cng thc ca b lc IIR (B lc
p ng xung v hn). Ta thy rng tn hiu u ra hin ti y(n) , ngoi vic ph
thuc vo cc tn hiu u vo trc x(n-k) nh b lc FIR, n cn ph thuc
vo cc tn hiu u ra trc y(n-k) .
Cc dng cu trc ca b lc IIR :
Cu trc Direct form I
Cu trc Direct form II
Cu trc ghp cascade
Cu trc ghp song song.
Dng Direct form I c m t tng qut nh hnh 5.1
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 54


Hnh L-5.1 : IIR dng Direct form I
Dng Direct form II l dng ph bin hn vi s khi delay gim mt na so
vi dng direct form I.

Hnh L-5.2 : IIR dng Direct form II
Cn dng ghp cascade v song song l dng ghp nhiu b lc bc thp
c bc lc vi bc cao hn nhm tng hiu sut ca b lc.
Trong bi lab ny , chng ta s dng b lc IIR SOS (Second Order Section)
l dng Direct form II ghp dng cascade nhiu tng, vn rt ph bin trong thc
t. Mi tng SOS c cu trc nh sau:
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 55


Sau , chng ta ghp nhiu b SOS li theo kiu cascade c cc b lc vi h
s cao hn. Hnh 5.3 m t mt b lc IIR bc 4 s dng hai b lc SOS bc hai
ghp kiu cascade.

Hnh L-5.3 : IIR dng Direct form II SOS mc cascade
Bc u tin, l thit k b lc IIR SOS bng cng c matlab
FDATool . Trong bi thc hnh ny, chng ta s thit k mt b lc IIR s
dng 8 tng SOS kiu Chebyshev II nh hnh 5.2 . Sau khi thit k xong ta s to
ra file impinv.cof cha h s ca cc tng SOS. Thng s b lc IIR nh sau:
IIR Type : Low pass Filter (Chebyshev II)
Sections : 8
Fs : 32Khz
Fstop : 3Khz
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 56


Hnh L-5.4 : IIR SOS Design by Matlab FDATool
To mt project mi c tn l IIR_SOS_Filter v copy cc file
c6416dskinit.h , c6416dskinit.h v impinv.h nh hnh 5.3.

Hnh L-5.5 : Lab 5 IIR Filter using SOS stages
Sau to file mi c tn main.c v thm source code cho chng trnh
main.c nh sau :

/*
* INDUSTRIAL UNIVERSITY of HO CHI MINH CITY
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 57

* Project : IIR_SOS_filter
* Description : Implementation of IIR Filter Using
* Cascaded Second Order Direct Form II Sections
* Author : Hoang Nguyen
* Date: 19/1/2013
* Board support: DSK6416 TI
* Platform: CCS4
*
*/

//include library support
#include <stdio.h>
#include "dsk6416_aic23.h"
#include "dsk6416_led.h"
#include "dsk6416_dip.h"
#include "impinv.cof"


Uint32 fs=DSK6416_AIC23_FREQ_32KHZ; //set sampling rate

//#define DEBUG

short x_buffer[500]={0}; //Input buffer
short y_buffer[500]={0}; //Output buffer


float w[NUM_SECTIONS][2] = {0};

void main()
{
int i,j,sect;
float xn=0;
float wn=0;
float yn=0;
short input,output;

comm_poll(); //init dsk6416 board and DAC,ADC
DSK6416_LED_init(); //LEDs init
DSK6416_DIP_init(); //DIPs SW init

for(i=0;i<NUM_SECTIONS;i++)
{
w[i][2] = 0;
w[i][1] = 0;
w[i][0] = 0;
}

while(1) //Infinity Loop App
{
if(DSK6416_DIP_get(0)==1)//bypass audio
{
DSK6416_LED_on(0);DSK6416_LED_off(1);
DSK6416_LED_off(2);
input = input_left_sample();
x_buffer[i++]=input;
if(i>499) i =0;
output_sample(input);
}
else if(DSK6416_DIP_get(0)==0)//filtered audio
{
DSK6416_LED_off(0);DSK6416_LED_off(1);
DSK6416_LED_on(2);
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 58

xn = input_left_sample();
x_buffer[i++]=(short)xn;
if(i>499) i =0;
for (sect=0 ; sect< NUM_SECTIONS ; sect++)
{
wn = xn - a[sect][0]*w[sect][0]
- a[sect][1]*w[sect][1];
#ifdef DEBUG
printf("w[%d] = %f \n",i,wn);
#endif
yn = b[sect][0]*wn +
b[sect][1]*w[sect][0]
+ b[sect][2]*w[sect][1];
#ifdef DEBUG
printf("y[%d] = %f\n",i,yn);
#endif
w[sect][1] = w[sect][0];
w[sect][0] = wn;
xn = yn; //output of current
section
//will be input to next
}
output = (Uint32)yn;
y_buffer[j++]=(short)yn;
if(j>499) j =0;
output_sample(output);//Send to headphone DAC

}
}
}


Chy chng trnh trn Kit DSK6416 . Build v chy chng trnh v
nghe headphone xem s khc bit gia vic c b lc v khng c b
lc nh hnh 5.4. S dng SW[0] chn c b lc v khng c b mc

Hnh L-5.6 : Lab 5 IIR Filter Example
Xem xt p ng tn s ca b lc. V th graph ph ca tn hiu
x_buffer v y_buffer. Hy so snh v nhn xt ph ca tn hiu audio trc
v sau khi s dng b lc IIR.
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 59


Hnh L-5.7 : Ph tn hiu u vo


Hnh L-5.8 : Ph tn hiu sau b lc IIR
Thay i h s b lc high pass filter. Hy thay i b lc high pass filter
bng cch s dng h s trong file hp_sos16_iir.cof . H s ca b lc ny
c to bi cng c FDAtool ca matlab vi thng s nh hnh 5.6 .
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 60


Hnh L-5.9 : High pass Filter tn s ct 3Khz
Load chng trnh xung DSK6416 v nhn xt v hiu ng ca b lc

Bi tp thm :
1) Thit k b lc chn lc bc 16 s dng ghp tng SOS , s dng
Hamming windows, vi tn s ct l 888Hz, tn s ly mu 8Khz.
2) Vit chng trnh tnh p ng tn s ca b lc IIR trn CCS4.
3) Vit tn hiu gi ngu nhin trn CCS4 v a vo b lc xem
p ng ca u ra.
4) Vit chng trnh sine_sweep to tn s sng sin qut t tn s
300Hz ti 10Khz trn CCS4


CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 61

Lab 6 - Thut ton bin i Fourier FFT (Optional) 3.6
Trong bi thc hnh ny, chng ta s :
Vit chng trnh C thc hin b lc thut ton x l
Fourier nhanh FFT (Fast Fourier Transform) da trn thut ton
DFT. V ng dng vo vic phn tch ph ca tn hiu bt k.


Thut ton bin i Fourier ri rc l thut ton bin i tn hiu min thi
gian thnh tn hiu tng ng trong min tn s.
Cng thc DFT ca tn hiu ri rc theo thi gian x(n) c dng nh sau :
X() = x(n)c
-]on
L
n=0


=
2nk
N
hoc =
ks
N


N l s im ly DFT.
L l chiu di khung (frame length) ly DFT.

To project trn CCS:


Vit chng trnh nh sau:
/*
* INDUSTRIAL UNIVERSITY of HO CHI MINH CITY
* Implement DFT with C program
* Author: Chu Manh Cuong
* Project : example_dft
* Date: 23/9/2011
* Hardware : DSK6416
* Platform : CCS4
*/
#include <stdio.h>
#include <math.h>
#include "dsk6416_aic23.h"
#include "dsk6416_led.h"
#include "dsk6416_dip.h"
Uint32 fs = DSK6416_AIC23_FREQ_8KHZ;

/*setting N point DFT*/
#define N 128 //N point DFT
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 62

#define L 8 //leght of x
#define Fs 8000 //sampling frequency for calculate fk (at fk,
magnitude is max)
/*creat a sine wave table for example*/
short x[L] = {0,707,1000,707,0,-707,-1000,-707};

/*declare struct for Complex*/
typedef struct tagComplex {
float real;
float img;
}Complex;
Complex X[N], z; //declar variables complex

struct tagMagnitude{
short max;
Uint32 loc;
}Magnitude;

/*put DFT value to DFT array, note value at here is complex*/
short DFT_Complex[N];
/*real part of DFT*/
short DFT_Real[N/2];
/*wk, to calculate DFT*/
/*pi constant*/
#define pi 3.14

/*Detect peak of Frequency Spectrum array*/

short max_DFT(Uint32 *loc)
{
short max;
int i;
max = DFT_Real[0];
*loc = 0;
for( i=0;i<N/2;i++)
{
if(DFT_Real[i]>max)
{
max = DFT_Real[i];
*loc = i;
}
}
return max;
}

void main (void)
{

int n,k;
float wk,fk;
float temp;

comm_poll();

printf("-------------------------------------------------
\n");
printf(" INDUSTRIAL UNIVERSITY of HO CHI MINH CITY
\n");
printf(" Lab 6 : Implement DFT on CCS4\n");
printf(" Author: Chu Manh Cuong\n");
printf("-------------------------------------------------
\n\n");
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 63

printf("DSK6416> %d point DFT of
x[n]\n",sizeof(DFT_Complex)/2);
printf("DSK6416> Length of x\n");
printf("DSK6416> L = %d\n",sizeof(x)/2);
printf("DSK6416> fs = %dhz\n",Fs);
printf("DSK6416> DFT Calculating...\n");

//DFT Algorithm Implementation
for(k=0;k<N;k++)
{
wk = (k*2*pi)/N;
for(n=0;n<L;n++)
{
z.real = cos(wk*n);
z.img = -sin(wk*n);
X[k].real += ((float)x[n]) * z.real;
X[k].img += ((float)x[n]) * z.img;
}
#ifdef DEBUG
printf("-> X[%d] = %f",k,X[k].real);
if(X[k].img>0)
printf(" + %fi\n",X[k].img);
else
printf(" - %fi\n",abs(X[k].img));
#endif
}

/*determine DFT module*/
for(n=0;n<N;n++)
{
temp = sqrt(X[n].real*X[n].real + X[n].img*X[n].img);
DFT_Complex[n] = (short)temp;
#ifdef DEBUG
printf("-> DFT_Complex[%d] = %d\n",n,DFT_Complex[n]);
#endif
}
for(n=0;n<N/2;n++)
DFT_Real[n] = DFT_Complex[n];
Magnitude.max = max_DFT(&Magnitude.loc);
#ifdef DEBUG
printf("-> Maximum magnitude = %d \n",Magnitude.max);
#endif

//Display infomation of signal's spectrum
fk = (Magnitude.loc*Fs)/N; //Get Peak of Spectrum
printf("-> Center freq = %f Hz\n",fk);

printf("-> Acquisition Buffer : %d for x, %d for DFT_Complex,
%d for
DFT_Real\n",sizeof(x)/2,sizeof(DFT_Complex)/2,sizeof(DFT_Real)/2);
printf("-> Dsp Data Type: 16 bit signed interger\n");
printf("-> Sampling Rate HZ: 8000\n");
printf("-> Start Address : x or DFT_Complex or DFT_Real\n");
printf("-> Display Data Size: %d for x, %d for DFT_Complex,
%d for
DFT_Real\n",sizeof(x)/2,sizeof(DFT_Complex)/2,sizeof(DFT_Real)/2);
getchar();
while(1);
}


CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 64

Kt ni board ti my tnh vi cable USB, nhp vo Debug Active Project
sau nhn vo Run.
Sau khi thc hin xong chng trnh, ca s Console s xut hin cc
thng s v chng trnh nh sau:



Tin hnh theo hng dn chng ta s xem c ln lt:
Tn hiu sine cn xc nh DFT:



th bin i FFT ca CCSV4 s c dng nh sau:

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 65



V y l th DFT ca tn hiu x(n) sau khi c p dng thut ton
DFT:

- Ph phc:

- Ph thc ca tn hiu:
CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 66


So snh DFT thu c sau khi chy chng trnh v FFT ca CCSV4 l ging
nhau.

Nh vy kt lun rng vi tn hiu x(n) cho trong chng trnh chng ta
xc nh c DFT ca n vi kt qu thu c nh sau:
N = 128 l s im DFT
L = 8 l kch thc ca x(n)
Fs = 8Khz l tn s ly mu
Mainlobe DFT ca tn hiu nm ti v tr f thu c:
F = 875 Hz (~888Hz nh l thuyt)

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 67


Bi tp thm :
1) Thc hin thut ton DCT (Discrete Cosine Transform ) trn
CCS4.
2) Thc hin thut ton FFT (Fast Fourier Transform ) 256 im
trn CCS4.

CCS4 DSP Workshop

Nguyn Th Hang, B mn Vin Thng, H CN TP HCM Page 68

Reference
1. X l s tn hiu v wavelets 1, L Tin Thng , NXB HQG TPHCM ,
2004
2. Digital Signal Processing and Applications with the C6713 and C6416 DSK
II , Rulph Chassaing , Wiley & Sons Publication , 2008
3. Matlab 2009, The Mathwork , 2009
4. Internet websites

You might also like