Introducción a DSP

Anuncio
&%#'($&
&"
"
#!# "!! :97;<8: "#) % #!" ""
2!#3!"0
81 , !!"!0 # / ! $!#'"$""&",1
91 ,$,!!0"#","$#!
"""#%""!"!"#!$,"!#!
!!'#!#"!!1%(""#$,
"! #! !! ' #!# "!! #!%*" $!#
/ " #" #! " %!# $, "+(, $!##!"""#%""#"#
#!(!$!,#!
:1 ,%!"!409:"$%!"!4
"#*!/ $"#! =;777 $"#!" ! "$
5=;
4"6 #" $"#! "1 %!"! 9: # #!"
"#!'"!!"1
#! ! # ! $ " %, " !
!!"$!2
# !"( ' #!! " # $ " " !"( &#" ""
4#!'#52
$ ! 3 " ! : " ! & : !! ,! & ! !
! #"% 46389.7 (52 !" $ " ! "! ! $ ! 3 # $ # 9; "!
# "! 2!!"!!"$# #$,
#"" #,! " 2!" #
" "! ! :$!"!#!" 4#! 52
-"!"(!," %,! ) !!*!1
0 "!3 0#!!%!, &
) !4#!$ 52
"#) !! "# 48 '#" !1 "
$" " "#) "" 87'#" ! # #!#
"!!3
#" " "" ! " 87'#" "#) "" ! "$
$"1 ' $ ! " " #" #!!$"1 !
(.#!#"!!1!$#"$.)""
!!1#3
"!!""-"$#"$#!2
43
53
63
73
.%!"
$(.
#
$#"#!!$.
"#("("#'!*!"1"%!""1$'
""#!!$" $%!"!""#3
" !!" " !) "!%! "" $"3 #$. "
!(!)$"!."!!"*!"3
.%!""!((."""3
"#!!# !! $ " ( " #!# "!! "
"$#"+"2
/* Initialize the board support library, must be first BSL call */
DSK6713_init();
/* Initialize the LED and DIP switch modules of the BSL */
DSK6713_LED_init();
DSK6713_DIP_init();
! # . " !$#" #!!$. ' !*!" $
$ !$! "-(. #!!$. " "! "#!
# " #!!$" !&!3 "#!!# " ( "
!$#" #!!$.1 ' $ %( ( # ""# " # "
!$#"#!!$.3"!%"$2
IRQ_globalDisable();
// Disable global interrupts during setup
hCodec = DSK6713_AIC23_openCodec(0, &config);
DSK6713_AIC23_setFreq(hCodec,DSK6713_AIC23_FREQ_8KHZ);
initIrq();
IRQ_globalEnable();
void initIrq()
{
/* Enable RXTX interrupts to the CPU */
IRQ_clear(IRQ_EVT_RINT1);
// Clear any pending RX interrupts
IRQ_enable(IRQ_EVT_RINT1);
// Enable RX interrupt
}
#"& #% # ,4 "" # #$ # $""% #3
# %+##%"&"#"63#"%%#$"
(#!%$""% #$%"%##"5$#$"
%!%"$""% /##" "#%#$79"85
%$# "$$$"$#""#"
#%%/ " )"$"#$#!%$"%# "+"#5
"$" #$ $ # ""# #.# " $" % %
$5 # ##$ #"" #"3 " ""3(#%(%$(##" """5
"%$$""% /#%%/!%#&$!%
% # #$& "'" " % #. "#"3 #$ #"
$5
*#"$""% #!%# #$&#&#"$##
"" % $""% /5 *#" $""% # # % "#$"
# , "#"5"!%$""% /#$$
$""% /##$":5
$ !% % $""% /3 # &" *#" $""% #5#$*$##%$$$""% #5$
$""% ##%)"# "$""% /
"/ " # %$" "%$ !% & $"5 &) $ "/ # #$ "# !% # #$
%$ $# "" $""% /3 # & "%$ # $""% / ( )" # #" "%$ 3 !%
!%#$" "#"$""% /(#"#$"
#$ "#"5
# # , $" #"" # #" ""#" %/"%$$""% /0# ,3 "
(#"#5
"#$" $""% #"%$!%#%$" "
%$""% /# ,
" " $ $""% #3 #/ 6# "($3 #/ 7"'" $""% $#8 # %" $ $""% #5
&'! !!
#%$"
!
"
" $
"%!
$
# . $ $ %# 1# &% #2. $ # &
&' %#. ( '% $ "& #&% $ &%# ( &% $
$& $0
$#'"& ##&%5$%$ # %%7$6$%! &
$ 172. ##$! % # ! # # # $
#&%$0
$ # ,%!$ & $ ' #. $ &%#* #
$% $+13 20
!# % %& %#%$## /
80
90
:0
;0
%%+
%&$ # #
&%$$%$## ! $#:08
% & $%# 4 & $ # #$ & $%#
<0 % %# $%# 4&$
$ $
$ $ $ ! 0
$ %#$%# 4&!&&%)# + 4
!# %# %# # # & $ %#% $## 0 &$ & + 4 !# %# $ %#% $## . ( "& $ ## #$ "&# ! # $ '#$ #0
"%"#!!!$"#$)&7
#!2 !$ #! !) !$ $"#!0
#$!!#!' $"#2
!! "$"#!0 $- $ # #!!$-
4!#4552
"!%$!1
%( $ $ # %!"! 3 " !$! # )"
#$$!0"#!#0"!(!$%#'
#! $ "- # )" #$ " !# !!$!2
Output = buffer0[buffer0_pos];
buffer0[buffer0_pos] = Channel;
buffer0_pos = (buffer0_pos+1)%buffer_len;
%("#"0"$%!"!2
"$"#! 8 #" ! "$#%0 !! ( $!'"#!!#!0"#!8"!$#
#!!$-2
%!%#!67!!"""#)!"
64( $!574!52
# $""$$!!!"#2
)$#-!!%!!#!" $"$$# $
#!# "!!2 $# $ " %! !$$"#!'#$$!#2
$ !! ! "#! " $ " "2
# $ "" $ $ !!" ""2$ $$#"%'!"!0 ""!
#"!!"#!#!0"* $"##$!
"#"2
$ $#(! ! $"#! !! #!!$" !
!(!!""#"#!#"2
!! # " #" #"0 " 79
'#"$","4!!#"#6#7!
", " ' "$ # "#7 # 8 !" $ ",
"52
%( $ $ # " %!"! 0 " % !$# #!!$- 4!#4550 $ # %!"!0 "0 # # " !!"# ' $ %!"!
2
DSK6713_AIC23_read(hCodec,&Channel);
if (! flag) {
Output = sinetableC0[pos_tbl_c0];
pos_tbl_c0 = (pos_tbl_c0 +1)% SINE_TABLE_SIZE;
} else {
Output = sinetableC1[pos_tbl_c1];
pos_tbl_c1 = (pos_tbl_c1 + 1)% SINE_TABLE_SIZE;
}
flag = !flag;
DSK6713_AIC23_write(hCodec,Output);
' $' % %,% % !% $%2 % +% % !
'$(!$"$!!%,! ! !"$!!'%&$!)
! &' '%&$% #' ! !$ ' "$!!2 $ 9 %$ :=
'%&$%"!$"$!!%,'%&$!6:5?*72
!#'$' '%&$!"$!$$' %%,%
$%2
!%(!$%"!%%$' %'%&$!%%&+ $!
3%=>:<8;<24 #' ! &$$+ %- '% "$!)&!2 !%
!$%"!%%"* "!$=>:<8;<882
' '($' %%,%% !% $%"$&$
'($' '%&$!2
%$(#' '(! %&%!%&$ %%,% $$"$ 9) :" !($2
"$!$ &$ " & ; &$!% !$ :=2 $ 9 %
! ' &$! "%!! ! $' !$& :*2 $ : %
! ' &$! "%!&! ! $' !$& ;*2 %$ ' %%& ! '%&$!! ($%!$! & ' &$!"%! ! $' !$&
&!'$' '%&$!5;2!$!& &!&$!"%!&!$ &%
!"!$&$+!!' &$!"% ! $' !;*)!$&&!5;2
Acumulador=0;
buffer0[0]=Channel;
for (c=buffer_len-1;c--;c>0){
Acumulador += buffer0[c]*coefs_ch0[c];
buffer0[c] = buffer0[c-1];
}
Acumulador += buffer0[0]*coefs_ch0[c];
%$( #' !% !% &$!% % " & ' $1 !
. & !% ! &% '!%2 '$ #' "$ '$ !%
! &%' &$!%&!%" $' '%&$!2
" !" #"#"" $" "!
" 5# :6&!"!" 5!9:62"(! "!
# :7:8&(!"## :7;@802
" ! &!"!" (!"/ ' ! " & "! " !#" " ,/
!'"!,3;!,2
@A;=!! ""!"!#!
&"!/! ##"""2 &
# ! & " ! "! ;@ "! " </
" !"!#"/!"!";@2
! ! / ""/ " # ! "! ! #
!",- !" !2!#!#$ (%!"$
D; ! !" - 5 %6 A 5") ! #
!" :%A6&*4;/$ D:2?" *
!"">:::2!" !", ";?1
;?E<;? ,
2
""/!"!" !! !" "" 1
;E;?
:2B:C:;A
<@?;:
@AB
E;?
:2?BAAB?=
;C<@:
>=
! #", " ;?2 # ! #
1
K1
2
y[n-1]
4000
y[n-1]
678E
MULTIPLICADOR
Multiplica los dos valores
8000
Preg
19E3
8000
Acumulador
33C7
0000
Acumulador
678E
0000
Acumulador
19E3
Mueve resultado a ACC
Suma el resultado dos
veces para compensar
1
K
2 1
Normaliza
desplazando un bit a
la izquierda y elimina
el bit extra
Resultado
&""$""74:8C93>C=999(93>:C93A9B9:@C?@A3
"$""%#$" "#%$ .3
/".!%
#"##""/$").3$"#%$!%
"" "#$"#&"#"## "$ $;3
" $$1 % &) !% # $ %$ .1 # # $# *#
#$&# # $# #3 #. # #" %1 #"$ #
# ))!%"$%%"3#+"&#1
*#1"#%$$& " "$$%%"3
# $# # #" !% # % "$ '3 % "$$""#/"##:93
#"&# $ $$$"5#%".
#$$#$"62
Int32 Acumulador;
Int16 Channel;
Acumulador=0;
buffer0[0]=Channel;
for (c=buffer_len-1;c--;c>0){
Acumulador += buffer0[c]*coefs_ch0[c];
buffer0[c] = buffer0[c-1];
}
Acumulador += buffer0[0]*coefs_ch0[c];
Output = Acumulador>>15;
# $# $" ( # $# # #%# !% #$*
#:>1"#%$#%$ ".2
buffer0[c]*coefs_ch0[c];
#$"* <93 # "#%$# 5$# # <96 #
"*%%"!%#<;$#3
&) # $" %" "#%$ $"1 # #" ""#" $:>1!%#"),
Output = Acumulador>>15;
#$"(#$"#%$$""):>3
(&"!%#"%#"$##$"# $#3
!%"%%#$"(#%&#$"#$#3
% ( %. : # %&# $# " % " $"# #":?1 """ #:)<)(
#%=)A)("%%#$";=)3
Descargar