<?xml version="1.0" encoding="UTF-8" ?>















<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<channel>
<title><![CDATA[bokmanic'职业博客]]> </title>
<description>
<![CDATA[]]>
</description>
<link>http://bokmanic.blog.bokee.net/</link>
<language>zh-cn</language>
<creator>bokmanic</creator>
<pubDate>Fri, 09 May 2008 14:10:00 CST </pubDate>
<generatorAgent rdf:resource="http://www.bokee.net"/>
<ttl>5</ttl>

<item>
<title>光纤的基本知识与术语</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183673.html</link>
<description>
<![CDATA[<table cellspacing="1" cellpadding="5" width="100%" border="0">
    <tbody>
        <tr>
            <td>光纤的基本知识与术语<br /><br />光纤主要分为两类：&nbsp;<br />　　单模光纤（Single-modeFiber）：一般光纤跳线用黄色表示，接头和保护套为蓝色；传输距离较长。<br />　　多模光纤（Multi-modeFiber）：一般光纤跳线用橙色表示，也有的用灰色表示，接头和保护套用米色或者黑色；传输距离较短。<br />　　光纤使用注意！<br />　　光纤跳线两端的光模块的收发波长必须一致，也就是说光纤的两端必须是相同波长的光模块，简单的区分方法是光模块的颜色要一致。<br />　　一般的情况下，短波光模块使用多模光纤（橙色的光纤），长波光模块使用单模光纤（黄色光纤），以保证数据传输的准确性。<br />　　光纤在使用中不要过度弯曲和绕环，这样会增加光在传输过程的衰减。<br />　　光纤跳线使用后一定要用保护套将光纤接头保护起来，灰尘和油污会损害光纤的耦合。<br />　　术语缩写<br />　　SFP：SmallFormFactor&nbsp;Pluggable<br />　　SFF：SmallFormFactor<br />　　XFP：10GigabitSmall&nbsp;Form&nbsp;Factor&nbsp;Pluggable<br />　　MU：MiniatureUnit<br />　　LC：LucentConnector<br />　　SC：SubscriberConnector<br />　　FC：FiberConnector<br />　　MTRJ：&lsquo;MT&rsquo;ferrule，Register&nbsp;Jack&nbsp;latch<br />　　ST：StraightTip<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.iceach.com/XC6201P262MR-iceach.htm"><strong>XC6201P262MR</strong></a>&nbsp;<a href="http://www.iceach.com/74ABT16373C-iceach.htm"><strong>74ABT16373C</strong></a>&nbsp;<a href="http://www.iceach.com/PI49FCT3807H-iceach.htm"><strong>PI49FCT3807H</strong></a>&nbsp;<a href="http://www.iceach.com/ST92T141K4M6-iceach.htm"><strong>ST92T141K4M6</strong></a>&nbsp;<a href="http://www.iceach.com/A2019AQ-iceach.htm"><strong>A2019AQ</strong></a>&nbsp;<a href="http://www.iceach.com/LX5510-iceach.htm"><strong>LX5510</strong></a>&nbsp;<a href="http://www.iceach.com/M74LS273P-iceach.htm"><strong>M74LS273P</strong></a>&nbsp;<a href="http://www.iceach.com/MC68HC24P-iceach.htm"><strong>MC68HC24P</strong></a>&nbsp;<a href="http://www.iceach.com/IXTH50N20-iceach.htm"><strong>IXTH50N20</strong></a>&nbsp;<a href="http://www.iceach.com/TMP87C807U-1B43-iceach.htm"><strong>TMP87C807U-1B43</strong></a> </td>
        </tr>
    </tbody>
</table>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183673.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 13:07:24 CST </pubDate>
</item>

<item>
<title>微处理器温度控制模拟初始化和整体参数设定</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183672.html</link>
<description>
<![CDATA[<table cellspacing="1" cellpadding="5" width="100%" border="0">
    <tbody>
        <tr>
            <td>微处理器温度控制模拟初始化和整体参数设定<br /><br />初始化功能块主要包括对处理过程定时界面的xy波形图显示以及处理过程状态界面温度曲线的定义过程。这两个过程以不同的方式进行定义。&nbsp;<br />　　对于处理过程定时界面的xy波形图显示，是通过初始化矩阵常量以及定义一维初始化数组来实现。在初始化阶段，通过定义初始化矩阵常量，定义输入阶段、计算阶段和输出阶段在XY波形图上的｀方向坐标位置。波形图上，各条曲线的艿方向的坐标通过初始化一维数组产生。在后续的不同阶段功能块中，将这两个数据形式通过簇捆绑过程，把需要显示的各个阶段曲线捆绑成为簇，输入到XY波形图上进行显示。<br />　　对于处理过程状态界面的温度曲线的定义过程，则通过对定时循环结构定义移位寄存器来进行初始化定义。移位寄存器内所包含的数据为温度曲线的X和y坐标，以及风扇是否开关的状态参数。在后续的功能处理块中，通过创建数组产生波形图显示的簇后，由处理过程状态界面的波形图进行显示，风扇开关状态通过该页面的逻辑控件显示。<br />　　此外，初始化过程还包括对整个微处理温度控制模拟初始化时间偏置和总的时间定义，以及对微处理器温度控制子Ⅵ的初始化等。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.ic37.info/DS90LV018ATM_ic.htm"><strong>DS90LV018ATM</strong></a>&nbsp;<a href="http://www.ic37.info/IDT71016S15Y_ic.htm"><strong>IDT71016S15Y</strong></a>&nbsp;<a href="http://www.ic37.info/ADV7172KST_ic.htm"><strong>ADV7172KST</strong></a>&nbsp;<a href="http://www.ic37.info/MAX211EEAI_ic.htm"><strong>MAX211EEAI</strong></a>&nbsp;<a href="http://www.ic37.info/SG3526N_ic.htm"><strong>SG3526N</strong></a>&nbsp;<a href="http://www.ic37.info/SN74LVC74APWR_ic.htm"><strong>SN74LVC74APWR</strong></a>&nbsp;<a href="http://www.ic37.info/EPCS1SI8_ic.htm"><strong>EPCS1SI8</strong></a>&nbsp;<a href="http://www.ic37.info/UA78L05ACDR_ic.htm"><strong>UA78L05ACDR</strong></a>&nbsp;<a href="http://www.ic37.info/NDS0610_ic.htm"><strong>NDS0610</strong></a>&nbsp;<a href="http://www.ic37.info/DS90CR215MTD_ic.htm"><strong>DS90CR215MTD</strong></a> </td>
        </tr>
    </tbody>
</table>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183672.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 13:07:00 CST </pubDate>
</item>

<item>
<title>智能充电器模糊控制技术的研究</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183671.html</link>
<description>
<![CDATA[<table cellspacing="1" cellpadding="5" width="100%" border="0">
    <tbody>
        <tr>
            <td>智能充电器模糊控制技术的研究<br /><br />&nbsp;&nbsp;<br />1.前言<br />蓄电池的充电控制系统是个非线性[1]的、时变的、有干扰的、具有纯滞后的控制系统[2]。在充放电过程中涉及到很多参数，如充电率、最大允许充电电流、内阻、出气点电压、温度、寿命等。<br />传统的控制系统是建立在被控对象精确数学模型基础上的，如果被控对象的数学模型很复杂或者数学模型无法建立，控制系统就较难实现。蓄电池充电正是属于这种情况，由于蓄电池的充电过程有自己独特的物理化学规律，因此考虑采用模糊控制技术来进行蓄电池的充电控制&nbsp;[3]。<br />模糊控制[4]是以模糊集合理论为基础的控制手段，它是模糊系统理论、模糊技术与自动控制技术相结合的产物,出发点是操作人员的控制经验或相关专家的知识，在设计中不需要建立被控对象的精确数学模型[5]，因而使得控制机理和策略易于接受与理解，设计简单，便于应用。<br />2.模糊控制器的结构及算法<br />&nbsp;<br />基于微控制器组成的模糊控制器包括模糊化接口、决策逻辑、知识库和反模糊化接口四个部分，如图1所示。<br /><br /><br />&nbsp;<br />&nbsp;<br />&nbsp;<br />Fig.1&nbsp;The&nbsp;structure&nbsp;diagram&nbsp;of&nbsp;fuzzy&nbsp;controller<br />在进行模糊控制算法设计时，须首先考虑智能充电系统的技术要求，体现智能充电控制技术的优势，解决长期困扰蓄电池装备中的效率和寿命问题，所以应当提高智能充电控制中对控制量的精度；其次，模糊控制算法必须高速可靠，对外部检测得到的物理量要有非常快的反应速度。采用新型大存储容量的微控制器解决使用查表法所带来的需要大容量内存的问题。<br />3&nbsp;模糊控制器的设计<br />3.1双输入单输出模糊控制器<br />常见的模糊控制器[6]根据输入与输出个数分为单输入单输出、双输入单输出、多输入单输出和双输入多输出等几种。平时应用较多的是双输入单输出模糊控制器。<br />&nbsp;<br />&nbsp;<br />&nbsp;Fig.2&nbsp;The&nbsp;rectangular&nbsp;diagram&nbsp;of&nbsp;fuzzy&nbsp;controller&nbsp;witch&nbsp;has&nbsp;two&nbsp;input&nbsp;UNITS&nbsp;and&nbsp;one&nbsp;output&nbsp;unit<br />图2是双输入单输出模糊控制器的方框图。其中属于论域X的模糊集合&nbsp;取自系统误差e的模糊化，属于论域Y的模糊集合&nbsp;取自系统误差变化率&nbsp;的模糊化，二者构成模糊控制器的二维输入；属于论域Z的模糊集合&nbsp;是反映控制量变化的模糊控制器的一维输出，模糊控制器的控制规则[7]通常由模糊条件语句if&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;&nbsp;&nbsp;&nbsp;then&nbsp;&nbsp;来表达。<br />3.2精确量的模糊化<br />模糊控制系统中的被控对象状态变化是连续的，系统给定值也是连续的,反映到模糊控制器输入端的输入量也必然是连续的。但模糊控制器由计算机构成，它只能执行离散处理[7]。因此模糊控制器要求输入量是离散模糊量，即论域是离散的。对连续论域要进行离散化。连续论域[8]经过量化后就成为一个离散论域[8]。<br />设有连续论域[a，b]，而量化之后的离散论域为&nbsp;，亦即将连续论域分为2n段，则存在系数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）<br /><br />随后，在求出每条规则的强度之后，把相互矛盾的规则中强度较小的舍去；把相同规则合成一条规则，得到最后控制规则基。<br />3.3.2根据学习算法生成控制规则<br />对被控对象执行手动控制所得到的控制规则是较粗糙的，有时还可能会出现控制死区，一个控制规则表中会出现空项,这是不能满足实际控制要求的。为了取得更满意的控制效果，可以对原始的控制规则进行改进。这时，应以粗糙的控制规则为基础，通过仿真实验和系统调试加以完善。<br />4.模糊智能充电系统的工作原理及结构<br />智能充电系统主要由充电电源和单片机控制电路两部分组成。220V的交流市电经整流滤波电路变为脉动的310V高压直流。然后经DC-DC变换电路（脉冲功率变压器）变为充电所需的60V直流电压。为了保证输出电压的稳定性，采用了<a title="UC3842货源和PDF资料" href="http://www.ic37.info/UC3842_ic.htm" target="_blank">UC3842</a>对60V直流电压进行稳压。二次斩波电路主要由MOSFET管、电感、电容和二极管组成，输出24-36V的充电电压。控制部分采用C504单片机，通过对蓄电池端电压信号的采集、分析处理、模糊推理[8]、模糊决策等，控制二次斩波电路中的MOSFET管的通断时间来控制充电电压。控制部分还包括对电流和温度的采集以及电压和电流的显示。总体结构如图3所示。<br /><br /><br />&nbsp;<br />&nbsp;<br />5结论<br />蓄电池的充放电过程是一个复杂的过程，要用精确数学模型对蓄电池充电的控制则有相当的难度。蓄电池的充电控制系统是个非线性的、时变的、有干扰的、具有纯滞后的控制系统，在充放电过程中涉及到很多参数，如充电率、最大允许充电电流、内阻、出气点电压、温度、寿命等。<br />&nbsp;&nbsp;&nbsp;作者创新点为：<br />(1)&nbsp;隶属函数&nbsp;的形状，对控制效果影响较大。窄型隶属函数，反映模糊集合具有高分辨特性。如果系统误差，采用高分辨率模糊集合，则误差控制的灵敏度就会提高。在系统误差较大的范围内，采用具有低分辨率隶属函数的模糊集合；而在系统误差较小，或接近于零时，宜采用具有高分辨率隶属函数的模糊集合。<br />(2)在定义某一语言变量，如误差、误差变化率和控制量变化的全部集合时，要考虑其对论域[-n,+n]的覆盖程度，语言变量的全部模糊集合所包含的非零隶属度对应的论域元素个数，应是模糊集合总数的3-4倍。<br />（3）查表法作为模糊控制算法有表格结构单一，修改繁琐，缺乏灵活性的缺点。针对使用查表法作为模糊控制算法暴露的缺点，在硬件设计中与以补偿，加入了一片X5045电可擦除芯片，将模糊控制表格中的数据存储于微控制器外部存储空间中，基本上克服了这个缺点。<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.ic37.info/DTC115TUAT106_ic.htm"><strong>DTC115TUAT106</strong></a>&nbsp;<a href="http://www.ic37.info/DG409DJ-E3_ic.htm"><strong>DG409DJ-E3</strong></a>&nbsp;<a href="http://www.ic37.info/CY8C26443-24PVXIT_ic.htm"><strong>CY8C26443-24PVXIT</strong></a>&nbsp;<a href="http://www.ic37.info/XC2VP20-6FFG896C_ic.htm"><strong>XC2VP20-6FFG896C</strong></a>&nbsp;<a href="http://www.ic37.info/GRM188F51C224ZA01J_ic.htm"><strong>GRM188F51C224ZA01J</strong></a>&nbsp;<a href="http://www.ic37.info/FMG2AT148_ic.htm"><strong>FMG2AT148</strong></a>&nbsp;<a href="http://www.ic37.info/FHP3130IS5X_ic.htm"><strong>FHP3130IS5X</strong></a>&nbsp;<a href="http://www.ic37.info/FHP3430IM14X_ic.htm"><strong>FHP3430IM14X</strong></a>&nbsp;<a href="http://www.ic37.info/I58-504901_ic.htm"><strong>I58-504901</strong></a> </td>
        </tr>
    </tbody>
</table>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183671.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 13:06:37 CST </pubDate>
</item>

<item>
<title>高频汽车电源设计</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183444.html</link>
<description>
<![CDATA[<p>高频汽车电源设计</p>
<p>概述<br />　　对于电源系统设计人员来说，电路密度的提高既是挑战也是机会。多数汽车电子模块要求低压供电，如5V、3.3V。如果通过线性降压方案将电池电压转换成所需电压，会消耗过多的能量。过多的功率耗散则会提高温度管理系统<br />&lt;TABLE cellSpacing=1 cellPadding=5 width=&quot;100%&quot; border=0&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;高频汽车电源设计&lt;BR&gt;&lt;BR&gt;概述&lt;BR&gt;　　对于电源系统设计人员来说，电路密度的提高既是挑战也是机会。多数汽车电子模块要求低压供电，如5V、3.3V。如果通过线性降压方案将电池电压转换成所需电压，会消耗过多的能量。过多的功率耗散则会提高温度管理系统的设计难度和成本，随着处理器和ASIC工作速度的提升，需要消耗更大功率，这就要求使用结构复杂的高效开关转换器取代简单的低成本、低效率线性电源。&amp;nbsp;&lt;BR&gt;　　开关转换器的优势&lt;BR&gt;　　工作在高开关频率的电源允许选用小尺寸有源元件，如电感、电容，由此可见，开关电路的尺寸取决于电源工作频率。一个高效转换器不仅能够降低功耗，还可以节省空间和昂贵的散热器。因此，使用开关转换器可以使电源模块的总尺寸减小。考虑到这些优点，开关转换器成为车身控制、信息系统、引擎控制电路的理想电源管理方案。&amp;nbsp;&lt;BR&gt;　　开关转换器的选择&lt;BR&gt;　　开关频率对于开关转换器设计非常重要，因为开关电源的很多问题都与工作频率有关。开关频率和它的高次谐波会对其他电路产生电磁干扰，例如，一个调幅收音机对于530kHz到1710kHz的干扰非常敏感。开关频率超过1710kHz时才能消除基波和高次谐波的干扰。测试数据显示，中等电压、高频处理器配合简单的保护电路，正如Maxim产品所采用的架构，可以提供完美的汽车电源管理方案。所以，设计人员不需要高压控制方案即可设计合理的开关转换器。&lt;BR&gt;　　随着开关频率的增加，电路的能量损耗会增大，这在一定程度上削弱了高频工作的优势。因为开关的损耗与工作电压的平方成正比，在高输入电压下开关损耗会更高。典型的汽车电源管理IC需要支持较高电压(40V或更高)，以承受甩负载和瞬态过压。处理高压则需较大的芯片尺寸和较厚的栅极，对应的沟道尺寸较长，造成较长的传输延时。这样，固有的低速处理过程也降低了转换效率，因为开关切换时较长的上升/下降时间会引起较大的开关损耗。&lt;BR&gt;　　Maxim采用先进的处理工艺提高了转换器的开关效率，为中等电压提供出色的高速转换设计方案。以MAX5073为例，它有2路工作在2.2MHz开关频率的升/降压转换控制器，支持23V输入。转换器异相工作使其能够工作在4.4MHz频率下，并保持较高的转换效率。&lt;BR&gt;　　假设开关转换器能够抑制电源干扰，需要考虑的另一个问题是：汽车应用是否真的需要高压工作IC？下面我们通过讨论汽车电源的&lt;BR&gt;　　干扰以及对低压电路的保护措施回答上述问题。&amp;nbsp;&lt;BR&gt;　　电源的过压条件&lt;BR&gt;　　过压保护(OV)器件能够隔离汽车电子系统中连线(通常连接到主电源)所产生的高压传导，有效保护电子电路。对传导干扰的承受能力称为传导抑制。&lt;BR&gt;　　汽车制造商和标准组织定义了各种测试方法来评估电路的传导抑制，汽车OEM厂商的要求大多出自ISO7637标准。以下归纳了与汽车电子应用相关的过压保护问题，但并未全面概括所有与传导干扰相关的细节。&amp;nbsp;&lt;BR&gt;　　稳态过压保护&lt;BR&gt;　　持续时间较长的过压条件被看作稳态过压，例如，过压持续时间超过了对应器件的热时间常数。这种情况下，连续的功率耗散引起温度快速上升成为首要问题，稳态过压通常包括以下几种情况：失效的交流电机调节器、双电池突发启动或和电池反接，以下是各项详细说明。&lt;BR&gt;　　失效交流电机调节，调节交流电机的输出，通过控制励磁绕组的电流幅度调整速度、负荷及温度。调节过程通常由电路(电压调节器)完成，利用脉宽调制(PWM)电机的励磁绕组保持稳定的电机输出。电压调节器的典型输出设置为13.5V。然而，电压调节器会出现失效，无论负载或输出电压处于何种条件，都将作用一个满量程励磁电流。&lt;BR&gt;　　发生失效时，整个系统都要承受高于13.5V&amp;nbsp;(实际电压取决于汽车速度、负荷极其他条件)的电压，典型的调节器失效OEM测试要求是在18V持续一个小时。大部分系统要求符合这个测试条件，虽然有些舒适度和便利功能允许在这种情况下偏离其正常工作状态。&lt;BR&gt;　　双电池突发启动，这是另外一种稳态过压条件，一般发生在拖车或维修人员使用24V电原发动不工作的汽车，或对完全放电的电池进行充电的情况下，对于这种情况，典型的&amp;nbsp;OEM测试要求是在24V下持续2分钟。有些与安全、引擎管理相关的系统需要保证在这种条件下能够工作。&lt;BR&gt;　　电池反接，在生产和维修过程中可能会出现电池反接情况，这时，要求大多数系统可以不工作，但一定要保证不会损坏。典型测试要求是在-14V下持续一分钟，这个测试对系统来说是个挑战，因为需要大电流或低压降。&lt;BR&gt;瞬态过压保护&lt;BR&gt;　　汽车系统中，大多数过压条件都是由感性负载的开关操作引起的瞬态过压，这类负载包括启动电机、燃油泵、车窗电机、继电器线圈、螺线管、点火器件和分布电感等。任何感性负载上的脉冲电流都会产生过压脉冲。根据幅度、持续时间的要求，可以选择滤波器、金属氧化物可变电阻、瞬态电压抑制器等抑制这类瞬态过压。图1至图4说明了ISO7637对过压抑制的要求，表1是对ISO7637规定的总结。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图1.&amp;nbsp;周期性的开关操作会产生周期性的负脉冲，幅度在(80V至-150V，持续时间1ms至140ms，典型源阻抗为5&Omega;至25&Omega;。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图2.&amp;nbsp;周期性的开关操作使电路产生正向脉冲电压，幅度在+75V至+150V，典型持续时间50&mu;s。典型源阻抗为2&Omega;至10&Omega;。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图3.&amp;nbsp;周期性开关操作在电路中产生-150V、100ns的负脉冲(3a)和100V、100ns的正脉冲(3b)，源阻抗典型值为50&Omega;。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图4.&amp;nbsp;交流电机以大电流给放电电池充电时突然中断，将会产生一个甩负载脉冲。电流突降会在电机输出端产生一个高压，以保持系统内部的总能量。瞬态持续过程取决于电机励磁电路的时间常数和调节器的响应时间。&lt;BR&gt;表1.&amp;nbsp;来自不同OEM的传导抑制测试*&lt;BR&gt;&amp;nbsp;&lt;BR&gt;　　如上所述，电池电压不能直接供给低电压、高性能开关转换器，而是将电池连接到瞬态电压抑制起，如MOV或旁路电容及其后续的传统限幅电路。这些简单电路一般采用p沟道MOSFET构成(图5a)。p沟道MOSFET的额定电压为50V至100V，具体取决于VBAT输入端的瞬态电压。&lt;BR&gt;　　利用12V齐纳二极管(Z1)保护MOSFET的栅-源极，防止栅-源电压超过VGSMAX,&amp;nbsp;当输入电压(VBAT)低于齐纳管Z2的击穿电压时，MOSFET处于饱和状态。输入电压发生瞬变时，MOSFET将阻止高于Z2击穿电压的电压通过。这个电路的缺点是使用了一个昂贵的p沟道MOSFET和许多外围元件。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图5a.&amp;nbsp;输入限幅电路(保护电路)采用了一个p沟道MOSFET。&lt;BR&gt;　　另一方案是使用NPN晶体管，NPN管的基极电压嵌位在VZ3,&amp;nbsp;将发射极电压调整在(VZ3&amp;nbsp;-&amp;nbsp;VBE)。这个方案成本较低，但VBE压降产生一定的损耗：PLOSS&amp;nbsp;=&amp;nbsp;IIN&amp;nbsp;x&amp;nbsp;VBE。另外，VBE压降也增加对电池最小工作电压的要求，尤其是在冷启动情况(图5b)。第三个方案是使用n沟道MOSFET，n沟道MOSFET的选择范围较广，而且便宜，可以作为隔离元件使用。其栅极驱动比较复杂，要求VG高于源极电压。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图5b.&amp;nbsp;输入限幅电路(保护电路)采用了一个NPN晶体管。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图5c.&amp;nbsp;输入限幅电路(保护电路)采用了一个n沟道MOSFET。图5c给出了一个使用n沟道MOSFET开关的隔离电路，甩负载情况下，当VBAT电压超过设置门限时，MOSFET完全关闭。随后，只要VBAT电压高于设置门限，MOSFET将一直保持关闭状态。过压保护控制器MAX6398可以汽车过压(如甩负载或双电池供电)时，控制n沟道MOSFET，保护高性能电源，图6给出了方案的原理框图。图7至图9给出了实验室和实际工作环境下的噪声抑制测试结果，所采用的是n沟道MOSFET瞬态保护电路。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图&amp;nbsp;6.&amp;nbsp;MAX5073&amp;nbsp;2MHz&amp;nbsp;buck转换器配合MAX6398保护开关的典型电路，该设计具有高性能以及较高的抗干扰能力。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图7.&amp;nbsp;MAX5073双buck转换器的输入纹波、开关波形测试结果，转换器分别工作在2.2MHz开关频率，输入电容纹波的的频率为4.4MHz&amp;nbsp;(CH1&amp;nbsp;=&amp;nbsp;第2路时钟源;&amp;nbsp;CH2&amp;nbsp;=&amp;nbsp;第1路时钟源;&amp;nbsp;CH3&amp;nbsp;=&amp;nbsp;输入电容纹波;&amp;nbsp;CH4&amp;nbsp;=&amp;nbsp;时钟输出)。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图8A和8B.&amp;nbsp;脉冲(80V，120ms，OEM#5)作用在保护器的输入，&amp;nbsp;MAX5073连接在保护器的输出，监测转换器的第1路和第2路输出。&lt;BR&gt;　　图中波形为图6所示保护器输出和两路转换器输出的响应特性，时间刻度分别为1s/cm&amp;nbsp;(A)和1ms/cm&amp;nbsp;(B)。(CH1&amp;nbsp;=&amp;nbsp;VBAT;&amp;nbsp;CH2&amp;nbsp;=&amp;nbsp;VPROT;&amp;nbsp;CH3&amp;nbsp;=&amp;nbsp;第1路输出;&amp;nbsp;CH4&amp;nbsp;=&amp;nbsp;第2路输出)&lt;BR&gt;&amp;nbsp;&lt;BR&gt;图9A和图9B.&amp;nbsp;脉冲(70V，500ms)作用在图6所示保护开关的输入，MAX5073连接到保护器的输出，监测转换器的第1路输出和第2路输出。&lt;BR&gt;　　图中波形为保护器输出和两路转换器输出的响应特性，时间刻度分别为1s/cm&amp;nbsp;(A)和200&mu;s/cm&amp;nbsp;(B)。(CH1&amp;nbsp;=&amp;nbsp;VBAT;&amp;nbsp;CH2&amp;nbsp;=&amp;nbsp;VPROT;&amp;nbsp;CH3&amp;nbsp;=&amp;nbsp;第1路输出;&amp;nbsp;CH4&amp;nbsp;=&amp;nbsp;第2路输出)&amp;nbsp;&lt;BR&gt;　　如图9所述，MAX6398功能模块完全支持汽车应用中的甩负载设计，提供低电压、高性能输出。利用保护电路、低电压、高频工作特性可有效节省电路板空间，降低成本。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;本文可能所用到的IC型号：&amp;nbsp;&lt;A href=&quot;<a href="http://www.ic37.info/LMC6484IN_ic.htm&quot;&gt;&lt;STRONG&gt;LMC6484IN&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/LMC6484IN_ic.htm&quot;&gt;&lt;STRONG&gt;LMC6484IN&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/MAX973CSA_ic.htm&quot;&gt;&lt;STRONG&gt;MAX973CSA&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/MAX973CSA_ic.htm&quot;&gt;&lt;STRONG&gt;MAX973CSA&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/SC87C51CCA44_ic.htm&quot;&gt;&lt;STRONG&gt;SC87C51CCA44&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/SC87C51CCA44_ic.htm&quot;&gt;&lt;STRONG&gt;SC87C51CCA44&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/LMC6464AIM_ic.htm&quot;&gt;&lt;STRONG&gt;LMC6464AIM&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/LMC6464AIM_ic.htm&quot;&gt;&lt;STRONG&gt;LMC6464AIM&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/EP20K600EBC652-1_ic.htm&quot;&gt;&lt;STRONG&gt;EP20K600EBC652-1&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/EP20K600EBC652-1_ic.htm&quot;&gt;&lt;STRONG&gt;EP20K600EBC652-1&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/XC18V01VQ44C_ic.htm&quot;&gt;&lt;STRONG&gt;XC18V01VQ44C&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/XC18V01VQ44C_ic.htm&quot;&gt;&lt;STRONG&gt;XC18V01VQ44C&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/LXP610PE_ic.htm&quot;&gt;&lt;STRONG&gt;LXP610PE&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/LXP610PE_ic.htm&quot;&gt;&lt;STRONG&gt;LXP610PE&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/HI1-508-5_ic.htm&quot;&gt;&lt;STRONG&gt;HI1-508-5&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/HI1-508-5_ic.htm&quot;&gt;&lt;STRONG&gt;HI1-508-5&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/M27C1001-12C1_ic.htm&quot;&gt;&lt;STRONG&gt;M27C1001-12C1&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A">http://www.ic37.info/M27C1001-12C1_ic.htm&quot;&gt;&lt;STRONG&gt;M27C1001-12C1&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;&lt;A</a> href=&quot;<a href="http://www.ic37.info/LM337IMP_ic.htm&quot;&gt;&lt;STRONG&gt;LM337IMP&lt;/STRONG&gt;&lt;/A">http://www.ic37.info/LM337IMP_ic.htm&quot;&gt;&lt;STRONG&gt;LM337IMP&lt;/STRONG&gt;&lt;/A</a>&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183444.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 11:20:25 CST </pubDate>
</item>

<item>
<title>【转帖】uCLinux FAQs</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183440.html</link>
<description>
<![CDATA[<table cellspacing="1" cellpadding="5" width="100%" border="0">
    <tbody>
        <tr>
            <td>【转帖】uCLinux&nbsp;FAQs<br /><br /><br />Q：&nbsp;请问uclinux启动时最先执行哪一个程序文件中的代码？&nbsp;3g+&nbsp;\?&nbsp;L-c&nbsp;&nbsp;<br />A：&nbsp;如果是不压缩的内核，则执行&nbsp;linux-2.4.x/arch/armnommu/kernel/head-armv.S&nbsp;^W{eO@&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果是压缩的内核，则先执行解压的程序&nbsp;0$(jBnE&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linux-2.4.x/arch/armnommu/boot/compressed/head.S&nbsp;RH1U_gp4&nbsp;]&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;当然，如果是其他的&nbsp;arch&nbsp;，应该可以依此类推。&nbsp;\&gt;_eEZ5&nbsp;&nbsp;<br />*GB$sXF&nbsp;&nbsp;<br />Q：&nbsp;程序在&nbsp;ram&nbsp;中运行和在&nbsp;rom&nbsp;中运行有什么不同？&nbsp;X@G[=Rs&nbsp;&nbsp;<br />A：&nbsp;至少有以下这些情况是需要&nbsp;ram&nbsp;的&nbsp;：&nbsp;!k&nbsp;;[^&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;程序中定义了全局变量，并进行了赋值。&nbsp;例如&nbsp;int&nbsp;a;&nbsp;&nbsp;a&nbsp;=&nbsp;1;&nbsp;9,}fx+^&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;程序中进行了函数调用，使用了堆栈。&nbsp;例如&nbsp;function();&nbsp;..sJtA8&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;在函数内部使用了局部变量，同样也会使用堆栈。&nbsp;例如&nbsp;void&nbsp;f()&nbsp;{&nbsp;int&nbsp;a&nbsp;=&nbsp;5;&nbsp;}&nbsp;NO%|c|B|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;程序中对某内存地址进行了写操作。例如&nbsp;str&nbsp;r1,&nbsp;[r2];&nbsp;&nbsp;*paddr&nbsp;=&nbsp;1;&nbsp;&quot;`H=AX0&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果一个程序没有上面的这些，那么&nbsp;rom&nbsp;中也是可以跑的，比如点led的小汇编。&nbsp;jLpgWt`8)E&nbsp;&nbsp;<br />n/,rn&gt;k7:&nbsp;&nbsp;<br />Q：&nbsp;uclinux中，与具体的cpu相关的代码都分布在哪几个目录中？&nbsp;*=r@vQ&nbsp;&nbsp;<br />A：&nbsp;以&nbsp;Samsung&nbsp;4510B&nbsp;为例，以下目录的相关文件比较重要。&nbsp;_CYmG&quot;mY&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uClinux-Samsung\linux-2.4.x\arch\armnommu\mach-samsung\*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;芯片级&nbsp;il&nbsp;8A&amp;`%&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uClinux-Samsung\vendors\Samsung\4510B\makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何生成&nbsp;image,&nbsp;romfs&nbsp;7l4InR]&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uClinux-Samsung\linux-2.4.x\drivers\char\serial_samsung.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;串口驱动&nbsp;W_Ws3L1;N&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uClinux-Samsung\linux-2.4.x\include\asm-armnommu\arch-samsung&nbsp;&nbsp;头文件定义&nbsp;NG4eEnic!a&nbsp;&nbsp;<br />N69eI&nbsp;dl&nbsp;&nbsp;<br />Q：&nbsp;编译之后在&nbsp;images&nbsp;目录下生成的那些文件都是什么意思？&nbsp;N23+1h&nbsp;&nbsp;<br />A：&nbsp;对于一些可能出现的文件，这里做一个解释：&nbsp;.jrR4@&nbsp;&nbsp;<br />romfs.img:&nbsp;&nbsp;这个文件是通过&nbsp;tools/romfs-inst.sh&nbsp;脚本，生成&nbsp;romfs&nbsp;目录及其&nbsp;jQw`*Y/,&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面的文件，然后通过&nbsp;genromfs&nbsp;程序打包成一个文件&nbsp;romfs.img&nbsp;6O[wVaC1u&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;romfs.img&nbsp;既可以放在&nbsp;flash&nbsp;中，也可以放在&nbsp;ram&nbsp;中，但需要在&nbsp;LgD&nbsp;{!&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编译内核时在&nbsp;driver/block/blkmem.c&nbsp;里指定地址，以便内核找到。&nbsp;Lb&nbsp;mB([p&nbsp;&nbsp;<br />linux.text:&nbsp;编译后的内核中&nbsp;text&nbsp;段，一般放在&nbsp;flash&nbsp;中，只读。&nbsp;?AM&nbsp;8*w&nbsp;&nbsp;<br />linux.data:&nbsp;编译后的内核中&nbsp;data，init&nbsp;段，一般放在&nbsp;sdram&nbsp;中，读写。&nbsp;&nbsp;el*pYI&nbsp;&nbsp;<br />image.bin:&nbsp;&nbsp;上面三个文件顺序连接而生成的&nbsp;=&nbsp;linux.text&nbsp;+&nbsp;linux.data&nbsp;+&nbsp;romfs.img&nbsp;y:|Xg0Kp&nbsp;&nbsp;<br />;Kd{h&nbsp;&nbsp;<br />有的时候还会得到：&nbsp;.]sIoB-54&nbsp;&nbsp;<br />image.rom:&nbsp;R4rm&gt;zisVX&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;通常&nbsp;image.rom&nbsp;的文件大小要比&nbsp;image.ram&nbsp;小很多，这是因为&nbsp;image.rom&nbsp;是&nbsp;4\eX=~C&gt;:&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;一个压缩过的内核，前面加上一个小的解压程序负责把内核解压后搬到指定位置。&nbsp;+qW&nbsp;w-8&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;这个文件可以直接烧进&nbsp;flash&nbsp;中，当然也可以在&nbsp;ram&nbsp;中运行。这个文件实际上&nbsp;QmkC~kK1.&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;就是通常&nbsp;linux&nbsp;生成的&nbsp;zImage&nbsp;文件。&nbsp;*e&quot;GQd?&nbsp;&nbsp;<br />I~5fz4Q&nbsp;&nbsp;<br />image.ram:&nbsp;&nbsp;/KvPiQ%&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;这个内核没有压缩过，而且必须在&nbsp;ram&nbsp;里运行。所以需要通过板子上的&nbsp;bootloader&nbsp;`zOAltfd&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;将它下载到指定位置后开始执行。相对&nbsp;image.rom&nbsp;而言，从&nbsp;ram&nbsp;里启动内核，则&nbsp;C.e|VzQa&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;代码段和数据段都在&nbsp;ram&nbsp;里面。这个文件是编译生成的&nbsp;elf&nbsp;格式的linux内核，通过&nbsp;@&nbsp;&nbsp;un&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;arm-elf-objcopy&nbsp;工具生成的二进制映像文件。&nbsp;0N[DV]&nbsp;&nbsp;<br />可以这样形象的说：&nbsp;image.rom&nbsp;=&nbsp;gunzip&nbsp;program&nbsp;+&nbsp;gzipped(image.ram)&nbsp;Jz3&lt;yQ-&nbsp;&nbsp;<br />3&nbsp;!w&gt;&quot;h0(&nbsp;&nbsp;<br />boot.rom:&nbsp;&nbsp;eHyuO)(xH1&nbsp;&nbsp;<br />&nbsp;&nbsp;其实就是&nbsp;uClinux&nbsp;编译完成后的文件&nbsp;images/romfs.img，&nbsp;&gt;W]&quot;a3E&nbsp;&nbsp;<br />&nbsp;&nbsp;可以看一下&nbsp;makefile&nbsp;，它不过是一个链接文件。&nbsp;&amp;EJ,k'7$&nbsp;&nbsp;<br />dv}R]f'&nbsp;&nbsp;<br />Q：&nbsp;在&nbsp;make&nbsp;menuconfig&nbsp;时读取的配置文件是什么？&nbsp;LmdV@gR&nbsp;&nbsp;<br />A：&nbsp;make&nbsp;menuconfig&nbsp;是用的的配置文件主要有以下几个：&nbsp;%c2i.E/G&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;vi&nbsp;config.in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nv]/L&nbsp;+i&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;主要是处理&nbsp;top&nbsp;level&nbsp;config&nbsp;，包括&nbsp;vendor/product，&nbsp;linux-2.4.x&nbsp;版本选择，&nbsp;~{$'sp0&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Libc&nbsp;version，还有是否选择配置&nbsp;Kernel&nbsp;Settings，Vendor/User&nbsp;Settings&nbsp;等。&nbsp;HZ4&nbsp;^T7G&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;这个&nbsp;config.in&nbsp;文件是通过执行&nbsp;config/mkconfig&nbsp;&gt;&nbsp;config.in&nbsp;脚本自动生成的。&nbsp;mBkQ&nbsp;8e&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;（&nbsp;因此修改&nbsp;config.in&nbsp;不起作用哟！&nbsp;）&nbsp;&gt;mSl~.I2&nbsp;&nbsp;<br />P&gt;Rqy&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;vi&nbsp;arch/armnommu/config.in&nbsp;rGL{g&amp;_&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;主要是处理和&nbsp;kernel&nbsp;settings&nbsp;相关的配置，比如&nbsp;选择&nbsp;cpu&nbsp;类型，选择设备驱动，&nbsp;b&gt;._&nbsp;r&amp;.&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;文件系统支持，网络支持&nbsp;等等。这些也是裁减内核最重要的配置文件。&nbsp;&amp;c&nbsp;~)z\$&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;可以修改&nbsp;arch/armnommu/config.in&nbsp;来调整&nbsp;make&nbsp;menuconfig&nbsp;时的选项设置。&nbsp;6{WT;W&gt;WT:&nbsp;&nbsp;<br />~ZN9&nbsp;E-uL&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;vi&nbsp;config/config.in&nbsp;&lt;L#r6y~H&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;主要是处理&nbsp;Vendor/User&nbsp;Settings&nbsp;相关的部分，也就是&nbsp;romfs&nbsp;中添加的应用程序，&nbsp;M_I\:Q&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;可以修改&nbsp;config/config.in&nbsp;来改变相关的选项设置。&nbsp;!Ve3:OZ.nO&nbsp;&nbsp;<br />'2oBi6|X&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;vi&nbsp;vendors/Samsung/4510B/config.linux-2.4.x&nbsp;/omVM&nbsp;u&nbsp;&nbsp;<br />&gt;@iV!!&nbsp;&nbsp;<br />Q：&nbsp;kernel&nbsp;链接时用的&nbsp;vmlinux.lds&nbsp;是怎么得到的？&nbsp;I&nbsp;]1fH&nbsp;&nbsp;<br />A：&nbsp;vi&nbsp;linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in&nbsp;这个是原始文件，&nbsp;Vd~k4&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;vi&nbsp;arch/armnommu/Makefile&nbsp;在这里定义了如何通过&nbsp;sed&nbsp;命令生成&nbsp;lds。&nbsp;c&nbsp;?S402M}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;其实就是把&nbsp;Makefile&nbsp;里面定义的&nbsp;TEXTADDR&nbsp;替换到&nbsp;lds.in&nbsp;文件里。&nbsp;GjBQxn&nbsp;&nbsp;&nbsp;<br />eD0@n&nbsp;:&nbsp;&nbsp;<br />Q：&nbsp;kernel&nbsp;链接时的起始地址&nbsp;TEXTADDR&nbsp;在哪里指定？&nbsp;Kfl+8UR5=&nbsp;&nbsp;<br />A：&nbsp;vi&nbsp;arch/armnommu/Makefile&nbsp;在相应的&nbsp;ARCH&nbsp;下找，&nbsp;f^&nbsp;qQ&nbsp;5N&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;一般缺省的是&nbsp;0xC0008000&nbsp;。但不同的芯片会有不同的定义，例如&nbsp;$4pW#4/4&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;148&nbsp;ifeq&nbsp;($(CONFIG_ARCH_ATMEL),y)&nbsp;B%/Pn&nbsp;2&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;149&nbsp;TEXTADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x1000000&nbsp;Z(P#]jI]&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;150&nbsp;MACHINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;atmel&nbsp;LtBH4&nbsp;A&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;151&nbsp;endif&nbsp;/^&quot;TMm&nbsp;&nbsp;&nbsp;<br />=k&nbsp;z;CS+&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;166&nbsp;ifeq&nbsp;($(CONFIG_ARCH_<a title="SAMSUNG货源和PDF资料" href="http://www.ic37.info/SAMSUNG_ic.htm" target="_blank">SAMSUNG</a>),y)&nbsp;F&nbsp;)G#\r&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;167&nbsp;TEXTADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x00008000&nbsp;=zKp(_[D&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;168&nbsp;MACHINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;samsung&nbsp;yY+2;`CH&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;169&nbsp;endif<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.ic37.info/QM50HJ-H_ic.htm"><strong>QM50HJ-H</strong></a>&nbsp;<a href="http://www.ic37.info/QM150DX-H_ic.htm"><strong>QM150DX-H</strong></a>&nbsp;<a href="http://www.ic37.info/QMV989BS5_ic.htm"><strong>QMV989BS5</strong></a>&nbsp;<a href="http://www.ic37.info/PVC110-16_ic.htm"><strong>PVC110-16</strong></a>&nbsp;<a href="http://www.ic37.info/HV508_ic.htm"><strong>HV508</strong></a>&nbsp;<a href="http://www.ic37.info/BGD502_ic.htm"><strong>BGD502</strong></a>&nbsp;<a href="http://www.ic37.info/SN74ALS232BN_ic.htm"><strong>SN74ALS232BN</strong></a>&nbsp;<a href="http://www.ic37.info/IDT72V263L7-5PF_ic.htm"><strong>IDT72V263L7-5PF</strong></a>&nbsp;<a href="http://www.ic37.info/LB1245_ic.htm"><strong>LB1245</strong></a> </td>
        </tr>
    </tbody>
</table>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183440.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 11:19:02 CST </pubDate>
</item>

<item>
<title>基于单片机的室内甲醛测试系统</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183434.html</link>
<description>
<![CDATA[<table cellspacing="1" cellpadding="5" width="100%" border="0">
    <tbody>
        <tr>
            <td>基于单片机的室内甲醛测试系统<br /><br />&nbsp;&nbsp;甲醛是一种具有刺激性气味的无色气体，也是一种潜在的致癌物质，对人体健康有较大的危害。单片机具有通用性强、体积小、价格低、稳定可靠等优点，在智能产品、测控系统等领域得到了广泛的应用，本文设计的测试仪可在现场直接显示甲醛浓度值。当其浓度值小于国家规定的标准值（可按键修改）时绿灯亮，可以入住，当超过规定的室内居住标准值时红灯亮，开始报警提醒人们暂时不要入住。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;硬件设计<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基于单片机的室内甲醛测试仪由单片机系统、显示电路、功能键盘、甲醛传感器、测量电路及3位半双积分ADC和报警输出电路构成，系统结构如图1所示。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;测量电路<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;测量电路由CH20/S-10甲醛传感器，I/U（电流/电压）转换器<a title="RCV420货源和PDF资料" href="http://www.iceach.com/RCV420-iceach.htm" target="_blank">RCV420</a>和5G14433ADC等组成。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;甲醛传感器由甲醛探头和CH20传感器组成。当空气被内部的采样系统吸收后，产生一个与甲醛浓度成正比的电流，该电流经过甲醛模块的信号调理，经I/U转换器<a title="RCV420货源和PDF资料" href="http://www.iceach.com/RCV420-iceach.htm" target="_blank">RCV420</a>转换成0-5V的电压，该电压经过5G14433，与8051单片机相连，在显示器上显示出甲醛的浓度值，当超过国家规定的标准时报警。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="RCV420货源和PDF资料" href="http://www.iceach.com/RCV420-iceach.htm" target="_blank">RCV420</a>精密I/U转换器能将4mA-20mA的环路电流转换成0-5V的电压输出，作为一种单片集成电路具有可靠的性能和很低的成本，除具有精密运放和电阻网络外，还集成有10V基准电压源。在不需要外部调整的情况下，可以获得86dB的共模抑制比和40V的共模电压输入。在全量程范围内输入抗组仅有1.5V的压降，对于环路电流具有很好的转换能力。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5G14433<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5G14433是国产的双积分3位半ADC，它具有抗干扰性能好、转换精度高（相当于11位二进制数）、自动较零、自动极性输出、自动量程控制信号输出、动态字位扫描BCD码输出、单基准电压、外接元件少，以及价格低廉等特点，但其转换速度慢，约1次/秒-10次/秒，适用于不要求高速转换的场合。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;功能键盘<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;键盘设置为3&times;3阵列键盘，有功能选择键、报警确认键、回车（数值确认）键、数值键等。LCD显示单元<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD显示单元选用OCM4&times;16字符点阵液晶显示模块，主要由LCD显示器、控制器、驱动器和偏压产生电路组成，用于显示当前被测温度值、电流输出值、温度报警设定值、P设定值、TI设定值，TD设定值、偏差量和报警状态等信息。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;软件设计<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;软件采用模块化设计。全部软件由主程序、键盘处理子程序、数据采集子程序、报警程序组成。主程序是控制和管理的核心。系统上电后进行初始化和中断处理操作，初始化主要完成对报警值的设定和初次检查，同时断开各电器的电源。初始化完成后，系统开始正常运转。进行甲醛浓度检测和报警等操作，主程序流程如图2所示。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了提高测量精度，本文采用中值滤波法，就是对参数连续采样N次（一般N为奇数），然后把N次采样值按递增或递减顺序排列，再取中间值作为本次采样值。中值滤波对于去掉偶然因素引起的波动或采样不稳定产生的误差比较有效，在N次采样中只要有一次是正确的，即可提高精度。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;结语<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文对利用单片机实现室内甲醛浓度测量进行了描述和分析，所实现的甲醛浓度测量系统具有比较全面的功能。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.iceach.com/TEA0676T-iceach.htm"><strong>TEA0676T</strong></a>&nbsp;<a href="http://www.iceach.com/LMC6572AIM-iceach.htm"><strong>LMC6572AIM</strong></a>&nbsp;<a href="http://www.iceach.com/CAT24WC08J-iceach.htm"><strong>CAT24WC08J</strong></a>&nbsp;<a href="http://www.iceach.com/LS245-iceach.htm"><strong>LS245</strong></a>&nbsp;<a href="http://www.iceach.com/CX74016-11P-iceach.htm"><strong>CX74016-11P</strong></a>&nbsp;<a href="http://www.iceach.com/AD623ARZ-iceach.htm"><strong>AD623ARZ</strong></a>&nbsp;<a href="http://www.iceach.com/MAX328EWE-iceach.htm"><strong>MAX328EWE</strong></a>&nbsp;<a href="http://www.iceach.com/MAX136CPL-iceach.htm"><strong>MAX136CPL</strong></a>&nbsp;<a href="http://www.iceach.com/MJD122-iceach.htm"><strong>MJD122</strong></a> </td>
        </tr>
    </tbody>
</table>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2183434.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 11:17:40 CST </pubDate>
</item>

<item>
<title>基于编码速率600bps的高质量声码器算法的专用处理器设计</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2182932.html</link>
<description>
<![CDATA[基于编码速率600bps的高质量声码器算法的专用处理器设计<br /><br />An&nbsp;application&nbsp;specific&nbsp;processor&nbsp;for&nbsp;low&nbsp;bit&nbsp;rate&nbsp;speech&nbsp;coding<br />Abstract:&nbsp;The&nbsp;application&nbsp;specific&nbsp;processor&nbsp;based&nbsp;on&nbsp;the&nbsp;algorithm&nbsp;of&nbsp;600bps&nbsp;vocoder&nbsp;is&nbsp;presented&nbsp;in&nbsp;this&nbsp;paper.&nbsp;The&nbsp;speech&nbsp;coding&nbsp;algorithm,&nbsp;the&nbsp;hardware&nbsp;architecture&nbsp;,&nbsp;the&nbsp;compiler&nbsp;&nbsp;and&nbsp;algorithm&nbsp;migration&nbsp;are&nbsp;introduced.&nbsp;Through&nbsp;HW/SW&nbsp;cooperation,&nbsp;memory&nbsp;cost&nbsp;and&nbsp;computation&nbsp;complexity&nbsp;are&nbsp;greatly&nbsp;reduced&nbsp;and&nbsp;verify&nbsp;the&nbsp;vocoder&nbsp;in&nbsp;circuit.<br />Keywords:&nbsp;vocoder,&nbsp;application&nbsp;specific&nbsp;processor,HW/SW&nbsp;cooperation<br />摘要：本文给出一种基于编码速率600bps的高质量声码器算法的专用处理器设计。介绍了语音编解码算法原理，专用处理器的体系结构，汇编器的开发和算法的移植。采用软硬件协同设计的方法，大大降低了算法的存储复杂度和运算复杂度，并在电路中验证了声码器地正确性。<br />关键词：声码器；专用处理器；软硬件协同设计<br /><br />1&nbsp;引言<br />语音传输是目前最主要也是最普遍的通信传输服务。低速率的语音传输能够降低价格、维持品质、并提供保密的功能。由于有限的带宽和使用者的增加，新的语音编码速率已由8Kbps(CELP)[1]&nbsp;、4.8Kbps(CS-ACELP)[2]和2.4Kbps(MELP)[3]降至1.2Kbps以下。由于编码速率的降低，语音的品质就只能由更复杂的算法来提升，这使得即时实现语音编码相当困难。<br />本文针对我们实验室自己研究的SELP语音编解码算法，提出一种新的语音编解码专用处理器TR600芯片，针对SELP算法复杂度高、运算量大、码本极大的特点，使用软件和硬件协同设计的方式使处理器的体系结构和指令集最优。处理器体系结构采用最大并行性设计原则，使用三级流水线结构来平衡处理速度和芯片面积，同时拥有五个数据处理用的体系存储器，三层通用寄存器，32/16位精确的定点运算单元；提供具有高度并行处理能力的指令系统。比较传统的基于DSP的语音处理平台[4]，具有明显优势。<br />2&nbsp;&nbsp;0.6kb/s&nbsp;SELP声码器算法<br />SELP(Sine&nbsp;Excitation&nbsp;Linear&nbsp;Prediction)声码器算法[5]，在线性预测正弦激励模型的基础上，引入了多帧参数联合矢量量化方法，进一步压缩帧间冗余，使语音谱包络信息和余量信号得到较好表示，在600b/s的极低速率下，获得了很好的重建语音质量，可懂度达到90%以上。<br />算法的编解码结构框图分别如图1和图2所示。输入8kHz采样率的语音信号首先经过预处理去除工频干扰并进行预加重。然后进行线性预测分析，对每帧语音提取预测系数、基音周期和余量信号短时能量等参数。将语音信号分成5个子带，对每一子带进行子带清浊(BPVC)判定。语音信号的谱包络用线性预测系数对应的线谱对LSP参数进行编码传输。解码器端采用多带混合正弦激励，分别通过由清浊音信息调制的带通滤波器合成激励信号，而后进行合成滤波和后滤波产生合成语音。SELP声码器语音帧长为20ms，采样率为8kHz时每帧160个语音样点,&nbsp;若声码器在0.6&nbsp;kb/s速率运行则平均每帧只有12bit来量化编码参数，而需要传输的语音参数为：线谱频率（LSF）参数，子带清浊判决参数、基音参数和能量参数。因此采用多帧联合量化编码技术，将相邻的6个语音帧联合起来形成一个超帧，总共有72个比特对超级帧参数进行联合矢量量化。0.6&nbsp;kb/s声码器量化比特分配如表1所示。<br />500)this.style.width=500;&quot;&nbsp;border=0&gt;<br />500)this.style.width=500;&quot;&nbsp;border=0&gt;<br />因为线谱对（LSP）系数的良好的量化特性，在此0.6&nbsp;kb/s声码器算法中，将预测系数转化成线谱对系数，然后进行量化。为了高效的量化LSP参数，此0.6&nbsp;kb/s声码器算法采用P-RS-MSMQ（基于模式的余量分裂多级矩阵量化）算法来量化6帧联合的LSP参数。模式信息来自于带通浊音度参数量化结果，用在LSP参数的矢量量化算法上，提高量化性能。LSP参数量化分四个步骤：均值去除、模式预测、分裂LSP残差矩阵和对LSP残差子矩阵进行多级矩阵量化。<br />用于模式预测的系数矢量是基于超帧模式的转移，由前一超帧和当前超帧确定。预测的残差矢量就是余量LSP参数矢量。将当前超级帧各子帧的无偏LSP预测残差矢量组成一个6&times;10的矩阵，由于维数太大，若直接进行矢量量化，码本存储量和搜索计算量都将非常大，为此先将它分裂成两个6&times;5的子矩阵，然后分别进行三级矩阵量化，两个子矩阵各级量化比特数分别为8，8，8和8，7，7。<br />3&nbsp;&nbsp;TR600芯片体系结构<br />TR600声码器芯片由一个PCM接口（含数据缓冲区）、一个RS232接口（含数据缓冲区）和TR600语音编解码专用处理器核组成。当对语音信号进行编码时，数据送入处理器进行语音分析和参数量化，将编码结果经由RS232端输出到信道上。当对语音信号进行解码时，处理过程与编码过程正好相反，RS232端将信道上的数据接收后送处理器进行参数重建和语音合成，将解码的语音信号，由PCM端输出。<br />TR600语音编解码专用处理器核是一个32位定点运算处理器，兼容16位定点处理。处理器电路设计中，针对SELP算法中存在大量矢量运算的特点在乘法器中设置了相应的乘累加单元。针对算法中存在大量函数调用的特点，在寄存器堆中设计了多层重叠寄存器窗口，以保护程序调用发生时的现场信息。针对算法中存在大量循环的特点设计了支持嵌套循环的程序控制器。<br />&nbsp;为了在20MHz低主频下完成运算量和数据量极大的SELP算法，TR600处理器的设计考虑了最大的并行性。在空间并行方面，运算器中设置了两个ALU单元、两个乘法（含乘累加）单元和38个通用寄存器以满足并行计算；7块存储器的存储器体系、多路数据通路的结构以并行供数的要求。在时间并行方面，设计了三级流水线结构：取指，译码，执行；使每条指令单周期内即可完成。<br />&nbsp;针对SELP算法和处理器结构的特点设计了可变长指令字结构的指令系统[6]，指令字长度分为16位、32位、48位、64位、128位、192位，256位等7种规格，每种规格又提供多种指令格式，既提供了算法中所用到的基本操作，又满足了程序并行性的需要。同时处理器中执行部件的每个微操作的控制信号线都是可见的，编程人员可以直接用微操作组成自己需要的微指令，用组成的微指令编程；使得编程具有很大的灵活性，可以编出硬件资源利用率极高的程序。<br />处理器体系结构如图3所示。<br />500)this.style.width=500;&quot;&nbsp;border=0&gt;<br />运算部件：由两个ALU单元、两个多功能乘法单元、一个除法/位运算混合单元和一个比较置数单元等5个功能单元构成，各功能单元都接有运算结果寄存器；5个功能单元可以并行工作，以实现并行计算；ALU单元可以单周期内完成78种复杂度不等的算术逻辑运算，乘法单元可以在单周期内完成包括16位乘累加等复杂运算在内的9种32位/16位定点乘法运算。<br />&nbsp;寄存器堆：由38个32bit的通用寄存器组成，分为3层，采用寄存器窗口方式实现函数调用；寄存器堆有两个读端口和两个写端口，可同时对4个寄存器进行操作（两读两写）；每个寄存器又可以当作两个16bit的寄存器来使用。<br />&nbsp;存储器：由5块单端口SRAM和3块FLASH组成；5块2K&times;16bit的SRAM用于存放中间计算结果和临时数据；3块16K&times;16bit的FLASH用于存放程序和码本。<br />&nbsp;数据寄存器：共7个，由7块存储体的端口寄存器组成，用以暂存从存储器中取出的数据。<br />&nbsp;存储器控制部件：由3个地址生成部件、6个地址寄存器、7个存取部件（完成LOAD和STORE功能）和两条存数数据通路组成；可同时实现改写3个地址寄存器，读7块存储体，写任意两块SRAM；数据并行度极高。<br />&nbsp;程序控制部件：由一个比较跳转单元（包含无条件跳转）、两个循环控制单元（包括两个循环寄存器）和一个程序调用单元构成；可以实现程序的分支结构、循环结构（包括循环嵌套），以及函数的调用和寄存器堆换层等功能。程序计数器和状态寄存器也在该部件中。<br />&nbsp;数据总线：由6条独立的32位数据通路组成，可同时传输6路32位数据；每条数据通路亦可分为两条16位数据线，用以传输16位数据。此6条数据通路主要用于运算部件的各个源操作数的来源选通，部分线路也可用于各功能部件之间的数据通信。<br />&nbsp;内部数据通路：用以实现运算部件、通用寄存器堆、数据寄存器组、存储器控制部件、程序控制部件之间的数据通信。<br />&nbsp;指令Catch：由一块4K&times;64bit的SRAM组成，当程序运行时，为了加速程序的执行速度，用以暂存FLASH中的SELP语音编解码程序。该SRAM的访问周期只有处理器主时钟周期（50ns）的四分之一，因此在一个主时钟周期内可以分4次从中读出一条256bit的指令。<br />&nbsp;指令寄存器：一个256bit宽的寄存器，用以寄存指令Catch中的指令。<br />&nbsp;译码器：对指令进行译码，产生对各执行部件的微操作控制信号以及各执行部件运行时所需的立即数；内含译码结果寄存器，用以暂存译码结果。<br />&nbsp;多种操作数寻址方式：隐含寻址、立即寻址、直接寻址、寄存器寻址、寄存器间接寻址。<br />&nbsp;优化的指令系统：由简单的指令和较复杂的指令组成，简单指令便可以构成指令系统的完备集。复杂的指令可以充分发挥硬件资源的并行性，使指令系统满足有效性条件。所有指令字长度都是16比特的整数倍，因而具有规整性的特点。另外由于指令译码器易于扩展，即使芯片升级换代也能提供向下兼容的新指令系统，因而该指令系统具有亦满足兼容性的条件。总之该指令系统具有一个完善的指令系统应满足的所有条件（完备、有效、规整、兼容）。<br />4&nbsp;汇编器开发和算法移植<br />针对TR600专用处理器，汇编器的开发是整个软件开发平台中最重要的一部分，它提高了编程和软硬件联合调试的效率。为了缩短开发周期，在电路设计的同时，利用计算机编写和调试SELP编解码程序，使得编解码程序的开发和专用处理器的硬件设计工作得以同步进行。在编译汇编程序时，该汇编器依次进行词法分析、语法分析、并分配专用处理器的各种硬件资源，最终产生专用处理器的机器码。<br />针对专用处理器的指令和硬件结构，对原来的编解码程序移植到TR600专用芯片上：<br />1.&nbsp;对于暂时作数据存储之用的临时变量使用寄存器代替，从而可以节省存取临时变量的时间；<br />2.&nbsp;尽量采用专用指令，并适当展开关键循环，充分利用专用处理器的资源提高速度；<br />3.&nbsp;编写循环的汇编时，充分考虑流水线，让取数，计算，存数并行起来；<br />4.&nbsp;采用软件优化的方法，避免了复杂度较高的除法器电路；<br />5.&nbsp;利用条件执行指令代替条件跳转指令；<br />5&nbsp;&nbsp;电路验证和算法验证<br />在电路设计地时候，首先验证了专用处理器内每个独立模块地正确性，然后采用了软硬件联调地方式，先编写多种测试程序，经编译后产生目标代码，在Verilog模拟器上进行模拟，并对结果进行分析，确认了电路设计地正确性。最后采用测试码流对编解码程序和电路进行协同仿真。<br />测试了一个300k的语音样本，将模拟所得的输出结果和C程序的输出结果进行比较，两者结果完全相同。<br />6&nbsp;&nbsp;结论<br />从算法优化着手，采用软硬件协同设计的思路，依次设计了专用处理器的基本硬件资源、指令系统、体系结构和RTL级电路；同时在指令系统的基础上开发了汇编器等软件工具，成功地在该专用芯片上实现了SELP语音压缩算法，并从电路、实时性等多方面验证了声码器地正确性。<br />本文作者创新点：本文设计并实现了一种全新的基于SELP语音压缩算法的专用处理器，与现有的通用DSP相比，专用处理器处理能力更强，编程更灵活，为声码器平台的集成提供了很好的支持。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.ic37.info/DG9233DY_ic.htm"><strong>DG9233DY</strong></a>&nbsp;<a href="http://www.ic37.info/MC33164D-5_ic.htm"><strong>MC33164D-5</strong></a>&nbsp;<a href="http://www.ic37.info/74V1T08STR_ic.htm"><strong>74V1T08STR</strong></a>&nbsp;<a href="http://www.ic37.info/FZT758TA_ic.htm"><strong>FZT758TA</strong></a>&nbsp;<a href="http://www.ic37.info/MUX16E_ic.htm"><strong>MUX16E</strong></a>&nbsp;<a href="http://www.ic37.info/IRU1205CLTR_ic.htm"><strong>IRU1205CLTR</strong></a>&nbsp;<a href="http://www.ic37.info/CMA8815A_ic.htm"><strong>CMA8815A</strong></a>&nbsp;]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2182932.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 09:29:21 CST </pubDate>
</item>

<item>
<title>测量开关电源闭环反馈响应</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2182928.html</link>
<description>
<![CDATA[测量开关电源闭环反馈响应<br /><br />开关电源依靠反馈控制环路来保证在不同的负载情况下得到所需的电压和电流。反馈控制环路的设计影响到许多因素，包括电压调整、稳定性和瞬态响应。<br />&nbsp;&nbsp;&nbsp;&nbsp;当某个反馈控制环路在某个频率的环路增益为单位增益或更高且总的相位延迟等于360&nbsp;时，反馈控制环路将会产生振荡。稳定性通常用下面两个参数来衡量：<br />&nbsp;&nbsp;&nbsp;&nbsp;相位裕量:当环路增益为单位增益时实际相位延迟与360&nbsp;间的差值，以度为单位表示。<br />&nbsp;&nbsp;&nbsp;&nbsp;增益裕量:当总相位延迟为360&nbsp;时，增益低于单位增益的量，以分贝为单位表示。<br />&nbsp;&nbsp;&nbsp;&nbsp;对多数闭环反馈控制系统，当环路增益大于0dB时，相位裕量都大于45&nbsp;（小于315&nbsp;）。当环路相位延迟达到360&nbsp;时，增益裕量为-20dB或更低。<br />&nbsp;&nbsp;&nbsp;&nbsp;如果这些条件得到满足，控制环将具有接近最优的响应；它将是无条件稳定的，即不会阻尼过小也不会阻尼过大。通过测量在远远超出控制环通常操作带宽的情况下控制环的频率响应，可以保证能够反映出所有可能的情况。<br />&nbsp;&nbsp;&nbsp;&nbsp;一个单输出开关电源的控制环增益和相位响应曲线。测量是利用一个GP102增益相位分析仪（一种独立的用来评价控制环增益和相位裕量的仪器）进行的，然后输入到电子表软件中。<br />&nbsp;&nbsp;&nbsp;&nbsp;在这一例子中，从0dB增益交点到360&nbsp;测量得到的相位裕量为82&nbsp;（360&nbsp;到278&nbsp;）。从0dB增益交点到相位达到360&nbsp;的增益裕量为-35dB。把这些增益和相位裕量值与-20dB增益裕量和60&nbsp;相位裕量的目标值相比较，可以肯定被测试电源的瞬态响应和调节是过阻尼的，也是不可接受的。<br />&nbsp;&nbsp;&nbsp;&nbsp;0dB交点对应的频率为160Hz，这导致控制环的响应太慢。理想情况下，在1或2KHz处保持正的环增益是比较合适的，考虑到非常保守的增益和相位裕量，不必接近不稳定区即可改善控制环的动态特性。当然需要对误差放大器补偿器件进行一些小的改动。进行修改后，可以对控制环重新进行测试以保证其无条件稳定性。<br />&nbsp;&nbsp;&nbsp;&nbsp;通常可利用频率响应分析仪（FRA）或增益-相位分析仪进行这种测量。这些仪器采用了离散傅里叶变换（DFT）技术，因为被测信号经常很小且被掩盖在噪声和电源开关台阶所产生的失真中。DFT用来从中提取出感兴趣的信号。<br />测试信号注入<br />&nbsp;&nbsp;&nbsp;&nbsp;为进行测量，FRA向控制环中注入一个已知频率的误差信号扰动。利用两个FRA通道来判断扰动要多长时间才能从误差放大器输入到达电源输出。<br />&nbsp;&nbsp;&nbsp;&nbsp;扰动信号应该在控制环反馈信号被限制在单条路径的地方注入，并且来自低阻抗的驱动源。连接到电源输出或误差放大器输出的反馈路径是注入扰动信号的好地方。<br />&nbsp;&nbsp;&nbsp;&nbsp;通过信号发生器通过一个隔离变压器连接到测试电路，以保证FRA信号发生器和被测试电路间的电气隔离。注入方法将扰动信号注入到误差放大器的输入。对于电源输出电压在FRA最大输入电压限制以内的情况，这一方法是合适的。<br />&nbsp;&nbsp;&nbsp;&nbsp;如果被测量电源的输出电压比FRA最大输入电压还要高，那么第一种注入方法就不适用了。扰动信号被注入到误差放大器的输出，此处的控制环对地电压比较低。如果电源电压超过FRA输入范围则应采用这种注入方法。<br />&nbsp;&nbsp;&nbsp;&nbsp;选定合适的注入点以后，还必须仔细地设定扰动信号的幅度。扰动的响应可通过连接到电源输出的示波器看到。<br />&nbsp;&nbsp;&nbsp;&nbsp;开始时，FRA信号发生器幅度应该设为零和低频率，通常在控制环带宽的低端。然后慢慢提高FRA信号发生器的幅度。FRA信号发生器幅度的一个比较好的起始点是能够在示波器上看到电源输出电压波动为额定输出电压的5%左右。<br />&nbsp;&nbsp;&nbsp;&nbsp;必须在控制环带宽的高端重复这一过程以确保是否可在整个控制环带宽上使用同样的驱动水平。FRA发生器不能欠驱动或过驱动控制环。在此种条件下进行的任何测量都是不准确的。<br />&nbsp;&nbsp;&nbsp;&nbsp;不大可能在整个控制环带宽范围内使用同一组FRA信号发生器设置。这种情况下，可以利用幅度补偿来保证频率切换和环增益变化时扰动信号稳定。这可以通过控制FRA信号发生器幅度，从而保证恒定的误差放大器输入来达到。<br />进行测量<br />&nbsp;&nbsp;&nbsp;&nbsp;FRA的两个输入分别连接到注入隔离变压器的次级的两端。CH2测量控制环输出，CH1测量控制环输入。测量是相对于地进行的。<br />&nbsp;&nbsp;&nbsp;&nbsp;从10Hz扫描到30KHz，观察增益和相位测量重复性，以保证注入控制环的扰动信号幅度是正确的。参考增益-相位图表核对控制环增益和相位裕量。<br />&nbsp;&nbsp;&nbsp;&nbsp;可在误差放大器一级加入适当的补偿器件。再次进行从低频到高频的扫描可以看到补偿值变化的效果。理想情况下，环增益每频程应该下降-20dB，特别是在控制环增益经过单位增益时。<br />功率因数校正电路<br />&nbsp;&nbsp;&nbsp;&nbsp;反馈控制环并不仅限于用于开关电源的输出调节。通常用在整流桥后的动态功率因数校正（PFC）电路中采用两个控制环来达到正弦输入电流，从而使负载功率因素接近1.0。PFC电路通常基于专用的控制器IC、一个开关器件和一个能量储存电感器，即所谓的DC连接。<br />&nbsp;&nbsp;&nbsp;&nbsp;第一个控制环即电压控制环，试图在DC连接或PFC电路输出维持一个稳定的直流电压。这一控制环响应相对比较慢，大约在10Hz左右跨越0dB。第二个控制环即电流控制环有效地控制输入电流的波形。这一脉宽调制（PWM）斩波器电路必须跟踪整流正弦电压波形，因此，电流控制环的参考点是动态的。由于电流控制环必须跟踪交流电源频率，因此其交叉点可能达数KHz。<br />测试电压控制环<br />&nbsp;&nbsp;&nbsp;&nbsp;测试较慢的电压控制环和快速的电流控制环需要不同的方法：<br />&nbsp;&nbsp;&nbsp;&nbsp;PFC&nbsp;电压控制环<br />&nbsp;&nbsp;&nbsp;&nbsp;电压控制环的测试是比较直接的。不需要对电路进行改动。实际上，在对电压环测试时，电流控制环仍在工作。注入点选择的一般规则在这儿都适用。您可在环中找一个源为低阻抗且信号限制在单条路径的点来注入扰动信号。注入采用的电阻值大约1,000&nbsp;。<br />&nbsp;&nbsp;&nbsp;&nbsp;PFC电流控制环<br />&nbsp;&nbsp;&nbsp;&nbsp;测试较快的电流控制环需要更多考虑和注意，因为需要对电路进行一些变动才能获得对增益和相位裕量的真实评估。<br />&nbsp;&nbsp;&nbsp;&nbsp;1．&nbsp;利用一个0&nbsp;至&nbsp;400-V&nbsp;直流电源为PFC电路的输入供电。不需要交流电源，并且应该断开。<br />&nbsp;&nbsp;&nbsp;&nbsp;2．&nbsp;禁止电压控制环工作，但并非整块IC。<br />&nbsp;&nbsp;&nbsp;&nbsp;3．&nbsp;如果需要，为PFC控制器IC提供一个辅助电源，典型为+18V。<br />&nbsp;&nbsp;&nbsp;&nbsp;4．&nbsp;利用一个0至10-V直流电源根据输入电压的相应水平来控制PFC输出电流。实际上，0至10V直流电源将控制控制器内的控制增益并代替电压参考（对50或60Hz交流电频率通常每秒变化100至120次）。电流反馈环应当跟踪输入电源，因此利用0至10V直流电流来设定不同的条件。<br />&nbsp;&nbsp;&nbsp;&nbsp;5．&nbsp;在PFC的输出适加一个可变负载。<br />&nbsp;&nbsp;&nbsp;&nbsp;6．&nbsp;采用一个100-&nbsp;注入电阻连接在电流传感电阻和PFC传感输入之间。<br />&nbsp;&nbsp;&nbsp;&nbsp;7．&nbsp;从50Hz扫描到约开关频率的一半。检查在第4点和第5点中所描述的不同设置组合情况下的环响应。例如，应该对控制环在零电流、峰值电流和中间状态下进行测试。<br />&nbsp;&nbsp;&nbsp;&nbsp;在PFC区的测量是危险的。应该确保隔离地和频率-响应分析仪输入通道以及信号发生器，以及后两者。<br />　<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.ic37.info/HIP6601BECB_ic.htm"><strong>HIP6601BECB</strong></a>&nbsp;<a href="http://www.ic37.info/AT45DB041B-SI_ic.htm"><strong>AT45DB041B-SI</strong></a>&nbsp;<a href="http://www.ic37.info/LT1307BCMS8_ic.htm"><strong>LT1307BCMS8</strong></a>&nbsp;<a href="http://www.ic37.info/74VHC245MTCX_ic.htm"><strong>74VHC245MTCX</strong></a>&nbsp;<a href="http://www.ic37.info/HD74LS273P_ic.htm"><strong>HD74LS273P</strong></a>&nbsp;<a href="http://www.ic37.info/MC10H601FN_ic.htm"><strong>MC10H601FN</strong></a>&nbsp;<a href="http://www.ic37.info/MT9075BP_ic.htm"><strong>MT9075BP</strong></a>&nbsp;<a href="http://www.ic37.info/MAX742CWP_ic.htm"><strong>MAX742CWP</strong></a>&nbsp;<a href="http://www.ic37.info/LTC1727EMS8-2.5_ic.htm"><strong>LTC1727EMS8-2.5</strong></a>&nbsp;<a href="http://www.ic37.info/LTC1650CS_ic.htm"><strong>LTC1650CS</strong></a>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2182928.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 09:28:48 CST </pubDate>
</item>

<item>
<title>二维DCT编码的DSP实现与优化</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2182924.html</link>
<description>
<![CDATA[二维DCT编码的DSP实现与优化<br /><br />现今的图像编码标准，一般采用纹理编码方式对图像进行压缩。这种方式极大的利用了图像数据的空间相关性，使图像数据的压缩能够达到很高的比率。它主要是利用数学变换的方法，使用极少量的离散信号来表示大量的时域连续信号[1]。常用的数学变换有很多种，比如离散傅立叶变换DFT、沃尔什变换、哈尔变换、斜变换、离散余弦变换DCT、离散正弦变换DST&nbsp;、K-L变换等。其中，K-L变换为理想状态下的最佳变换方法，但是，由于K-L变换没有快速的变换算法，而DCT、DFT和DST都具有与K-L变换近似的良好性质，尤其是当一阶马尔可夫过程相邻元素相关系数&rho;逼近1时，DCT的近似性能远远优于其它两者，并且DCT变换有具体的快速算法。因此，图像压缩标准中，使用DCT变换来实现纹理编码。&nbsp;<br />　　由于DCT变换在各种编码标准中要被反复调用，因此，其代码执行效率对实时视频压缩起着至关重要的作用[2]。实际应用中，如何实现DCT变换的编码及如何用硬件电路实现这种编码变换是使用者关心的问题[3]。本文将利用DSP实现图像的二维DCT变换并对其实行优化。<br />　　2　DCT&nbsp;变换<br />　　1974年Ahmed和Rao首先给出二维DCT&nbsp;变换的数学表达式。该表达式适用于N点的DCT定义，但是，由于MPEG编码一般是把视频图像帧或图片分为场、片、宏块的结构，一帧图像一般包括1－2场，每场包括若干片，每片包括若干宏块，为了方便处理，把每个宏快分成8&times;8的子块，即DCT处理的基本单元是8&times;8的子块。因此，直接定义实用8点二维DCT变换：<br />　　其反变换为：<br />　　其中&nbsp;，i,j,u,v=0,1&hellip;7.<br />　　在（1）式中，把变换核分离可得两次一维DCT变换：<br /><br />　　因此，可以使用2次一维DCT变换来实现二维DCT变换。<br />　　在该定义被提出以后，很多优秀的算法也被提了出来。如Chen,Lee的快速DCT算法等，Loeffler&nbsp;在1989年提出的实用快速DCT算法共使用11次乘法和29次加法，该算法比起Chen的算法快而且不会发生Lee算法中的上溢问题，并且该算法被证明已经达到了算法极限，是最优秀的算法[4]。该算法如图1，它把整个DCT过程分成了四级，第一级只有8次加法，第二级分为上下两块，上面是偶块，下面是奇块，偶块有4次加法，奇块有6次乘法和6次加法，第三级上面有5次加法3次乘法，下面有4次加法，第四级仅奇块有2次乘法和2次加法。由图1可见，奇数部分的第四级与第二级的计算构成了连续的乘法，这种运算实现的时间将增加实际的计算时间。故Loeffler&nbsp;提出了无乘法串行的并行计算方法，该方法使用了12次乘法和32次加法，这在具有并行的MAC处理器的运算中，并不增加实际的计算时间[1]。本文即采用这种DCT算法实现图像的压缩与处理。<br />　　3　DSP及其视频指令<br />　　我们使用ADI的ADSP－BF533EZLITE评估板作为实验平台，该评估板使用最大内部时钟600M的BF533处理器。处理器内核包括二个40位的ALU,2个MAC,4个视频ALU&nbsp;及一个桶形移位寄存器。这种结构使并行的视频处理成为可能[5]。实验的软件环境是VisualDSP4.5，该环境集成了高性能C/C++编译器，并且具有比普通C/C++编译器更高效的代码优化功能。<br /><br /><br />&nbsp;<br />　　为了进一步提高代码效率，减少程序运行时间和代码空间，根据DSP硬件结构及其指令的特点，对代码进行汇编优化。本文主要注重以下三方面的优化。<br />　　（1）利用高度并行的算术运算单元和功能强大的地址运算单元的相结合的特点，使用高密度指令代码进行代码优化。<br />　　Blackfin的高度并行结构能在计算的同时进行数据的存储，如R5=R1+R5,R4=R1-R5&nbsp;||R1=W[P0+0x4]（X）;该指令使用两个加法器同时计算出两个32位的值R1＋R5和R1－R5并把该结果分别存入到R5和R4中，此时占用的是算术运算单元的两条内部总线一个指令周期时间，由于外部总线空闲，可以把外部Cache中的数据送入到R1中。索引寻址和变址寻址相结合的模式使一个指令周期内对不同块的SDRAM访问成为了可能，比如上面的指令可以加一条R4=[I2++]仍能正确执行，而且不增加指令执行时间，地址运算单元DAG还包括两个用于嵌套零开销循环的循环计数器以及支持传输过程中饱和的限幅的硬件。这些特性使得Blackfin指令操作的效率很高。<br />　　（2）利用有利于DCT变换的操作数位寻址指令来优化<br />　　Blackfin&nbsp;DSP指令集不仅支持一个周期最多3条指令的并发执行，而且具有大量的像素操作和向量操作指令可以减少算法时间复杂度。位反转指令对FFT、DCT、DFT等数学变换的操作数寻址提供了方便，在变换之前它把输入数组数据通过位变换的方式变换到易于处理的排列方式，减少了操作数寻址的时间。<br />　　（3）利用IEEE&nbsp;1180&nbsp;舍入指令来支持DCT变换<br />　　Blackfin的加法指令支持预比例加减法，这种指令执行的时间首先通过算术移位将两个操作数变大或者变小后再相加减，这在DCT变换中为了保证运算精度，一般会移位后相加减，这条指令大大加快了DCT变换的速度。<br />　　4　DSP实现与优化<br />　　无论是C语言还是汇编语言，程序流程均分为初始化、行变换、列变换和移位输出四个步骤。行、列变换具有相似性，如果对行变换的结果矩阵转置，则列变换程序跟行变换一样。对于汇编而言，初始化部分主要初始化FP指针以指向前一函数地址，初始化数据和指针寄存器以保存返回数据等。由于DCT行变和列变换过程相似，且列变换是在行变换操作的基础上进行的。则可利用多种索引寻址寄存器的灵活组合，把行变换结果直接以转置方式存储而不增加实际的存储时间，这样行列变换可使用同一代码循环两次实现，减小了实际代码大小。图3是一维&nbsp;DCT变换的流程图。<br />　　由于DSP的小数乘法指令是先经过乘法运算后自动调整的，其运算时间比起整数运算要费时。因此，采用先倍乘CONST_SCALE，然后整数运算的方式来节省运算时间。运算的结果需要除以系数CONST_SCALE，这在程序运行时多带来了两次乘法，可以使用左右移位来实现。由于右移位同时会带来移位误差，因此在程序中使用了可选择舍入运算方式。<br />　　为了达到更好的精度，在行变换时倍乘后再相加。这可使用Blackfin带有预加/减比例的加法指令在一个指令周期内实现。<br />　　程序简化行列变换的代码如下：<br />　　B0&nbsp;=&nbsp;R0;<br />　　B3&nbsp;=&nbsp;R1;<br />　　B2&nbsp;=&nbsp;R2;&nbsp;&hellip;<br />　　LSETUP&nbsp;（DCT_START,&nbsp;DCT_END）&nbsp;LC0&nbsp;=&nbsp;P0;<br />　　DCT_START:&hellip;<br />　　LSETUP（ROW_START,ROW_END）LC1=P2;<br />　　ROW_START:&nbsp;&hellip;<br />　　ROW_END:&hellip;<br />　　B1&nbsp;=&nbsp;B0;<br />　　B0&nbsp;=&nbsp;B2;<br />　　DCT_END:B2&nbsp;=&nbsp;B1;<br />　　程序初始时，R0指向输入矩阵，R2指向中间矩阵，内层循环是行变换过程，该过程结束时，中间矩阵存储着行变换结果的转置。通过B0和B2的指针交换，把中间矩阵当作输入进行行变换，这样，把原输入矩阵变成了输出矩阵，并且矩阵中各元素位置不变。<br />　　比较式（1）和（3）发现，二维DCT&nbsp;变换时结果为两次无理数sqrt（8）相乘，产生了有理项，因此，在程序里首先多乘一次sqrt（8），然后在两次DCT&nbsp;变换结束以后，使用右移3位以达到正常输出。<br /><br /><br />&nbsp;<br />　　<br />　　为了评估优化后的效果，在ADSP&mdash;BF533&nbsp;EZLITE平台和VisualDSP4.5环境下，当BF533<br />　　工作在核心频率594MHZ时，对一源图像点阵灰度数据进行DCT处理。该灰度图像为一个8&times;8的数组A[6]，对A进行二维&nbsp;DCT&nbsp;调用，实际运行结果为：C语言代码为392&nbsp;bytes，执行时间为3.806397&nbsp;&mu;s；汇编语言代码为248&nbsp;bytes，执行时间为1.085859&mu;s。显然，与以C语言为主的二维DCT编码相比，用汇编语言实现的二维DCT编码在代码大小、代码执行时间上均得到了很大改善。<br />　　5　结论<br />　　本文创新之处在于能根据<a title="ADSP-BF533货源和PDF资料" href="http://www.iceach.com/ADSP-BF533-iceach.htm" target="_blank">ADSP-BF533</a>的结构和指令特点及视频信号压缩的实时性要求，使用汇编语言对视频信号进行了二维DCT编码及优化。实验证明：在<a title="ADSP-BF533货源和PDF资料" href="http://www.iceach.com/ADSP-BF533-iceach.htm" target="_blank">ADSP-BF533</a>硬件平台和VisualDSP4.5环境下，当&nbsp;CPU运行在594MHZ时，使用汇编语言实现的DCT变换比C语言实现的DCT变换执行时间减小71.4％，代码空间减小近30％。以标准CIF&nbsp;测试序列为例，压缩一张352&times;288的图片能减少4.31ms，可见优化效果显着。<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.iceach.com/DG318ACJ-iceach.htm"><strong>DG318ACJ</strong></a>&nbsp;<a href="http://www.iceach.com/DC005QST-iceach.htm"><strong>DC005QST</strong></a>&nbsp;<a href="http://www.iceach.com/MAX903MJA-iceach.htm"><strong>MAX903MJA</strong></a>&nbsp;<a href="http://www.iceach.com/LT896CS8-iceach.htm"><strong>LT896CS8</strong></a>&nbsp;<a href="http://www.iceach.com/LT1566CS8-iceach.htm"><strong>LT1566CS8</strong></a>&nbsp;<a href="http://www.iceach.com/SAB82556N-iceach.htm"><strong>SAB82556N</strong></a>&nbsp;<a href="http://www.iceach.com/MP7543AD-iceach.htm"><strong>MP7543AD</strong></a>&nbsp;<a href="http://www.iceach.com/MN15312VPL-iceach.htm"><strong>MN15312VPL</strong></a>&nbsp;<a href="http://www.iceach.com/X5328-iceach.htm"><strong>X5328</strong></a>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2182924.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Tue, 07 Oct 2008 09:28:20 CST </pubDate>
</item>

<item>
<title>利用任意信号发生器模拟高速光驱信号须知</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2181626.html</link>
<description>
<![CDATA[<table cellspacing="1" cellpadding="5" width="100%" border="0">
    <tbody>
        <tr>
            <td>利用任意信号发生器模拟高速光驱信号须知<br /><br />&nbsp;&nbsp;&nbsp;为开发下一代高速光驱，工程人员需要有能够模拟高速率信道的测试信号。为了确保元件和硬件系统达到规格要求，这种高速数据信号是必需的，目前通常使用一种叫做任意波形发生器(AWG)的信号源，作为开发高速读/写信道的基本工具。本文主要介绍AWG的基本原理与应用须知。&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从原理上讲，AWG相当于一台正在播放歌曲的CD机(只不过信号是任意组合的)，播放器的探头读取CD上以二进制格式储存的歌曲，数据经过数模转换器，放大后形成声音，连续播放时，数据产生的音乐就可以从模拟喇叭中听到。AWG结构如图1，声波数据以二进制形式驻留在存储器中，二进制数值通过主时钟&ldquo;取样&rdquo;，同时取样时钟还驱动高速移位寄存器和数模转换器。存储器中保存的数据包含波形的振幅和位置信息，取样时钟的速率和取样数据点总数量决定了信号输出的频率。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所有的波形都是由一系列数据点组成，输出信号频率可用时钟取样率除以波形点总数来确定。对于多周期波形，输出频率=取样率&times;周期数/波形总点数。例如对最大取样率为每秒4G采样点的AWG来说，如果一个周期用两个点来表示波形，可以产生2GHz信号，同理，每个周期用三个点可以得到1.3GHz信号，用四个点可以得到1GHz信号，并以此类推。由于波形质量直接与波形点总数和所选取样率有关，因此驱动器开发人员要掌握好它们之间的取舍。好在有些AWG内置有应用菜单，可让用户快速建立标准驱动器信号，从而简化了波形的创建过程。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;泰克的AWG710就是这样一种设备，它依据的原理是几乎所有磁盘驱动器都采用饱和记录来读写数据。在这种情形下，磁盘上每个字节都极化成两种状态中的一种，也就是说，通过简单改变写入头电流的方向就可以将写入头下面的磁介质极性颠倒，从而对数据进行编码。之后，读取头将感应到磁盘上磁通量的逆转，并对这种变化做出相应反应，这种转换响应的有效模型是混合型洛仑兹和高斯脉冲。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过改变洛仑兹和高斯脉冲的比率，可以建立读/写信道信号模型，该模型能对一连串转换做出响应，这些转换代表了读/写头响应每个记录媒介转换时的输出电压，脉冲的符号随连续磁通量的方向变化而变化。图2是洛仑兹/高斯脉冲以50/50比率混合时建立的读/写通道信号，另外AWG710还支持PR4、EPR4、E2PR4和用户自定义脉冲。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了正确模拟通道信号，可在混合信号中加入表示读写数据时序的部分，它规定转换的位置，这种时序可从简单1F或2F单频模式到最大长度为2n-1的伪随机位串(PRBS)或用户自定义数据模式。混合脉冲和这些数据在AWG中连接起来建立读/写信道信号，也可以利用附加参数进行编辑，如磁轨平均振幅(TAA)、脉冲宽度(PW)、非线性转换位移(NLTS)及不对称信号等。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;读/写通道信号建立后，可通过图形编辑器加入振幅和时钟变量。图3显示将读/写信号和一个脉冲连接起来，目的是对信号进行改变，用图形编辑器很容易插入遗失的字节或加入额外字节。图中有两个标记点，其中标记2表示每个数据点的时间，标记1代表整个波形记录中脉冲的衰减情况。标记通常用于触发读写信号，或为信号采集装置如示波器和逻辑分析仪确定触发位置。图4显示了修正后的脉冲幅度。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计人员改变时序可以帮助调试验证后续硬件指标富余量。改变时序的方法与丢弃(或增加)字节很类似，用指针确定相应的区域，对相应波形点进行&ldquo;缩放&rdquo;以得到规定的时间位移。这里的缩放与放大缩小不同，是将每一个目标数据点都乘上或除以一个缩放系数。缩放允许时间位移超过4.0GS/s的250皮秒限制，对AWG710来说，最小时钟波形位移为400飞秒(fs)。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AWG同时还为驱动器开发人员提供了波形实时排序能力。实时排序(RTS)有两个重要作用，第一，它允许将多个波形无缝连接起来，不会影响输出信号；第二，RTS可将较长信号传送给被测器件。这两种功能可使驱动器开发人员安排系列波形以对产品进行长期评估。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RTS的关键是对AWG存储器进行分配，没有RTS的AWG必须存储整个波形。例如要存储三种不同的信号各500个周期，每个信号1,000个点，则需要能存储150万点的RAM(3&times;500&times;1000)。而实时序列发生器可以不间断地自动重复每段波形，所以带RTS的AWG只要存储一个波形周期就可以了，用RTS储存上述序列只需要存储3,000点的RAM。由于AWG存储波形的容量有限，因此实时序列功能就显得很重要。在有些应用中，以4.0GS/s(250皮秒间隔)模拟10毫秒写入需要4,000万点波形存储量。实际的一个序列可能含有几百个波形，波形中还带有由逻辑和软件状态决定的条件跳跃和分支，符合条件的还要调用下一个序列。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AWG为驱动器开发人员提供了多种方法生成模拟波形，包括规定波形和最坏情形波形。第一个方法是用内建的图形编辑器提供的组建和波形操作内部工作环境(如图3和图4)；第二种方法通过公式编辑器创建信号，可提供更复杂的波形。公式编辑器将复杂数学函数汇编到模拟和数字等式中，图5是产生分散频谱时钟的部分公式内容。还有一种很流行的方法是利用数字存储示波器的记录能力将波形记录下来，然后转到AWG内存中，通常这种转移通过GPIB或LAN等外部控制方式来实现，也可以用软盘。当波形转入AWG存储器以后，就好像是用图形编辑器建立的一样，可对它进行编辑和回放。另外也可以从模拟程序如MATLAB或MathCAD中下载ASCII数据。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本文可能所用到的IC型号：&nbsp;<a href="http://www.ic37.info/MJ16006_ic.htm"><strong>MJ16006</strong></a>&nbsp;<a href="http://www.ic37.info/DAN202C_ic.htm"><strong>DAN202C</strong></a>&nbsp;<a href="http://www.ic37.info/1TP2-0001_ic.htm"><strong>1TP2-0001</strong></a>&nbsp;<a href="http://www.ic37.info/MJ10007_ic.htm"><strong>MJ10007</strong></a>&nbsp;<a href="http://www.ic37.info/STW6NB90_ic.htm"><strong>STW6NB90</strong></a>&nbsp;<a href="http://www.ic37.info/S-80733AL-AX-T1_ic.htm"><strong>S-80733AL-AX-T1</strong></a>&nbsp;<a href="http://www.ic37.info/XC61AN1002MR_ic.htm"><strong>XC61AN1002MR</strong></a>&nbsp;<a href="http://www.ic37.info/SN74LVC32ARGYR_ic.htm"><strong>SN74LVC32ARGYR</strong></a>&nbsp;<a href="http://www.ic37.info/S4010LS2_ic.htm"><strong>S4010LS2</strong></a>&nbsp;<a href="http://www.ic37.info/TC4024BF-TP1_ic.htm"><strong>TC4024BF-TP1</strong></a> </td>
        </tr>
    </tbody>
</table>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2181626.html</guid>
<subject></subject>
<author>bokmanic</author>
<category></category>
<pubDate>Mon, 06 Oct 2008 14:59:45 CST </pubDate>
</item>

</channel>
</rss>