采用定点DSP芯片TMS320F206进行准确的计时器测量

数字信号处理(dsp)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机技术和信息技术的飞速发展,数字信号处理技术应运而生,并得到迅速的发展。在过去的二十多年里,dsp已经在通信等领域得到极为广泛的应用,特别是在一些测量控制领域,应用更是越来越广泛。本文拟采用定点dsp——tms320f206来测量一些物理量,如测交流信号的频率?相位,但这些物理量的测量都离不开信号时间的测量,所以采用定点dsp准确地测量时间直接关系到这些物理量测量是否精确,而且用定点dsp来准确定时并不是件容易的事。
1 tms320f206的结构特点
tms320f206采用先进的哈佛结构,它不同于传统的冯·诺依曼(von neuman)结构的并行体系结构,其主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。此外还具有如下特点:
(1)32k×16字的flash eeprom 大大降低了开发成本。
(2)采用100线tqfp的封装技术。
(3)64k字的程序存储空间?64k字的数据存储空间和64k字的i/o空间通过三条并行总线(pba?drab?dwab)独立操作。所以可以同时访问程序空间和数据空间;在一个指定机器周期内,中央算术逻辑单元可执行多达三次的并行存储器操作。
(4)片上4.5k的ram 使得芯片可以实现快速的dsp计算,并使大部分运算能够在一个指令周期内完成。
(5)具有丰富的指令集和灵活的寻址方式。
(6)有四条流水线操作和九级中断,并且用户可以屏蔽大多数中断,且可通过软件方式灵活控制。
2 定点dsp的定时器
2.1 dsp定时器定时原理
计数器每次减到0时,就在下一clkout1周期产生借位(borrow),计数器就用各自相应的周期寄存器内容重新加载。当tim减到0时,或者在定时器控制寄存器(tcr)中重新加载位(trb)写入1,则prd(定时器周期寄存器)加载进tim;同样,若psc(预分频计数器)减到0,或者在trb写入1,则tddr(定时器除数寄存器)的值加载进psc。当tim减到0时,它便产生一个借位脉冲,持续时间等于clkout1的周期(tc(c)),该脉冲发送到①外部定时器输出引脚(tout);②作为定时器中断信号(tint)。
定时器的功能框图如图1所示。
2.2 dsp定时器的寄存器
4位的tddr和4位的psc包括在tcr中。而tim和prd是16位寄存器。可以通过读tcr、tim、prd得到该定时器和它的计数器的当前状态。
需要注意的是读tim可获得定时器的当前值,读tcr可获得psc的值。由于读tim和tcr需要两条指令,因而psc在两次读之间可能有减操作,使读数不精确。如果要求有精确的定时,可以在读此两值之前停止定时器(设置tcr的tss位为1,就停止定时器;清tss为0,就重新启动定时器)。
定时器控制寄存器的格式如下:
3 定点dsp准确计算时间
定时器时间的准确计算对高精度地测量一些物理量是非常重要的。当需要定时器计算的时间比较长时,也就是即使向prd中置ffffh时,定时器计数还不够,这时就需要利用定时器自身的中断,即tout每产生一个脉冲就进入定时器中断服务子程序,利用进入的次数来达到计时的目的。如果假设定时器的周期为0.001s(即prd=1999,tddr=9),在定时器中断服务子程序中设一个计数器,每进入一次加一个1,再把定时器周期乘以计数器计数就得出定时器的时间。但这种计算是粗糙的,不精确,达不到高精度要求。为此需要补充两点:
(1)当停止定时器时,定时器计数寄存器还有剩余值,必须计算这部分的时间。方法是先停止定时器,再读tim的值,然后读tcr的值,通过运算获取psc的值。再按公式(1)计算定时器在最后一次所开销的时间。定时器最后一次开销时间为:
式中,20m为本文采用的晶振频率。
(2)进入定时器中断服务子程序,程序执行本身要花费一定的时间;而进入中断服务子程序时,定时器就自动停止,那么所计算的时间自然就少了。tms320f206每个指令周期的执行时间是50ns,通过计算中断服务子程序的指令周期数和进入中断的次数可以计算出这部分的时间。
把这三部分时间加起来就得到准确的定时器时间,有了准确的时间,物理量的测量自然就准,精度就高。结果表明,通过这样准确计时,使得频率和相位的测量精度在万分之二以内。如果测量的是一个标准的50hz频率,那么测量结果的范围在50~50.001hz。
4 dsp程序实现
splk #0412h,64h
out 64h,0fff8h ;停止dsp定时器
in 65h,tim ;读tim寄存器的数值
in 67h,tcr ;计算tcr中psc的值
lacl 67h
and #03c0h ;与03c0h获得psc的值
sacl 67h ;左移10位
lacc 67h,10
sach 67h
lacl #9
sub 67h
sacl 67h ;存psc中剩下的值(即使用了的)
lacl #07cfh
sub 65h
sacl 68h ;存prd-tim的值
lt 68h
mpy #10 ;tddr+1
pac
sacl 68h
lacl 68h
add 67h
sacl 68h
lt 68h  ;*0.1
lar ar1,#temptddr ;temptddr=0.1
mar *,ar1
mpy *
pac
add #1,14
sach 68h,1
lacl 68h
sfr
sacl 68h   ;存定时器最后一次的时间单位为μs
lt 69h
lar ar2,#temptddr1  ;temptddr1=定时器的周期
mar *,ar2
mpy *
pac
add 68h   ;加定时器最后一次的时间
sacl 68h  ;存定时器总的所耗时间(占时间的多数)
lt 69h
lar ar2,#temptddr2 ;temptddr2=0.5*32767
mar *,ar2
mpy *  ;计算定时器中断服务程序执行时间
pac
add #1,14
sach 67h,1
lacl 68h
add 67h ;加定时器中断服务程序执行时间
sacl 68h ;存总的时间(结束)


如何利用Matlab软件数字信号处理工具包处理音频文件的详细概述
探针式智能温度控制仪的方案设计和应用范围分析
6G将在2030年左右实现商用
西门子MES Opcenter流程行业套件与APS系统集成
特斯拉Beta版FSD已完成从洛杉矶到硅谷的自动驾驶测试
采用定点DSP芯片TMS320F206进行准确的计时器测量
提前过双十一 红米4上市价格低到冰点499元起性价比超高
DSP运营商能否转型为从卖网络管道转型为卖管道+算力?
香蕉派BPI-M2 Pro单板计算机采用Amlogic S905x3 芯片方案设计,板载2G RAM 和16GB eMMC
激光投影上半年成绩:忧喜两面更分化
PI调节器的概念及设计
介绍一下KUKAC2机器人关于INTERBUS PCI卡进行主从配置的文件
双通道内存
Intel的5G之路:FPGA产品线布局迅速,连ASIC趋势都准备好
低噪声高线性度放大器BGU8052的性能特性及应用范围
波士顿动力正式开始出售Spot机器狗
静止同步补偿器的工作原理、类型、应用及发展现状介绍
反向电池充电器保护
隔着屏幕杀敌,无人机战士也有心理创伤
高压软启动器与低压软启动器的几大区别