打印

DSP 学习记事本!

[复制链接]
3265|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Sin90Cos90 于 2011-3-20 20:54 编辑

积分不够 100 先记录在这里
 

CMD 它是用来分配rom和ram空间用的,告诉链接程序怎样计算地址和分配空间.
所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据你的
芯片进行修改.
分两部分.MEMORY和SECTIONS.
MEMORY是用来指定芯片的rom和ram的大小和划分出几个区间.
SECTIONS是将输出段定位到所定义的存储器中。
1>     MEMORY指定存储空间
MEMORY
{
PAGE 0:   
   name 0 [attr]   : origin = constant, length = constant   
PAGE n:   
      name n [attr]   : origin = constant, length = constant   
}
PAGE n:标示存储空间,n<255;PAGE 0为程序存储空间;PAGE 1为数据存储空间
name:存储空间名称
attr:存储空间属性:只读R,只写W,可包含可执行代码X,可以被初始化I。
orgin:用来定义存储空间的起始地址
Lenth:用来定义存储空间的长度
2>     SECTIONS分配段
   SECTIONS
{
name            : [property,property,……]
}
name:输出段的名称
property:输出段的属性:
   load=allocation(强制地址或存储空间名称)同>allocation:定义输出段将会被装载到哪里。
   run= allocation(强制地址或存储空间名称)同>allocation:定义输出段将会在哪里运行。
注:CMD文件中只出现一个关键字load或run时,表示两者的地址时表示两者的地址时重合的。
   PAGE = n,段位于那个存储页面空间。

例如:
/****************************************************************************/
/******** Specify the memory configuration **********************************/
/****************************************************************************/
MEMORY
{
PAGE 0: VECS: origin = 00000h, length = 00040h
LOW: origin = 00040h, length = 03FC0h
SARAM: origin = 04000h, length = 00800h
B0: origin = 0FF00h, length = 00100h
PAGE 1: B0: origin = 00200h, length = 00100h
B1: origin = 00300h, length = 00100h
B2: origin = 00060h, length = 00020h
SARAM: origin = 08000h, length = 00800h
}
/*--------------------------------------------------------------------------*/
/* SECTIONS ALLOCATION&nbsp;*/
/*--------------------------------------------------------------------------*/
SECTIONS
{
.text :  > LOW PAGE 0
.cinit :  > LOW PAGE 0
.switch :  > LOW PAGE 0
.const : > SARAM PAGE 1
.data : > SARAM PAGE 1
.bss :  > SARAM PAGE 1
.stack :  > SARAM PAGE 1
.sysmem :  > SARAM PAGE 1
}
再例如:
//.cmd文件
ex411.obj          //输入文件
-o hello.out        //链接器选项
-m hello.map     //链接器选项
-stack 100         //链接器选项     
-l rts2xx.lib
MEMORY
{
   PAGE 0: VECTrigin=0x8000,length 0x040
   PAGE 0: PROGrigin=0x8040,length 0x6000
   PAGE 1: DATArigin=0x8000,length 0x400
}
SECTIONS
{
.vextors >VECT PAGE 0
.text    >ROG PAGE 0
.bss     >DATA PAGE 1
.const   >DATA PAGE 1
}
存储模型:c程序的代码和数据如何定位
系统定义
.cinit     存放程序中的变量初值和常量
.const   存放程序中的字符常量、浮点常量和用const声明的常量
.switch 存放程序中switch语句的跳转地址表
.text     存放程序代码
.bss       为程序中的全局和静态变量保留存储空间
.far       为程序中用far声明的全局和静态变量保留空间
.stack    为程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果
.sysmem 用于程序中的malloc 、calloc 、和realoc 函数动态分配存储空间
本文来自:我爱研发网(52RD.com) - R&D大本营

相关帖子

沙发
Sin90Cos90|  楼主 | 2011-3-20 13:04 | 只看该作者

使用特权

评论回复
板凳
Sin90Cos90|  楼主 | 2011-3-20 20:49 | 只看该作者
踏沙行 踏沙行
积分:1316
帖子:28
注册:07-01-04  [个人博客]     [个人播客]
  [加为好友]     [发送消息] 电气时间常数,和机械时间常数,是衡量伺服驱动和电机的工艺和响应速度水平。

