结自己手机RF开发的经验,送给已经或者准备从事手机RF开发的朋友。
1. 前言
2006 年 5 月,从事 cell phone RF 部分的 R&D 工作,开发的 RF sets 是 skyworks 的 SKY74117 和 SKY77318 。 2007 年 1 月,开发的 RF sets 已经基本正常,可以投入量产使用。但经过使用后,发现一些问题:
( 1 ) Networks slow synchronization , related with DCOC 。
( 2 ) High current consumption in paging , related with RXENA is shut off later 。
( 3 ) Clock stable issue , related with long CLK setup time and wakeup time 。
( 4 ) Switch spectrum unstable , change a ramp timing , change a ramp high table and change RC filter value in ramp 。
( 5 ) Bad modulation spectrum , should change the power supply caps filter value and pay attention to power layout of SKY74117 。
( 6 ) RXL un-balance in band , change the matching between SAW and XCV 。
2007 年 8 月,上面问题基本解决,但是由于( 1 )是改变了寄存器的配置,可能会影响 FTA ,但是目前使用上没有问题。如果改动,需要用 fixed gain 尝试,还不清楚怎么做,需要了解基带的特性,整个开发工作基本结束。
16 个月下来,在开发过程中学习了很多东西,谢谢 FR 工程师的支持,谢谢公司提供的机会。
现在觉得有必要好好掌握开发中遇到的问题,同时详细整理整个开发过程。这样可以作为以后的参考,也可以作为案子开发的模板。
温故知新!善于总结才能做一个 senior specialist system engineer 。
这 16 个月,主要从事 cell phone RF 部分的驱动开发工作,包括 transceiver 驱动, power amplifier 驱动和 switch 驱动。但是由于需要,几乎学习了 cell phone RF 部分的所有东西,包括: schematics , layout , RF circuit debug , driver debug , RF performance test , a little GSM knowledge , Wireless Communication Test Set , GSM performance test , embedded programming , GPIB programming , Cell Phone Calibration 等。其实,这些东西就是一个 RF 驱动开发者在开发过程中遇到,必须学习的知识。
RF 部分使用的是 Skyworks RF sets , SKY74117 + SKY77318 + any switch 。整个开发流程是: schematics à layout à driver development à calibration development à GSM spec & performance test à Whole set debug à current consumption test à final full functions integration ( MMI system ) à Final production 。
整理整个开发流程其实挺费劲,需要回忆当时做过的和遇到的东西。但是由于当时没有很好的记录,所以回忆写起来,可能逻辑性不强,就按照大体的过程想到哪里就写到那里。
在 RF 开发过程中,还做了很多其他事情。例如: echo cancellation , current interferer on audio , RF interferer on audio , development environment working ( Make/Makefile ), ADC calibration , GPIB programming and current test by Agilent Mobile communications DC source 。虽然没有很深入学习这些东西,但也算是比较清楚,觉得这些东西其实是很有益的补充,以后如果有机会做相关的开发,也不用在入门了。
2. 文档管理
关键字:文档,文档命名,开发文件目录。
工欲善其事,必先利其器。
所以,首先,认为在做开发之前,应该准备好需要的文档和仔细思考一下开发过程;其次,大概规范一下开发文件目录,将开发文件划分目录。例如,( 1 ) RF 驱动首先应具备必要的文档, datasheet , demo schematics , layout guide , programming guide ;( 2 )思考开发过程,所有嵌入式开发都包括硬件开发,软件开发, test , debug ;( 3 )规范自己的开发目录,使很容易地从文档中查找到需要的知识,备份完成的工作,追查 revision history ,掌握开发过程的 bug list ,避免重复犯错。还有,在开发过程中,如果遇到文档中不可解决的问题,就必须和芯片 FAE 及时取得联系,获得帮助。这样,才能提高开发效率,节省开发时间。大体开发目录结构图如下所示:
Figure1. Development files structure
一个好的文档命名可以了然文档的内容和作用。如:
· DatSheet_xxxxxx.pdf à datasheet
· SchGuide_xxxxxx.pdf à Schematics guide
· LayGuide_xxxxxx.pdf à Layout guide
· ProGuide_xxxxxx.pdf à Programming guide
· Trainings_xxxxxx.pdf à Trainings for engineer
· AppNotes_xxxxxx.pdf à Application notes
· DevNotes_xxxxxx.pdf à Development notes, do it yourself
所以,后面的东西都是按照这部分约定好的来做的。
3. 开发流程
当初在开发前,由于缺乏比较复杂的案子开发经验,开发时没有在脑袋里形成一个整体的概念。所以,总是由于缺少一些文档或者流程不正确,导致开发 delay 。现在回想起来,觉得虽然走了弯路,但可以作为经验积累起来。再做开发时,就会事半功倍了。
一般来说,如果开发一个产品,无论开发过程有多复杂,都要大概在脑袋里预想一下开发过程,尽量准备开发所需的一切条件。每个产品的开发过程,无非就是软硬件开发的结合。只是复杂程序不同,可以进一步细分细节。 RF 驱动开发算较复杂的一种,应该分的细些,因为在大公司,可能每步都是不同的工程师来完成。我总结的开发过程如下图。
Figure2. All process flow of RF driver development
按照颜色来分,可以分为 6 部分:
· Documents preparation
· HW development
· Driver development
· Calibration development
· System development
· Mass production development
这也可以说是一个产品的开发过程。
此外,在实际开发中,虽然你只是从事某一部分的开发,但是这不代表你可以不了解其他部分。因为,总会有其他部分的一些因素和你的开发息息相关。如果不了解这其中的缘由, debug 过程将会十分的痛苦。这也就决定了在比较复杂案子的开发中,系统化的概念应该深入。我认为的系统化,体现在具体的工作中就是 teamwork 。除了你应该做好的和需要了解的, teamwork 才是案子成败的最终因素。兄弟同心,其力断金。
4. 准备工作
Figure3. File directories and docs named
开发前,准备好所有需要的文档,先进行略读,不用太仔细,一次肯定是读不懂的。在开发的时候再边做边读,四五遍后基本上文档内容和意思就应该掌握了。上图是整理过的开发文件目录和文档命名,仔细阅读 datasheet , programming guide 等文档,从中发现开发过程中的注意点,像 Recommended Operation Conditions , Power consumption , Electrical specifications , Signal timing 等表中,都包含着电路设计和驱动开发的一些细节。