打印

用软件实现低速锁相环

[复制链接]
6345|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zenyin|  楼主 | 2007-12-12 17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于采集领域为了提高仪表A/D的抗干扰和减少跳字,一种有效的办法是同步滤波,这里频率的同步就要用到硬件锁相环例如典型的LM567 LM564 CD4046等
其实速度不高的情况下是完全可以用软件来实现的,我曾用在单路数字通信上,效果很好.当时是用51单片机把语音编码、压缩、信令合路,码位同步、码帧同步、分路、解码全部用一片单片机,完全靠软件实现过,其可懂度能区分是谁在说话,外围只需要一片LM358做抗混叠和输出重构平滑滤波器,AT89C2051片上比较器和软件配合起来作语音编码,采用增量调制瞬时压扩算法(目前国际上推行是音节平滑推迟压控算法),可收可发的准双工!
现我把其中码元同步技术介绍给大家,借助这种思路对大家编制有良好抗干扰性的"软件串口"或者新的协议规程非常有利!

     开门见山---因为本质的东西是很简单很原始的:

 用增加减少分频比带来的滞后和超前相位跟踪锁定到参考频率

例如:要产生10K的频率(现在是标称10K),用24M晶体,那分频比是100,为什么是100不是200呢?请想一想!
     这100分频比在24M下对应10K的标称,但当我们把分频比增大一位为101时频率减低,相位开始也开始后移,同理为分频比降为99时是使本地时钟(软件VCO哈)相位频率上升超前,这样有前有后的调整总能使本方相位调整到基准参考频率的频率和相位上.条件是你调整的相位是缩小相位差的方向,不过调反也没关系,把JC改成JNC就行了!
很显然当我方和对方的参考频率(这里实际就是码元)相位正好相差90度固定相位时,正好对准码元的中央,所以第一次粗同步时,初始装数是50而不是100,这时将有最大的抗干扰容限。

传统的码元同步需要放大、整型、非线性变换(为了提高效率用全占控码不用曼切斯特编码)提载、窄带滤波(一般用晶体滤波)载波整形、二次分频(到此得到就是对方载波了)锁相、再分频、最后得到对方同步时钟,这是个非常复杂的系统,是数字通信技术目前最大难点,也是衡量数字通信可靠性的高低!
采用这钟方法全部用软件来实现,因为人脑的提载分频、倍频"鉴"别相"位"压控振荡能力远比硬件电阻电容电感和三极管强多了!
我很自恋这样的尝试和取的预料成功我想全世界只有我一个人做过!

相关帖子

沙发
end2000| | 2007-12-12 22:46 | 只看该作者

看了你这么多帖子

这篇才露出楼主的水平,高~

使用特权

评论回复
板凳
fsaok| | 2007-12-12 22:54 | 只看该作者

高!

使用特权

评论回复
地板
木头东瓜| | 2007-12-13 09:39 | 只看该作者

曾经在同事写的解码程序里面也用到过类似的同步思路

使用特权

评论回复
5
sz_kd| | 2007-12-13 10:16 | 只看该作者

呵呵

不知道你怎么算的
差太多了吧

使用特权

评论回复
6
zenyin|  楼主 | 2007-12-13 10:23 | 只看该作者

无知才无畏

我们总有这样一种思维框架:用软件来实现语音编码一定要N多程序编制,麻烦规模很大哈,其实大错特错了,因为任何一个不是你自己编制的软硬件骨架,你搭试在你系统里本质都是一份协议和妥协(你用人家东西就是被迫接受人家的“硬”灌输“软”章法),对软章法:例如起始位停止位时序高低顺序编码规则应答寻址等,实际你是按对方资料上提供的“评估板”搭好了电路,最后用软件编制去解析协议和按部就班地去应对“多来米发索”一步一个脚印的高低电平组合,所以往往是你买个硬件过来其初始化编程和数据通信数据处理(例如标定BCD码CRC校验等)用的程序远远比软件化一个硬件所用的程序多得多得多!下面软化一片语音硬件,一个语音编码程序就这十几条而且是定时器0中断子程序:定时50US到  P1。6是AT89C2051比较器输出,P1。0是片上比较器正向输入接到语音信号; P1。1是片上比较器输反向输入,接本地跟踪语音积分电阻电容,简单说当输入语音电平高于本地跟踪语音电平时应让P3。7输入高电平对本地语音积分器充电去更踪高,否则输出低电平让其放电,减低本地语音电平,这样就实现了捕获和跟踪输入语音,其程序
          JB P1。6,高冲电 ;此时外部语音高应充电
     ;P1。6=0是内部语音电平高于外部语音电平应放电
          JNB P3。7,继续放电   ;P3。7=0说明刚才就在放电应继续放电
      ;P3。7=1说明当前在冲电应应立即转为放电(刚才冲过头了)
          CLR P3。7
          MOV R3,#04H   ;既然都跟上了,就要精细保持
   返回: RETI