小的机械时间常数确保伺服电机良好的运作控制. ;小的电气时间常数确保高效高转矩运行.

电气时间常数T=L/R,其中L为电枢回路总电感,R为电枢回路总电阻,

机械时间常数为T=RJ/K,其中R为电枢回路电阻,J为电动机的转动惯量,K为和电机有关的常数.
这两个参数主要影响电机过渡过程时间的长短,即系统的快速性.

一般的伺服电机厂家都不给出或给不出这两个数值;

在高端产品中,客户需要该数值,相应的高端伺服会标出,比如瑞士瑞诺、科尔摩根等

使用特权

评论回复
地板
Sin90Cos90|  楼主 | 2011-3-20 21:33 | 只看该作者
标称电流
蜂值电流
最大转速
标称线电压
标称频率
定子相电阻
电气时间常数
磁化电感
转子相电感
极对数
连接类型

使用特权

评论回复
5
Sin90Cos90|  楼主 | 2011-3-22 22:06 | 只看该作者
什么是离散化? Program Impossible | 2006-09-26 21:09| 24 Comments | 本文内容遵从CC版权协议 转载请注明出自matrix67.com 如果说今年这时候OIBH问得最多的问题是二分图,那么去年这时候问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”等等。哪个是对的呢?哪个都对。关键在于,这需要一些例子和不少的讲解才能完全解释清楚。 离散化是程序设计中一个非常常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中“只考虑我需要用的值”。下面我将用三个例子说明,如何运用离散化改进一个低效的,甚至根本不可能实现的算法。 《算法艺术与信息学竞赛》中的计算几何部分,黄亮举了一个经典的例子,我认为很适合用来介绍离散化思想。这个问题是UVA10173(http://acm.uva.es/p/v101/10173.html),题目意思很简单,给定平面上n个点的坐标,求能够覆盖所有这些点的最小矩形面积。这个问题难就难在,这个矩形可以倾斜放置(边不必平行于坐标轴)。


这里的倾斜放置很不好处理,因为我们不知道这个矩形最终会倾斜多少度。假设我们知道这个矩形的倾角是α,那么答案就很简单了:矩形面积最小时四条边一定都挨着某个点。也就是说,四条边的斜率已经都知道了的话,只需要让这些边从外面不断逼近这个点集直到碰到了某个点。你不必知道这个具体应该怎么实现,只需要理解这可以通过某种方法计算出来,毕竟我们的重点在下面的过程。 我们的算法很显然了:枚举矩形的倾角,对于每一个倾角,我们都能计算出最小的矩形面积,最后取一个最小值。 这个算法是否是正确的呢?我们不能说它是否正确,因为它根本不可能实现。矩形的倾角是一个实数,它有无数种可能,你永远不可能枚举每一种情况。我们说,矩形的倾角是一个“连续的”变量,它是我们无法枚举这个倾角的根本原因。我们需要一种方法,把这个“连续的”变量变成一个一个的值,变成一个“离散的”变量。这个过程也就是所谓的离散化。 我们可以证明,最小面积的矩形不但要求四条边上都有一个点,而且还要求至少一条边上有两个或两个以上的点。试想,如果每条边上都只有一个点,则我们总可以把这个矩形旋转一点使得这个矩形变“松”,从而有余地得到更小的矩形。于是我们发现,矩形的某条边的斜率必然与某两点的连线相同。如果我们计算出了所有过两点的直线的倾角,那么α的取值只有可能是这些倾角或它减去90度后的角(直线按“\”方向倾斜时)这么C(n,2)种。我们说,这个“倾角”已经被我们 “离散化”了。虽然这个算法仍然有优化的余地,但此时我们已经达到了本文开头所说的目的。 对于某些坐标虽然已经是整数(已经是离散的了)但范围极大的问题,我们也可以用离散化的思想缩小这个规模。最近搞模拟赛Vijos似乎火了一把,我就拿两道Vijos的题开刀。 VOJ1056(http://www.vijos.cn/Problem_Show.asp?id=1056) 永远是离散化的经典问题。大意是给定平面上的n个矩形(坐标为整数,矩形与矩形之间可能有重叠的部分),求其覆盖的总面积。平常的想法就是开一个与二维坐标规模相当的二维Boolean数组模拟矩形的“覆盖”(把矩形所在的位置填上True)。可惜这个想法在这里有些问题,因为这个题目中坐标范围相当大(坐标范围为-10^8到10^8之间的整数)。但我们发现,矩形的数量n<=100远远小于坐标范围。每个矩形会在横纵坐标上各“使用”两个值, 100个矩形的坐标也不过用了-10^8到10^8之间的200个值。也就是说,实际有用的值其实只有这么几个。这些值将作为新的坐标值重新划分整个平面,省去中间的若干坐标值没有影响。我们可以将坐标范围“离散化”到1到200之间的数,于是一个200*200的二维数组就足够了。实现方**如本文开头所说的“排序后处理”。对横坐标(或纵坐标)进行一次排序并映射为1到2n的整数,同时记录新坐标的每两个相邻坐标之间在离散化前实际的距离是多少。这道题同样有优化的余地。 最后简单讲一下计算几何以外的一个运用实例(实质仍然是坐标的离散)。才考的VOJ1238(http://www.vijos.cn/Problem_Show.asp?id=1238)中,标程开了一个与时间范围一样大的数组来储存时间段的位置。这种方法在空间上来看十分危险。一旦时间取值范围再大一点,盲目的空间开销将导致Memory Limit Exceeded。我们完全可以采用离散化避免这种情况。我们对所有给出的时间坐标进行一次排序,然后同样用时间段的开始点和结束点来计算每个时刻的游戏数,只是一次性加的经验值数将乘以排序后这两个相邻时间点的实际差。这样,一个1..n的数组就足够了。 离散化的应用相当广泛,以后你会看到还有很多其它的用途。 2007.04.05补充: VOJ1056那个例子看来还是有人不明白。我发一张示意图,注意左边的10*7的数组是如何等价地转化为右边两个4*4

数组的 Matrix67原创转载请注明出处

使用特权

评论回复
6
Sin90Cos90|  楼主 | 2011-3-22 22:33 | 只看该作者
微分方程离散化问题 悬赏分:20 | 解决时间:2009-11-4 10:42 | 提问者:susixian10
一直被问题困扰,这个微分方程是:y''+6*y'+y=2*u1'+3*u2'+u1,请问该怎么离散化?谢谢
      
最佳答案 假定采样间隔为T足够小,则可用差分代替微分,即
1) 用[y(k)-y(k-1)]/T代替y',用[u1(k)-u1(k-1)]/T代替u1',用[u2(k)-u2(k-1)]/T代替u2';
2) 用[y(k+1)-2y(k)+y(k-1)]/T^2代替y''

