D|seo con DSIC30I4013 en |engua[e M|kro8as|cro for DSIC Docente: Ing.
Roger Guachalla Narvez
xoroger@yahoo.es kAC1ICA 11: ulseno de llltros ulgltales en Mlkro8aslc lor dslC 1. 0b]etivos: kIMLkA Ak1L 8eallzar el dlseno de un llltro dlgltal IIk asa A|to usando la herramlenta 'lllter ueslgner 1ool' lncorporada en el compllador M|kro8as|c ro lor dslC y slmular su lunclonamlento en 8C1LuS SLGUNDA Ak1L lmplementar y comprobar el lunclonamlento, en protoboard, de un llltro dlgltal IIk asa 8a[o, codlllcado en M|kroC usando el procesador dsIC30I4013 en 2. iundamento 1eorico: k1M5kA Ak15 Ll termlno llL18C hace relerencla a cualquler slstema que dlscrlmlna lo que pasa a su traves de acuerdo con alguno de los atrlbutos de la entrada. ue acuerdo con esta dellnlcln tan general podemos tener llltros de agua, llltros de partlculas de alre, llltros de acelte etc. Ln uS nos conclernen los llltros dlgltales. Lstos llltros dlscrlmlnarn las senales de acuerdo con sus caracterlstlcas lrecuenclales. Lste tlpo de llltros tlene como entrada una secuencla dlscreta y como sallda otra secuencla dlscreta, que habr experlmentado clertas varlaclones en amplltud y/o lase dependlendo del llltro empleado. vamos a conslderar slstemas llneales lnvarlante temporales (Ll1) caracterlzados por una ecuacln en dllerenclas con coellclentes constantes de la lorma: Su luncln de translerencla es: Los coellclentes a k y b k determlnan la respuesta en lrecuencla del llltro. una senal x(n) que pase a traves del slstema tendr una sallda ?(w) = P(w)x (w) , slendo P(w) la respuesta en lrecuencla del llltro conslderado. Caracteristicas de los 1iltros 105AL5S Los llltros suelen claslllcarse segun sus caracterlstlcas en el domlnlo lrecuenclal como: asa 8a]os asa Altos asa 8anda kechaza 8anda asa 1odo 1al como se muestra en las llguras anterlores, estos llltros ldeales tlenen ganancla constante (generalmente unltarla) en la banda de paso y ganancla cero en la banda ellmlnada. Ctra caracterlstlca lmportante de los llltros ldeales es su respuesta de lase llneal. Caracteristicas de un 1iltro k5AL S560N0A Ak15 iiltros i1k Ll dlseno de los llltros ll8, es relatlvamente slmple y utlllza estructuras ya dellnldas para cada tlpo de llltro. Los llltros pueden ser de clnco naturalezas: asa ba[as, pasa altas, pasa bandas, rechaza banda, y multl banda. ara el tratamlento de los llltros se debe tener presente las slgulentes conslderaclones: Los clculos de los llltros se hacen en radlanes y no en herclos. La lrecuencla de muestreo en herclos ls, es equlvalente a una lrecuencla en rad/seg de 2n. La mxlma lrecuencla tratada por los llltros es ls/2, o n 8adlanes. La relacln que exlste entre radlanes y herclos es: W = 2nl, y l = W/2n. Las lrecuenclas de corte de los llltros se denotan como Wc, y lc. La lrecuencla de corte se calcula como Wc = 2 n lc / ls. La banda de translcln del llltro se denota como dW en rad/seg y dl en herclos. Ll orden de los slstemas ll8 se denota como M. Se recomlenda usar un numero lmpar para M. iiltro asa ba]os Los llltros pasa ba[as se caracterlzan por tener una lrecuencla de corte a partlr de la cual las lrecuenclas lnlerlores son permltldas, y las lrecuenclas superlores son atenuadas. La luncln de translerencla h(n), para este llltro es: Ecuacin I. La respuesta espectral de este llltro de orden 7, en escala llneal es la slgulente: 3. Herramienta de 0iseo de iiltros 0igitales de Mikroe La herramlenta 'lllter ueslgner 1ool' permlte el dlseno slmple y rpldo de llltros dlgltales. Ln la llgura se muestra el acceso a esta herramlenta a traves del menu prlnclpal: Lxlsten dos clases de llltros dlgltales. Los de 8espuesta al lmpulso llnlta (ll8) y los de 8espuesta al lmpulso lnllnlta (ll8). Ambas clases tlenen sus venta[as y desventa[as. Cuando se dlsena un llltro dlgltal, la prlmera tarea es selecclonar la clase de llltro a usar. Venta[as y desventa[as de |os f||tros IIk venta[as uesventa[as La condlcln de establlldad se cumple slempre ara una caracterlstlca de amplltud dada, el llltro ll8 tlene un orden conslderablemente mayor comparado con un llltro ll8 (mayor comple[ldad) La respuesta en lase es llneal Venta[as y desventa[as de |os f||tros IIk venta[as uesventa[as ara una caracterlstlca de amplltud dada, el llltro ll8 tlene un orden conslderablemente menor comparado con un llltro ll8 (menor comple[ldad) La condlcln de establlldad no se cumple slempre. A medlda que el orden del llltro ll8 se lncrementa, la probabllldad de que el llltro se haga lnestable se lncrementa La respuesta en lase no es llneal I||tros IIk Las propledades bslcas de los llltros ll8 son: Crden del llltro relatlvamente alto 8espuesta en lase llneal Lstabllldad Ll dlseno de un llltro ll8 empleza abrlendo la herramlenta 'lllter ueslgner 1ool'. Luego se debe selecclonar la opcln armetros ll8 en el lado lzqulerdo: Dev|ce setup se lntroducen la lrecuencla de relo[ y el modelo dslC a usar Input S|gna| se lntroducen la lrecuencla de muestreo y el canal Au del procesador. I||ter Setup se lntroducen el tlpo de llltro (asa ba[o, asa alto, asa 8anda o 8echaza banda), el orden del llltro (sl se ellge la luncln de ventana de kalser, el orden del llltro es selecclonado automtlcamente) y la luncln ventana a usar (La atenuacln de la banda de rechazo y la selectlvldad del llltro dependen de la luncln ventana). Wpass lrecuencla de paso del llltro Cuando todos estos parmetros han sldo lntroducldos, el dlseno del llltro se reallza slmplemente selecclonando una de las opclones: ll8 Wlndow, ll8 lrecuency, Source Code (Cdlgo luente en Mlkro8aslc, MlkroC y Mlkro ascal) y Schematlcs (ulagrama Lsquemtlco) I||tros IIk Las propledades bslcas de los llltros ll8 son: Crden del llltro ba[o 8espuesta en lase no llneal lnestabllldad potenclal Noto: cuooJo se uso f|lttos llk Je otJeo moyot o J, es |mpottoote cooocet ue estos soo muy seos|t|vos o los efectos Je lotqo Je polobto (wotJleoqbt) y ue se pueJeo totoot |oestobles. los f|lttos llk Je otJeo moyot o J, ootmolmeote se Jescompooeo eo secc|ooes ms peueos (sequoJo y pt|met otJeo) y lueqo soo cooectoJos eo coscoJo o potolelo. Ll dlseno de un llltro ll8 empleza abrlendo la herramlenta 'lllter ueslgner 1ool'. Luego se debe selecclonar la opcln armetros ll8 en el lado lzqulerdo: Dev|ce setup se lntroducen la lrecuencla de relo[ y el modelo dslC a usar Input S|gna| se lntroducen la lrecuencla de muestreo y el canal Au del procesador. I||ter Setup se lntroducen el tlpo de llltro (asa ba[o, asa alto, asa 8anda o 8echaza banda), el orden del llltro y la luncln ventana a usar (La atenuacln del banda de rechazo y el metodo de dlseno a utlllzar. Los metodos de dlseno dlsponlbles son: 1. 8utterworth: Caracterlstlca de amplltud mxlmamente plana en lrecuencla 0Pz. La caracterlstlca de amplltud es una curva suave. 2. Chebyshev l: Caracterlstlca de amplltud de rlzado mlnlmo unllorme en la banda de paso 3. Chebyshev ll: Conocldo tamblen como llltro Chebyshev lnverso. La caracterlstlca de amplltud es mxlmamente plana en lrecuencla 0Pz (al lgual que 8utterworth). La caracterlstlca de amplltud posee varlacln de amplltud mlnlma en el rango de banda de rechazo. uependlendo en el metodo de dlseno selecclonado y el tlpo de llltro ll8, es posslble lngresar los correspondlentes parmetros, donde el restante de los parmetros ser calculado automtlcamente. Sl se selecclona un llltro asa banda y el metodo Chebyshev l, los parmetros a lngresar son: Mxlma atenuacln en el rango de banda de paso Ap y las lrecuencla llmltes de banda de paso Wp1 y Wp2. Cuando todos estos parmetros han sldo lntroducldos, el dlseno del llltro se reallza slmplemente selecclonando una de las opclones: ll8 rototype ll8 lrecuency Source Code (Cdlgo luente en Mlkro8aslc, MlkroC y Mlkro ascal) Schematlcs (ulagrama Lsquemtlco) k1M5kA Ak15 4. 5]emplo de 0iseo usando 'iilter 0esigner 1ool' i1L1k0 11k ASA AL10 05 0k05N 3 0escripcion rocesador dslC30l4013 lrecuencla de relo[ 80 MPz llltro ulgltal ll8 asa AL1C Crden 3 1opologla Chebyshev tlpo ll As = 60 d8 , Ap =1 d8 Ws = 4000 Pz , Wp = 4100 Pz lrecuencla de corte de 4000Pz lrecuencla de muestreo de 20kPz. 0iagrama 5squematico Codigo 1uente auto-generado en Mikro8asicro 1or ds1C ' 1hs code was generated by 11ter desgner too1 by mkroL1ektronka ' 0ate,1me: 1S,11,2012 12:20:26 p.m. ' Support n1o: http:,,www.mkroe.com ' 0evce setup: ' 0evce name: 20I4012 ' 0evce c1ock: 080.000000 Muz ' Samp1ng Irequency: 20000 uz ' I1ter setup: ' I1ter knd: 118 ' I1ter type: ughpass 11ter ' I1ter order: 2 ' 0esgn method: Chebyshev type 11 program 118_1est const 8uIIL8_S12L = 8 I1l1L8_080L8 = 2 C0LII_8 as wordjI1l1L8_080L8+1}={0x2682, 0x87CL, 0x4822, 0x0940, 0x0000) C0LII_^ as wordjI1l1L8_080L8+1}={0x2000, 0x448^, 0x22LI, 0x0079) SC^lL_8 = S SC^lL_^ = -2 dm 1oadn as sbt at l^1I1_bt ' 0^C 1oad pn 1oadn0r as sbt at 181SI1_bt ' 0^C 1oad pn csn as sbt at l^1I0_bt ' 0^C CS pn csn0r as sbt at 181SI0_bt ' 0^C CS pn next as word ' 1nput bu11er ndex nput_ as wordj8uIIL8_S12L} ydata ' 1nput bu11er, has to be n Y data space due to 0S engne requrements output as wordj8uIIL8_S12L} ydata ' 0utput bu11er, has to be n Y data space due to 0S engne requrements ' 1hs s ^0C nterrupt hand1er. ' ^na1og nput s samp1ed and the va1ue s stored nto nput bu11er. ' 1nput bu11er s then passed through 11ter. ' Ina11y, the resu1tng output samp1e s sent to 0^C. sub procedure ^0C11nt{) org 1v1_^008_^0C1u1L88u1 ' ^0C nterrupt hand1er dm Currentva1ue as word nput_jnext} = ^0C8uI0 ' Ietch samp1e Currentva1ue = 118_8adx{ SC^lL_8, ' SC^lL_^, ' C0LII_8, ' b coe11cents o1 the 11ter C0LII_^, ' a coe11cents o1 the 11ter I1l1L8_080L8+1, ' I1ter order + 1 nput_, ' 1nput bu11er 8uIIL8_S12L, ' 1nput bu11er 1ength output, ' 1nput bu11er next) ' Current samp1e outputjnext} = Currentva1ue next = {next+1) and {8uIIL8_S12L-1) ' next = {next + 1) mod 8uIIL8_S12L csn = 0 ' CS enab1e 1or 0^C S118uI = 0x2000 or Currentva1ue ' Wrte Currentva1ue to 0^C {$2 s requred by 0^C) wh1e {S118I_bt) ' Wat 1or S1 modu1e to 1nsh wrte operaton nop ' Wat 1or S1 modu1e to 1nsh wrte wend 1oadn = 0 ' load data n 0^C de1ay_us{2) 1oadn = 1 csn = 1 ' CS dsab1e 1or 0^C ^01I_bt = 0 ' C1ear ^011I end sub ' 1hs s 1mer1 nterrupt hand1er. ' 1t s used to start ^0C at ' perodc nterva1s. sub procedure 1mer11nt{) org 1v1_^008_111u1L88u1 ' 1mer1 nterrupt hand1er 1 {00uL_bt) then ' 11 ^0C s not busy S^M_bt = 1 ' Start new samp1e end 1 l^10 = 0810 xor 0xIIII ' You can put osc11oscope on 0810 to measure samp1ng 1requency 111I_bt = 0 ' C1ear 1M811I end sub ' Man program starts here. ' Irst1y, hardware perphera1s are nta1zed and then ' the program goes to an n1nte 1oop, watng 1or nterrupts. man: 181S0 = 0 ' 0^C setup 1oadn0r = 0 ' l0^0 pn csn0r = 0 ' CS pn csn = 1 ' Set CS to nactve 1oadn = 1 ' Set l0^0 to nactve ' S1 setup S11_1nt_^dvanced{_S1_M^S1L8, _S1_16_811,_S1_8LSC^lL_SLC_1, _S1_8LSC^lL_81_1, _S1_SS_01S^8lL, _S1_0^1^_S^MlL_M100lL, _S1_Clk_10lL_u16u, _S1_^C11vL_2_10lL) next = 0 ' 1nta1ze bu11er ndex vector_Set{nput_, 8uIIL8_S12L, 0) ' C1ear nput bu11er vector_Set{output, 8uIIL8_S12L, 0) ' C1ear output bu11er 181S8 = 0xIIII ' use 0818 1or nput sgna1 ^0C0u1 = 0x00L2 ' ^uto-stop samp1ng, unsgned nteger out ^0C0u2 = 0x0000 ^0C0u2 = 0x021^ ' Samp1ng tme= 2*1ad, mnmum 1ad se1ected ^0CI6 = 0x0000 ' Con1gure 0818 as ^0C nput port ^0CuS = 0x000^ ' Samp1e nput on 8810 ^0CSSl = 0 ' uo nput scan ^0CI6 = 0x0000 ' Con1gure 0818 as ana1og ^0C nput port ' 1nterrupts setup 1IS0 = 0 ' C1ear nterrupt 11ags 1IS1 = 0 ' C1ear nterrupt 11ags 1IS2 = 0 ' C1ear nterrupt 11ags uS101S_bt = 1 ' uested nterrupts 01S^8lL0 1u1C0u2 = 0 111L_bt = 1 ' 1mer1 and ^01L_bt = 1 ' ^0C nterrupts Lu^8lL0 1110_bt = 1 ' 1mer1 nterrupt prorty 1eve1 = 1 ^011_bt = 1 ' ^0C nterrupt prorty 1eve1 = 1 ' 1mer1 setup 81 = 0x02L8 ' Samp1ng ~= 20000 kuz. va1ue o1 81 s dependent on c1ock 10u_bt = 1 ' 1mer1 0u, nterna1 c1ock ICY, presca1er 1as1 ^00u_bt = 1 ' ^0C 0n S^M_bt = 1 ' Start Samp1ng wh1e {18uL) ' 1n1nte 1oop, nop ' wat 1or nterrupts wend end. S560N0A Ak15 5. 5]emplo de 0iseo i1L1k0 i1k ASA 8Al0 5]emplo de diseo para un 1iltro asa 8a]os i1k Se reallza el e[emplo de dlseno de un llltro aso 8a[os ll8, lmplementando en el procesador dslC30l4013, con una lrecuencla de 40MPz como relo[. ara llnes prctlcos reales la lrecuencla de 40MPz, se logra utlllzando un crlstal de 10MPz, y actlvando la luente de relo[ PS-LL en el dslC. Lst opcln lmplementa lnternamente en el dslC, un LL que multlpllca la lrecuencla externa por un lactor de cuatro, y el resultado es usado como luente de relo[ para el procesador del mlcrocontrolador. 0iagrama 5squematico 0atos de diseo 1lpo: ll8 asa 8a[o de orden 17 lrecuencla de muestreo ls = 1291,32kPz. lrecuencla de corte lc = 130Pz. ventana 8ectangular. Calculos Se determlna la lrecuencla de corte dlgltal: Wc = 2 n lc / ls = 2 n 130 / 1291,32 = 0,72983 usando la Lcuacln l, del lundamento terlco, se deslgnan los coellclentes de la luncln h(n): h(-8)=-0.0171033387963417 h(-7)=-0.0419431379233366 h(-6)=-0.0301329294124473 h(-3)=-0.0309497847316783 h(-4)=0.0173343019383181 h(-3)=0.0864308262744764 h(-2)=0.138173992108178 h(-1)=0.212237063988464 h(0)=0.232320416318186 h(1)=0.212237063988464 h(2)=0.138173992108178 h(3)=0.0864308262744764 h(4)=0.0173343019383181 h(3)=-0.0309497847316783 h(6)=-0.0301329294124473 h(7)=-0.0419431379233366 h(8)=-0.0171033387963417 Se debe tener presente que para llnes de programacln los valores de n no pueden ser negatlvos, por esta razn se debe lnlclar el vector en 0, y para usarlo en el cdlgo en lengua[e C. Codigo 1uente MikroC ro 1or ds1C #de1ne M 17 ,,Iuncon de tras1erenca hjn} const 11oat hj}= { -0.017102S28796S417, ,,h{0) -0.0419421S79222266, ,,h{1) -0.0S0122929412447S, ,,h{2) -0.0209497847S1678S, ,,h{2) 0.017S24S019S82181, ,,h{4) 0.0864208262744764, ,,h{S) 0.1S8172992108178, ,,h{6) 0.21222706S988464, ,,h{7) 0.222220416218186, ,,h{8) 0.21222706S988464, ,,h{9) 0.1S8172992108178, ,,h{10) 0.0864208262744764, ,,h{11) 0.017S24S019S82181, ,,h{12) -0.0209497847S1678S, ,,h{12) -0.0S0122929412447S, ,,h{14) -0.0419421S79222266, ,,h{1S) -0.017102S28796S417 ,,h{16) ), ,,0ec1aracon de vara1es 11oat x0, y0, 11oat xjM}, unsgned nt YY, unsgned short , ,,0ec1aracon de 1a 1uncon de nterrupcon vod nterrupt { vod ) { 1{ 1u1C0u.I2 ) { 1M80l=12S, ,,1mer0 con perodo de 774.4 useg ,, Is = 1291.22 uz ,,Corrmento contnuo de 1a sea1 xjn} 1or{ =M-1, !=0, -- ) xj}=xj-1}, ,,^dquscon de una muestra de 10 bts en, xj0} xj0} = {11oat){^0C_8ead{12)-S12.0), ,,Convo1ucon contnua y0 = 0.0, 1or{ =0, <M, ++ ) y0 += hj}*xj}, ,,8econstruccon de 1a sea1 en 10 bts YY = {unsgned nt){y0+S12.0), l^18 = YY, 1u1C0u.I2=0, ) ) vod man{ vod ) { ^0CI6= 0xIIII, ,,1nco de1 puerto 8 como sa1da 181S8 = 0x0800, 0818 = 0, ,,Se con1gura e1 11ML8 0, su nterrupcon 1u1C0u = 0b10100000, 10C0u = 0b11000101, wh1e{1) ,,8uc1e n1nto { ) ) 6. rocedimiento 5xperimental en Laboratorio {1ro lirmo) kIMLkA Ak1L usando |a herram|enta 'lllter ueslgner 1ool', reallzar el dlseno de un llltro ulgltal con las slgulentes caracterlstlcas: rocesador dsIC33II16G304 1lpo ll8 asa Alto 8utterworth Crden 6 lrecuencla de corte de 2kPz Ws=2000 Pz, Wp=2100 Pz, As=60 d8, Ap=1 d8 lrecuencla de muestreo de 8kPz S|mu|ar e| c|rcu|to en kC1LUS y comprobar su func|onam|ento {2do lirmo) SLGUNDA Ak1L Armar en protoboard el clrculto del llltro dlgltal ll8 asa 8a[o y comprobar su lunclonamlento 7. 1n1orme 1mpreso kIMLkA Ak1L l. Comentar DL1ALLADAMLN1L el Cdlgo luente Auto-Cenerado para el llltro llltro ulgltal pasa alto SLGUNDA Ak1L ll. 8eallzar el ulAC8AMA uL lLu!C del Cdlgo luente para el llltro llltro ulgltal pasa ba[o lll. 1raba[o de lnvestlgacln: CCNVLkSCk DIGI1AL-ANLCGC MC4921" Motet|ol 8|bl|oqtf|co o Je lotetoet lmpteso usoJo poto el tesumeo 8|bl|oqtoflo o lueotes Je u|tecc|ooes w8 k5uMN (esct|to o mooo) Je pot lo meoos l pqinos lv. 1raba[o de lnvestlgacln: IN1LkIASL SLkIAL SI" Motet|ol 8|bl|oqtf|co o Je lotetoet lmpteso usoJo poto el tesumeo 8|bl|oqtoflo o lueotes Je u|tecc|ooes w8 k5uMN (esct|to o mooo) Je pot lo meoos l pqinos v. Concluslones