继续放电:DJNZ R3,返回   对连续充电的次数进行累积,老都放不完说明放电太慢了要加快放电
          MOV R3,#04     ;连续4次检验
          CLR P1。2       ;P1。2开启大冲发冲放电闸门      
          RETI                        
高充电:以下和上面基本相同
       所以全部程序只有18条,上电初始化是MOV TMOD,#22H
MOV TH0,#256-100
MOV TL0,#256-100
MOV TCON,#45H
MOV IE,#10000010B
。。。。。。。。。。。
       

使用特权

评论回复
7
zenyin|  楼主 | 2007-12-13 10:28 | 只看该作者

要敢于这样想不是用硬件软化

用软件的堆积去换来硬件的节省而是用软硬件弥合去达到既节省硬件更节省软件的双赢!我发现大多数情况是:硬件软化,恰恰节省的是软件,而不是硬件!

使用特权

评论回复
8
arm86| | 2007-12-13 10:35 | 只看该作者

这个帖子有内涵,先顶一下

使用特权

评论回复
9
zenyin|  楼主 | 2007-12-13 14:02 | 只看该作者

软件锁相环的好处

第一:有效消除了环路滤波和捕捉时间的尖锐矛盾
第二:可以人为剔除因干扰造成的明显的相位裂变
第三:能借助模糊算法使相位调整渐次达到柔性弥合

使用特权

评论回复
10
infree| | 2007-12-13 16:44 | 只看该作者

以前用CPLD做过的ITU G703 64K同相接口模块中实现方法和这个类

不过是在CPLD中用VHDL编程实现的,并且我处理的信号是经过编码的,含有一定的时钟信息。
    如果没有理解错楼主的意思的话,你的锁相系统是遇到数据线有跳变时就进行一次相位调整吧,如果长0或长1就按前次调整后的设置工作。可是有个问题就是如果你初次设为分频50,那么每次是按一定的步长调整,还是对前次的位宽进行计时后直接调整到位呢?如果是后一种,感觉实现起来就简单些了,首先可以用标称的频率来确定数据边沿到收方时钟上升沿(采样)的宽度,也就是确定了相位关系,接下来在没有新的数据边沿变化时就按上次计时的位宽得出的频率来产生接收时钟。(如果是多个数据位相同,如2个连1,3个连0等等,需要根据标准速率判断出是几个数据位)。
    很久没做这种底层的东西了,描述一遍,相当于重新学习了一下。

使用特权

评论回复
11
zenyin|  楼主 | 2007-12-13 17:15 | 只看该作者

搞=高手,怎么现在没做底层,一定是荣升上层建筑了

恭喜恭喜请客请客哦兄弟

使用特权

评论回复
12
5_0_5| | 2007-12-13 18:10 | 只看该作者

景仰一下

使用特权

评论回复
13
infree| | 2007-12-14 09:09 | 只看该作者

楼主见笑了

我说的底层指的是硬件部分,像数字逻辑设计(CPLD,FPGA)和模拟电路设计(当然这个我一直不曾深入过)。
目前工作内容是什么都作,从市场分析到产品规划,再到系统分析,模块划分,软件编程,系统验证,呵呵,目前这个公司很小,分工不明确,让大家见笑了。

使用特权

评论回复
14
zenyin|  楼主 | 2007-12-14 09:23 | 只看该作者

本身就是逗乐,好兄弟

好机会,能有这样的机会锻炼,将来市场总"奸",技术总"奸"生供总"奸"你一担跳,那才叫老"奸"巨滑!呵呵嫉妒+ING

使用特权

评论回复
15
infree| | 2007-12-14 09:44 | 只看该作者

呵呵,呵呵

使用特权

评论回复
16
huangqi412| | 2007-12-14 19:47 | 只看该作者

又学习了

使用特权

评论回复
17
mapleyang| | 2007-12-14 21:46 | 只看该作者

轻拍一下楼主:)

楼主说的这种用单片机实现软件锁相环的方法在fpga/cpld设计里已经早都使用了的啊,就是一个数字锁相环嘛,只不过在fpga中实现的时候更简单一些,两年前我上传过一个其fpga实现的电路,不难的

使用特权

评论回复
18
zizzfish| | 2007-12-16 13:45 | 只看该作者

MSP430也有类似的方法。

就是利用外部的32.768K来校正芯片内的VCO。

使用特权

评论回复
19
wylloong| | 2013-8-9 12:44 | 只看该作者
楼主太高了表示读起来很费力

使用特权

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

本版积分规则

90

主题

393

帖子

5

粉丝