使用特权

评论回复
7
Sin90Cos90|  楼主 | 2011-3-22 22:37 | 只看该作者
离散化方法 常用的有三种:
 ① 基于数值微分的方法  
 ② 基于泰勒展开的方法 
 ③ 基于函数数值积分的方法

http://www.chinabaike.com/article/316/shuxue/2008/200801011121855.html

使用特权

评论回复
8
Sin90Cos90|  楼主 | 2011-3-22 23:33 | 只看该作者
《C语言程序设计与计算方法基础》
出 版 社: 北京航空航天大学出版社
作作者者: 张兰欣
适用学科: 电子信息
书书号号: 9787810129565
出版时间: 2000-05-01
定定价价: 30.00 元


第一章误差分析
第一节误差的来源
第二节误差和误差限、有效数字
第三节相对误差和绝对误差限
第四节有效数字与误差的关系
第五节数值计算中需要注意的问题
第二章一元函数方程的近似用法
第一节初始近似极的确定
第二节一分法
第二节迭代法
第四节牛顿法
第五节近似牛顿法
第六节C语言实现的算法
一、求实系数的4次方程式的根
二、用单精度求实系数的3次方程式的根
三、求一元二次方程式的根
四、用二分法求方程的根
五、用Newton-Raphson法求解非统性方程的一个实根
六、单精度试位法
七、单精度二分法和逆线性内插法
第三章值法
第一节插值问题
第二节线性插值与二次插值
第三节均差、均差插值公式
第四节等距结点插值公式、差分
第五节拉格朗日插值多项式
第六节三次样条插值
第七节C语言实现的算法
一、拉格朗日插值
二、分段抛物插值
三、埃特金插值
四、三阶样条函数插值、微商或积分
五、单精度埃特金一拉格朗日插值
六、单精度Everett内插值
第四章曲线拟合与最小二乘法
第一节用最小二乘法解矛盾方程组
第二节多项式拟合
第三节C语言实现的算法
一、用单精度求方程组的个数比未知数多的联立一次方程组的解(一)
二、用单精度求方程组的个数比未知数多的联立一次方程组的解(二)
三、用单精度求解多项式y=a0++a1x+…+anxn系数a0,a1…an
四、线性拟合
第五章截值微分与数值积分
第一节数值微分
第二节数值积分
第三节C语言实现的算法
一、单精度Newton-Cotes台形公式法
二、单精度Gauss-Legendre法
三、单精度Romberg法
四、双精度定区间积分
五、用单精度Newton-Cotes法求等距数据积分
六、用单精度Newton-Cotes法求离散数据积分
七、用单精度求一维半无限区间的积分
八、用单精度Gauss-Legnerre法求一维半无限区间的积分
九、用单精度Gauss-Hermite法求一维无限区间的积分
十、用单精度Gauss-Hermite法求二维有限区间的积分
十一、用单精度Gauss-Legendre法求二维有限区间的积分
第六章行列式与线性代数计算方法
第一节行列式与n阶线性方程组
第二节n维向量
第三节矩阵
第四节矩阵的运算
第五节线性方程组
第六节二次型和矩阵的特征值
第七节C语言实现的算法
一、用单精度进行二维实矩阵A,B的加减运算
二、用单精度进行二维实矩阵A,B的乘法运算
三、用单精度进行二维实正方矩阵A和其转置矩阵的乘法运算
四、列主元高斯消去法
五、共轭斜量法
六、单精度高斯消去法
七、用单精度雅可比法求特征向量和特征值
八、用两步QR法求特征向量和特征值
九、单精度压缩存储型雅可比法
十、单精度幂乘法
第七章常微分方程初值问题的数值解法
第一节尤拉方法和改进尤拉方法
第二节龙格一库塔法
第三节阿当姆斯方法
第四节C语言实现的算法
一、定步长龙格一库塔法
二、变步长龙格一库塔法
三、定步长基尔法
四、定步长五阶单步法
五、定步长哈明法
六、病态方程组的数值解法
七、单精度Milne法
八、用单精度龙格一库塔一基尔法求解常微分方程组
第八章微分方程和差分解法
第一节椭圆方程的差分解法
第二节用差分法求解热传导方程
第三节波动方程的差分解法
参考文献

使用特权

评论回复
9
Sin90Cos90|  楼主 | 2011-3-23 00:12 | 只看该作者






unsigned long CRC32 (unsigned char *start, unsigned long dwCount,
unsigned long crc)
{
for (unsigned long dwCounter = 0;
dwCounter < (dwCount&0xFFFFFFFc); dwCounter+=4 )
{
crc ^= *(DWORD*)(start);
start+=4;
crc = crc32table [ crc & 0xFF ] ^ ( crc >> 8 );
crc = crc32table [ crc & 0xFF ] ^ ( crc >> 8 );
crc = crc32table [ crc & 0xFF ] ^ ( crc >> 8 );
crc = crc32table [ crc & 0xFF ] ^ ( crc >> 8 );
}
for ( ; dwCounter < dwCount; dwCounter++ )
{
crc = crc32table [ (crc ^ *start++) & 0xFF ] ^ ( crc >> 8 );
}
return crc;
}








const unsigned long crc32table[256] = {
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL,
0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L,
0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L,
0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, 0x90bf1d91L,
0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L,
0x136c9856L, 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL,
0x14015c4fL, 0x63066cd9L, 0xfa0f3d63L, 0x8d080df5L,
0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, 0xa2677172L,
0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L,
0x32d86ce3L, 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L,
0x26d930acL, 0x51de003aL, 0xc8d75180L, 0xbfd06116L,
0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, 0xb8bda50fL,
0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL,
0x76dc4190L, 0x01db7106L, 0x98d220bcL, 0xefd5102aL,
0x71b18589L, 0x06b6b51fL, 0x9fbfe4a5L, 0xe8b8d433L,
0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, 0xe10e9818L,
0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL,
0x6c0695edL, 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L,
0x65b0d9c6L, 0x12b7e950L, 0x8bbeb8eaL, 0xfcb9887cL,
0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, 0xfbd44c65L,
0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL,
0x4369e96aL, 0x346ed9fcL, 0xad678846L, 0xda60b8d0L,
0x44042d73L, 0x33031de5L, 0xaa0a4c5fL, 0xdd0d7cc9L,
0x5005713cL, 0x270241aaL, 0xbe0b1010L, 0xc90c2086L,
0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L,
0x59b33d17L, 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL,
0xedb88320L, 0x9abfb3b6L, 0x03b6e20cL, 0x74b1d29aL,
0xead54739L, 0x9dd277afL, 0x04db2615L, 0x73dc1683L,
0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L,
0xf00f9344L, 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL,
0xf762575dL, 0x806567cbL, 0x196c3671L, 0x6e6b06e7L,
0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, 0x67dd4accL,
0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L,
0xd1bb67f1L, 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL,
0xd80d2bdaL, 0xaf0a1b4cL, 0x36034af6L, 0x41047a60L,
0xdf60efc3L, 0xa867df55L, 0x316e8eefL, 0x4669be79L,
0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL,
0xc5ba3bbeL, 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L,
0xc2d7ffa7L, 0xb5d0cf31L, 0x2cd99e8bL, 0x5bdeae1dL,
0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, 0x026d930aL,
0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L,
0x92d28e9bL, 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L,
0x86d3d2d4L, 0xf1d4e242L, 0x68ddb3f8L, 0x1fda836eL,
0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, 0x18b74777L,
0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L,
0xa00ae278L, 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L,
0xa7672661L, 0xd06016f7L, 0x4969474dL, 0x3e6e77dbL,
0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, 0x37d83bf0L,
0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L,
0xbad03605L, 0xcdd70693L, 0x54de5729L, 0x23d967bfL,
0xb3667a2eL, 0xc4614ab8L, 0x5d681b02L, 0x2a6f2b94L,
0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, 0x2d02ef8dL
};

使用特权

评论回复
10
Sin90Cos90|  楼主 | 2011-3-23 20:47 | 只看该作者
/*
*****************************************************************************************



                                描    述: CRC16 校验

******************************************************************************************
*/

unsigned int CRC16Table[256]={               /* CRC16 余式表 */
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
    0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
    0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
    0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
    0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
    0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
    0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
    0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
    0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
    0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
    0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
    0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
    0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
    0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
    0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
    0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
    0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
    0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
    0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
    0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
    0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
    0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
    0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
    0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
    0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
    0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
    0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
    0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
    0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
    0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
    0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
};

/*************************************************************
    描    述: CRC16校验查表子程序,速度快,占用空间大
    入口参数: 指向数组指针,校验字节个数
    出口参数: 16位CRC校验码
**************************************************************/
unsigned int CRC16_Table(unsigned char *pcrc, unsigned char count)
{
    unsigned int crc16 = 0;
    unsigned char crcregister;

    for( ; count > 0; count--){
        crcregister = (unsigned int)crc16 >> 8;
        crc16 <<= 8;
        crc16 ^= CRC16Table[crcregister ^ *pcrc];
        pcrc++;
    }
    return(crc16);
}

使用特权

评论回复
11
黄jiajia| | 2011-3-24 11:38 | 只看该作者
:)

使用特权

评论回复
12
Sin90Cos90|  楼主 | 2011-4-3 10:04 | 只看该作者
理解离散傅立叶变换(一)
                     ------傅立叶变换的由来
       关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的**,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解,最近,我偶尔从网上看到一个关于数字信号处理的电子书籍,是一个叫Steven W. Smith, Ph.D.外国人写的,写得非常浅显,里面有七章由浅入深地专门讲述关于离散信号的傅立叶变换,虽然是英文文档,我还是硬着头皮看完了有关傅立叶变换的有关内容,看了有茅塞顿开的感觉,在此把我从中得到的理解拿出来跟大家分享,希望很多被傅立叶变换迷惑的朋友能够得到一点启发,这电子书籍是免费的,有兴趣的朋友也可以从网上下载下来看一下,URL地址是:
http://www.dspguide.com/pdfbook.htm

       要理解傅立叶变换,确实需要一定的耐心,别一下子想着傅立叶变换是怎么变换的,当然,也需要一定的高等数学基础,最基本的是级数变换,其中傅立叶级数变换是傅立叶变换的基础公式。

一、傅立叶变换的提出

       让我们先看看为什么会有傅立叶变换?傅立叶是一位法国数学家和物理学家的名字,英语原名是Jean Baptiste Joseph Fourier(1768-1830), Fourier对热传递很感兴趣,于1807年在法国科学学会上发表了一篇论文,论文里描述运用正弦曲线来描述温度分布,论文里有个在当时具有争议性的决断:任何连续周期信号都可以由一组适当的正弦曲线组合而成。当时审查这个论文的人,其中有两位是历史上著名的数学家拉格朗日(Joseph Louis Lagrange, 1736-1813)和拉普拉斯(Pierre Simon de Laplace, 1749-1827),当拉普拉斯和其它审查者投票通过并要发表这个论文时,拉格朗日坚决反对,在近50年的时间里,拉格朗日**认为傅立叶的方法无法表示带有棱角的信号,如在方波中出现非连续变化斜率。法国科学学会屈服于拉格朗日的威望,否定了傅立叶的工作成果,幸运的是,傅立叶还有其它事情可忙,他参加了政治运动,随拿破仑远征埃及,法国大革命后因怕会被推上断头台而一直在逃避。直到拉格朗日死后15年这个论文才被发表出来。

       谁是对的呢?拉格朗日是对的:正弦曲线无法组合成一个带有棱角的信号。但是,我们可以用正弦曲线来非常逼近地表示它,逼近到两种表示方法不存在能量差别,基于此,傅立叶是对的。

       为什么我们要用正弦曲线来代替原来的曲线呢?如我们也还可以用方波或三角波来代替呀,分解信号的方法是无穷多的,但分解信号的目的是为了更加简单地处理原来的信号。用正余弦来表示原信号会更加简单,因为正余弦拥有原信号所不具有的性质:正弦曲线保真度。一个正余弦曲线信号输入后,输出的仍是正余弦曲线,只有幅度和相位可能发生变化,但是频率和波的形状仍是一样的。且只有正余弦曲线才拥有这样的性质,正因如此我们才不用方波或三角波来表示。

二、傅立叶变换分类

       根据原信号的不同类型,我们可以把傅立叶变换分为四种类别:
1 非周期性连续信号 傅立叶变换(Fourier Transform)
2 周期性连续信号 傅立叶级数(Fourier Series)
3 非周期性离散信号 离散时域傅立叶变换(Discrete Time Fourier Transform)
4 周期性离散信号 离散傅立叶变换(Discrete Fourier Transform)


       下图是四种原信号图例:  


这四种傅立叶变换都是针对正无穷大和负无穷大的信号,即信号的的长度是无穷大的,我们知道这对于计算机处理来说是不可能的,那么有没有针对长度有限的傅立叶变换呢?没有。因为正余弦波被定义成从负无穷小到正无穷大,我们无法把一个长度无限的信号组合成长度有限的信号。面对这种困难,方法是把长度有限的信号表示成长度无限的信号,可以把信号无限地从左右进行延伸,延伸的部分用零来表示,这样,这个信号就可以被看成是非周期性离解信号,我们就可以用到离散时域傅立叶变换的方法。还有,也可以把信号用复制的方法进行延伸,这样信号就变成了周期性离解信号,这时我们就可以用离散傅立叶变换方法进行变换。这里我们要学的是离散信号,对于连续信号我们不作讨论,因为计算机只能处理离散的数值信号,我们的最终目的是运用计算机来处理信号的。

       但是对于非周期性的信号,我们需要用无穷多不同频率的正弦曲线来表示,这对于计算机来说是不可能实现的。所以对于离散信号的变换只有离散傅立叶变换(DFT)才能被适用,对于计算机来说只有离散的和有限长度的数据才能被处理,对于其它的变换类型只有在数学演算中才能用到,在计算机面前我们只能用DFT方法,后面我们要理解的也正是DFT方法。这里要理解的是我们使用周期性的信号目的是为了能够用数学方法来解决问题,至于考虑周期性信号是从哪里得到或怎样得到是无意义的。

       每种傅立叶变换都分成实数和复数两种方法,对于实数方法是最好理解的,但是复数方法就相对复杂许多了,需要懂得有关复数的理论知识,不过,如果理解了实数离散傅立叶变换(real DFT),再去理解复数傅立叶变换就更容易了,所以我们先把复数的傅立叶变换放到一边去,先来理解实数傅立叶变换,在后面我们会先讲讲关于复数的基本理论,然后在理解了实数傅立叶变换的基础上再来理解复数傅立叶变换。

       还有,这里我们所要说的变换(transform)虽然是数学意义上的变换,但跟函数变换是不同的,函数变换是符合一一映射准则的,对于离散数字信号处理(DSP),有许多的变换:傅立叶变换、拉普拉斯变换、Z变换、希尔伯特变换、离散余弦变换等,这些都扩展了函数变换的定义,允许输入和输出有多种的值,简单地说变换就是把一堆的数据变成另一堆的数据的方法。

三、一个关于实数离散傅立叶变换(Real DFT)的例子

       先来看一个变换实例,下图是一个原始信号图像:
       这个信号的长度是16,于是可以把这个信号分解9个余弦波和9个正弦波(一个长度为N的信号可以分解成N/2+1个正余弦信号,这是为什么呢?结合下面的18个正余弦图,我想从计算机处理精度上就不难理解,一个长度为N的信号,最多只能有N/2+1个不同频率,再多的频率就超过了计算机所能所处理的精度范围),如下图:

       9个余弦信号:

   9个正弦信号:

       把以上所有信号相加即可得到原始信号,至于是怎么分别变换出9种不同频率信号的,我们先不急,先看看对于以上的变换结果,在程序中又是该怎么表示的,我们可以看看下面这个示例图:

       上图中左边表示时域中的信号,右边是频域信号表示方法,从左向右表示正向转换(Forward DFT),从右向左表示逆向转换(Inverse DFT),用小写x[]表示信号在每个时间点上的幅度值数组, 用大写X[]表示每种频率的副度值数组, 因为有N/2+1种频率,所以该数组长度为N/2+1,X[]数组又分两种,一种是表示余弦波的不同频率幅度值:Re X[],另一种是表示正弦波的不同频率幅度值:Im X[],Re是实数(Real)的意思,Im是虚数(Imagine)的意思,采用复数的表示方法把正余弦波组合起来进行表示,但这里我们不考虑复数的其它作用,只记住是一种组合方法而已,目的是为了便于表达(在后面我们会知道,复数形式的傅立叶变换长度是N,而不是N/2+1)。
       下一节我们将来看一下实数傅立叶变换的具体方法。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dznlong/archive/2008/04/08/2261150.aspx

使用特权

评论回复
13
zhyh007| | 2011-4-3 14:52 | 只看该作者
辛苦了

使用特权

评论回复
14
Sin90Cos90|  楼主 | 2011-4-4 11:28 | 只看该作者
电感测量编辑词条分享
新知社
新浪微博
人人网
腾讯微博
移动说客
网易微博
开心001
天涯
http://www.hudong.com/wiki/%E7%94%B5%E6%84%9F%E6%B5%8B%E9%87%8F

本词条由seekafter创建,共有1位协作者编辑了1次。最新协作者:seekafter。

请用一段简单的话描述该词条,马上添加摘要。
目录
1 电感测量
2 正文
3 配图
4 相关连接
1 电感测量
2 正文
3 配图
4 相关连接
为本词条添加视频和组图相关影像电感测量 - 电感测量


电感测量 - 正文
  电感是反映磁场变化对电路影响的集总电参数。电感测量分为自感测量和互感测量。
  在电工、无线电技术中,常用导线绕制成各种形状的线圈以获取较强且集中的磁场。为进一步增强磁场,还在线圈内放置铁磁物质。这种情况下自感总是要伴随着一定的电阻。 低频下的自感和互感的电路模型见图1。图中L代表自感,M代表互感,R代表电阻。当电流通过线圈时产生的磁场与电流成正比时,电感是常数,称做线性电感。当线圈内放置铁磁物质且工作进入饱和区时,自感不是常数,称非线性自感。
  自感测量  在测自感时须将自感L与电阻R分开。常用的自感测量方法有3种。
  ①三表法:使用电压表、电流表、功率表进行测量。由三个表的读数U、I、P 以及电源的角频率ω ,按公式


可得到自感。如电阻R 可忽略时,P=0,只用电压表、电流表的读数即可根据得到自感。此法准确度较低,但可用于测非线性自感。
  ②电桥法:利用经典交流电桥和有源电桥测自感。
  ③谐振法:将电感与标准可变电容器C串联,调节C使此电路串联谐振于电源角频率ω处,则由公式得到自感。 
  互感测量  常用的方法有两表法和坎贝尔桥路法。
  ①两表法:利用电流表和电压表进行测量(图2a)。由电压表的读数U、电流表的读数I以及电源角频率ω可按公式计算出互感。
  ②坎贝尔桥路法:将互感线圈与一可变标准电容器C 联接成如图2b所示的电路,调节C 使检测仪表D指零时,则由公式得到自感。

使用特权

评论回复
15
xxlest| | 2011-4-4 14:02 | 只看该作者
本人刚入手28835 学习中

使用特权

评论回复
16
Sin90Cos90|  楼主 | 2011-4-5 10:26 | 只看该作者
突然想起   中学 老师 教的  快速 手算   二进制转十进制 的方法 如
1111.1111(2)=15.9375(10)

使用特权

评论回复
17
Sin90Cos90|  楼主 | 2011-4-5 10:34 | 只看该作者

使用特权

评论回复
18
Sin90Cos90|  楼主 | 2011-4-21 23:02 | 只看该作者
要完成无线电通信,首先必须产生高频率的载波电流,然后设法将要传递的信息加到载波上。
△△在无线电技术中采用振荡器来产生高频电流。振荡器可以看作是将直流电能转变为交流电能的换能器。振荡器是无线电发送设备中的基本单元。一个载波电流(或电压)Asin(ωt+ψ)有三个参数可以改变,即:①振幅 A;②频率ω/2π;③相角ψ。利用待传送的信号来改变这三个参数中的某一个,就是连续波调制。由此可知,连续波调制可以有三种方式:调幅、调频、调相。
△△幅度调制:载波的频率与相角不变,使载波的振幅A按照信号的变化规律变化,称为调幅。在调幅中,高频振幅变化所形成的包络波形就是原信号的波形。
△△频率调制:载波的振幅不变,使载波的瞬时频率按照信号的变化规律变化,称为调频。在调频中,瞬时频率的变化即反映了信号的变化。
△△相位调制:载波的振幅不变,使载波的瞬时相位按照信号的变化规律变化,称为调相。在调相中,瞬时相位的变化即反映了信号的变化。同时,瞬时相位的变化总会引起瞬时频率的变化,并且任何相位变化的规律都有与之相对应的频率变化的规律。因此,从瞬时波形看,很难区分调频与调相。由于以上原因,调频与调相有时统称为调角,
△△脉冲调制:脉冲调制有别于连续波调制。脉冲调制首先是使脉冲本身的参数(脉冲振幅、脉冲宽度、脉冲位置等)按照信号的规律变化,亦即使脉冲本身包含信号,然后再用这已调脉冲对高频电流进行调制。这就是脉冲调制的过程。由此可见,脉冲调制是双重调制:第一次调制是用信号去调制脉冲;第二次是用这已调脉冲对高频进行调制。这就是所谓的二次(二级)调制。

使用特权

评论回复
19
Sin90Cos90|  楼主 | 2011-4-21 23:03 | 只看该作者
标题 版块  状态 回收站 待审核 关闭 正常 最后发表 最后发表时间
授之以渔: 几个例子弄清复立叶变换的应用

https://bbs.21ic.com/viewthread.p ... p;page=7#pid1629158
https://bbs.21ic.com/viewthread.p ... ghlight=&page=4

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:请教如何把笔记本显示调成 关机瞬间的黑白色! 已经问过 GOOGLE  BAIDU了无解!

0

主题

176

帖子

1

粉丝