AMBE1000.rar
- 小不懂了解作者
- Others开发工具
- 3.3MB文件大小
- rar文件格式
- 0收藏次数
- 1 积分下载积分
- 0下载次数
- 2021-04-24 11:10上传日期
AMBE1000语音编解码芯片的详细介绍。

AMBE1000.rar
- AMBE1000
- 200841611012国产AMBE声码器简介.pdf284.9KB
- 20085895450W681512.pdf359.1KB
- AGERE_CSP1027.pdf600.9KB
- AMBE-1000声码器在语音通信系统中的应用.pdf299.6KB
- AMBE-1000在语音压缩中的应用.pdf169KB
- AMBE-1000手册(中文).pdf1.5MB
- mc14lc5480.pdf420.7KB
内容介绍
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/628c261c16e0ca71415dad98/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/628c261c16e0ca71415dad98/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> AMBE-1000<span class="_ _0"> </span><span class="ff2 ls1 ws1">手册</span><span class="ls2 ws2"> http://www<span class="_ _1"></span>.indusic.com </span></div><div class="t m0 x2 h3 y2 ff3 fs1 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h3 y3 ff3 fs1 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h3 y4 ff3 fs1 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h3 y5 ff3 fs1 fc0 sc1 ls1 ws1"> </div><div class="t m0 x3 h4 y6 ff3 fs2 fc0 sc1 ls3 ws1">AMBE-1000 用户手册 </div><div class="t m0 x2 h5 y7 ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x4 h5 y8 ff3 fs3 fc0 sc1 ls4 ws1">版本<span class="_ _2"> </span>1.0 </div><div class="t m0 x2 h5 y9 ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 ya ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 yb ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 yc ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 yd ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 ye ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 yf ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 y10 ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 y11 ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 y12 ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 y13 ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x2 h5 y14 ff3 fs3 fc0 sc1 ls1 ws1"> </div><div class="t m0 x5 h5 y15 ff3 fs3 fc1 sc2 ls5 ws1">南京梧桐微电子中心 </div><div class="t m0 x6 h5 y16 ff3 fs3 fc1 sc2 ls6 ws1">http://www.indusic.com </div><div class="t m0 x7 h2 y17 ff2 fs0 fc0 sc0 ls1 ws1">第<span class="ff1 ws3"> 1 </span>页<span class="ff1"> <span class="_"> </span></span>共<span class="ff1 ws3"> 33 </span>页<span class="ff1"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/628c261c16e0ca71415dad98/bg2.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> AMBE-1000<span class="_ _0"> </span><span class="ff2 ls1 ws1">手册</span><span class="ls2 ws2"> http://www<span class="_ _1"></span>.indusic.com </span></div><div class="t m0 x8 h6 y18 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h3 y19 ff3 fs1 fc1 sc2 ls7 ws1">1. <span class="_ _3"></span>概述 </div><div class="t m0 x9 h7 y1a ff3 fs5 fc2 sc0 ls8 ws1">根据对语音构成的分析,应运而生了多种对音频信号的压缩编码算法,如CELP、<span class="ls9">RELP、VSELP、</span></div><div class="t m0 x8 h7 y1b ff3 fs5 fc2 sc0 lsa ws1">MP-MLQ、<span class="_ _4"></span>LPC-10、<span class="_ _4"></span>MBE等,<span class="_ _4"></span>它们通过不同的算<span class="lsb">法,<span class="_ _4"></span>实现对音频信号的压缩。<span class="_ _4"></span>这些压缩编码算法的压缩率、</span></div><div class="t m0 x8 h7 y1c ff3 fs5 fc2 sc0 lsc ws1">语音质量各有所长,其中美国DVSI(<span class="lsd">Digital Voice System Inc<span class="lse">)公司提出的先进多带激励AMBE</span></span></div><div class="t m0 x8 h7 y1d ff3 fs5 fc2 sc0 lsf ws1">(Advanced <span class="_ _4"></span>Multi-Band <span class="_ _4"></span>Excitation)压缩编码算法是其中的<span class="ls10">杰出代表。AMBE是基于MBE技术的低比特</span></div><div class="t m0 x8 h7 y1e ff3 fs5 fc2 sc0 ls11 ws1">率、高质量语音压缩算法,具有语音音质好和编码速率低等优点,</div><div class="t m0 xa h6 y1f ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 xb h6 y20 ff3 fs4 fc0 sc0 ls12 ws1">AMBE-1000是一款高性能多速率语音编码/解码芯片,语音编码解码速率可以在2400~9600bps之间以</div><div class="t m0 x8 h6 y21 ff3 fs4 fc0 sc0 ls13 ws1">50bps的间隔变化,即使在2400bps的时候,仍能保持自然的声音质量和语音可懂度。在芯片内部有相互独</div><div class="t m0 x8 h6 y22 ff3 fs4 fc0 sc0 ls14 ws1">立的语音编码单元和解码单元,可同时完成语音的编码和解码任务。并且所有的编码和解码操作都能在芯</div><div class="t m0 x8 h6 y23 ff3 fs4 fc0 sc0 ls14 ws1">片内部完成,不需要额外的存储器。这些特性使它非常适合于数字语音通信、语音存储以及其它需要对语</div><div class="t m0 x8 h6 y24 ff3 fs4 fc0 sc0 ls14 ws1">音进行数字处理的场合。 </div><div class="t m0 x8 h6 y25 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h6 y26 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h3 y27 ff3 fs1 fc1 sc2 ls15 ws1">2. <span class="_ _3"></span>AMBE-1000<span class="_ _5"> </span>应用设计的概述 </div><div class="t m0 x8 h8 y28 ff3 fs6 fc1 sc2 ls16 ws1">2.1 基本操作 </div><div class="t m0 xb h6 y29 ff3 fs4 fc0 sc0 ls17 ws1">AMBE-1000最基本的组成部分就是一个编码器和一个解码器,<span class="_ _6"></span>两者相互独立。<span class="_ _6"></span>编码器接收8KHZ采样的语</div><div class="t m0 x8 h6 y2a ff3 fs4 fc0 sc0 ls1 ws1">音数据流(16bit线性,8bit <span class="_ _6"></span><span class="ls18">A律,8bit <span class="_ _6"></span>u律)并以一定的速率输出信道数据。相反,解码器接收信道数据</span></div><div class="t m0 x8 h6 y2b ff3 fs4 fc0 sc0 ls14 ws1">并合成语音数据流。编码器和解码器接口的时序是完全异步的。 </div><div class="t m0 xb h6 y2c ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 xc h7 y2d ff3 fs5 fc2 sc3 ls1 ws1"> </div><div class="t m0 x8 h6 y2e ff3 fs4 fc0 sc0 ls19 ws1"> </div><div class="t m0 xb h6 y2f ff3 fs4 fc0 sc0 ls1 ws1">AMBE-1000采用A/D-D/A芯片作为语音信号的接口。<span class="_ _6"></span>输入输出的语音数据流的格式必须是相同的<span class="_ _6"></span>(16bit</div><div class="t m0 x8 h6 y30 ff3 fs4 fc0 sc0 ls1a ws1">线性的,8bit A律,8bit u律),信道接口采用8位或16位的微控制器。 </div><div class="t m0 x8 h6 y31 ff3 fs4 fc0 sc0 ls17 ws1"> 芯片可选择的功能包括回声抵消、<span class="_ _7"></span>VAD<span class="_ _1"></span>(语音激活检测)、<span class="_ _1"></span>电源模式、数据/前向纠错速率的选择等,<span class="_ _1"></span>这</div><div class="t m0 x8 h6 y32 ff3 fs4 fc0 sc0 ls17 ws1">些功能由外围管脚或输入到解码器的命令帧来决定。<span class="_ _6"></span> 送往解码器用于控制的数据和语音数据是不同的,<span class="_ _6"></span>这</div><div class="t m0 x8 h6 y33 ff3 fs4 fc0 sc0 ls1b ws1">将在第4章进行详述。 </div><div class="t m0 x8 h6 y34 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h8 y35 ff3 fs6 fc1 sc2 ls16 ws1">2.2 设计需要考虑的事项 </div><div class="t m0 x8 h6 y36 ff3 fs4 fc0 sc0 ls1c ws1"> 。A/D-D/A<span class="_ _8"> </span>芯片的选择 </div><div class="t m0 x8 h6 y37 ff3 fs4 fc0 sc0 ls1d ws1"> 。信道接口的选择 </div><div class="t m0 xb h6 y38 ff3 fs4 fc0 sc0 ls14 ws1">。语音速率和前向纠错速率的选择 </div><div class="t m0 x7 h2 y17 ff2 fs0 fc0 sc0 ls1 ws1">第<span class="ff1 ws3"> 2 </span>页<span class="ff1"> <span class="_"> </span></span>共<span class="ff1 ws3"> 33 </span>页<span class="ff1"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/628c261c16e0ca71415dad98/bg3.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> AMBE-1000<span class="_ _0"> </span><span class="ff2 ls1 ws1">手册</span><span class="ls2 ws2"> http://www<span class="_ _1"></span>.indusic.com </span></div><div class="t m0 x8 h8 y39 ff3 fs6 fc1 sc2 ls16 ws1">2.2.1 A/D-D/A<span class="_ _9"> </span>概述 </div><div class="t m0 x8 h6 y3a ff3 fs4 fc0 sc0 ls1e ws1"> <span class="_ _a"> </span>A/D-D/A<span class="_ _8"> </span>芯片的选择对所设计的系统的声音质量起着关键的作用。<span class="_ _b"></span><span class="ls1">由于<span class="_ _8"> </span>A<span class="_ _8"> </span>律或<span class="_ _8"> </span>u<span class="_ _8"> </span>律压扩芯片在采样时对</span></div><div class="t m0 x8 h6 y3b ff3 fs4 fc0 sc0 ls1 ws1">数据做了压缩以减少位数,<span class="_ _1"></span>为了声音质量的考虑,<span class="_ _c"></span>建议采用<span class="_ _8"> </span>16<span class="_ _8"> </span>位线性的芯片。<span class="_ _c"></span>选择芯片时要特别注意信噪</div><div class="t m0 x8 h6 y3c ff3 fs4 fc0 sc0 ls14 ws1">比以及滤波器的频率响应特性。 </div><div class="t m0 x8 h6 y3d ff3 fs4 fc0 sc0 ls1f ws1"> <span class="_ _a"> </span>A/D-D/A<span class="_ _d"> </span>的硬件接口是很灵活的。<span class="_ _e"></span><span class="ls1">时钟和激励信号可以由外部送入也可以由内部产生。<span class="_ _e"></span><span class="ls20">给可编程<span class="_ _d"> </span>A/D-D/A</span></span></div><div class="t m0 x8 h6 y3e ff3 fs4 fc0 sc0 ls21 ws1">发送控制字需要一个额外的接口。第<span class="_ _8"> </span>5<span class="_ _8"> </span>章将详细介绍<span class="_ _8"> </span>A/D-D/A。 </div><div class="t m0 x8 h6 y3f ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h8 y40 ff3 fs6 fc1 sc2 ls16 ws1">2.2.2 信道接口概述 </div><div class="t m0 x8 h6 y41 ff3 fs4 fc0 sc0 ls14 ws1"> <span class="_ _a"> </span>信道接口使芯片易于集成到设计的系统中。基本的信<span class="_ _f"></span>道接口包括串口和并口,它们都能工作于主动模</div><div class="t m0 x8 h6 y42 ff3 fs4 fc0 sc0 ls14 ws1">式和被动模式,模式选择的控制信号可以由芯片内部给出也可以从外部送入。 </div><div class="t m0 x8 h6 y43 ff3 fs4 fc0 sc0 ls1 ws1"> <span class="_ _a"> </span>常规操作时,<span class="_ _c"></span>每<span class="_ _8"> </span>20ms<span class="_ _8"> </span>编码器输出一帧编码过的数据,<span class="_ _1"></span>解码器需接收到这样的数据。<span class="_ _c"></span>编码器和解码器的</div><div class="t m0 x8 h6 y44 ff3 fs4 fc0 sc0 ls1 ws1">数据需要格式化,<span class="_ _6"></span>格式化的主要目的就是为编码数据流提供对齐信息。<span class="_ _6"></span>数据的格式包括帧格式和非帧格式。</div><div class="t m0 x8 h6 y45 ff3 fs4 fc0 sc0 ls14 ws1">并口模式只工作于帧格式,串口模式既可工作于帧格式也可工作于非帧格式。 </div><div class="t m0 x8 h6 y46 ff3 fs4 fc0 sc0 ls1 ws1"> <span class="_ _a"> </span>帧格式和非帧格式将在第<span class="_ _2"> </span>4<span class="_ _2"> </span>章中详细介绍。两种格式都是为了实现相同的功能:为编码数据流提供定</div><div class="t m0 x8 h6 y47 ff3 fs4 fc0 sc0 ls1 ws1">位信息。<span class="_ _1"></span>工作于帧格式时,<span class="_ _1"></span>每<span class="_ _8"> </span>20ms<span class="_ _8"> </span>由编码器送出一帧数据,<span class="_ _1"></span>该帧数据有固定的结构,<span class="_ _7"></span>其中包含了用于本地</div><div class="t m0 x8 h6 y48 ff3 fs4 fc0 sc0 ls14 ws1">控制的状态标志位。实际上按一定波特率的编码数据才是帧格式中需要在信道间传送的语音数据。 </div><div class="t m0 x8 h6 y49 ff3 fs4 fc0 sc0 ls14 ws1"> <span class="_ _a"> </span>帧格式下,系统需要在传送编码数据的同时传送足够<span class="_ _f"></span>的信息,这些信息用于在解码器端重构语音数据</div><div class="t m0 x8 h6 y4a ff3 fs4 fc0 sc0 ls14 ws1">流。这些信息可以很具体,但至少要满足用于重构的要求。 </div><div class="t m0 x8 h6 y4b ff3 fs4 fc0 sc0 ls14 ws1"> <span class="_ _a"> </span>非帧格式下,编码器的输出数据可以认为是连续的声<span class="_ _f"></span>音数据流,这些编码数据中包含了帧的信息。这</div><div class="t m0 x8 h6 y4c ff3 fs4 fc0 sc0 ls17 ws1">种格式的优点是不会为信道加重带宽的负载。<span class="_ _10"></span>缺点是解码器在合成语音波形前需要接收<span class="_ _8"> </span>10-12<span class="_ _8"> </span>帧的数据才</div><div class="t m0 x8 h6 y4d ff3 fs4 fc0 sc0 ls14 ws1">能达到与数据流同步的目的。同时,非帧格<span class="_ _f"></span>式下,每帧只指定一位用于数据的对齐,在更<span class="_ _f"></span>高误码率的信道</div><div class="t m0 x8 h6 y4e ff3 fs4 fc0 sc0 ls14 ws1">中,需要增加更多的对齐位才能达到更高的性能(用帧格式就能很容易实现)<span class="_ _e"></span>。 </div><div class="t m0 x8 h6 y4f ff3 fs4 fc0 sc0 ls14 ws1"> <span class="_ _a"> </span>当工作于帧格式时,信道数据的接口可以是串行的也<span class="_ _f"></span>可以时并行的。而非帧格式只局限于串行。另外</div><div class="t m0 x8 h6 y50 ff3 fs4 fc0 sc0 ls14 ws1">帧格式使芯片既可以工作于主动模式也可以工作于被动模式,而非帧格式只能工作于被动模式。 </div><div class="t m0 x8 h6 y51 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h8 y52 ff3 fs6 fc1 sc2 ls22 ws1">2.2.3 <span class="_ _7"></span>语音速率和前向纠错(FEC)速率的选择 </div><div class="t m0 xb h6 y53 ff3 fs4 fc0 sc0 ls14 ws1">总的编码数据由两部分组成:语音数据和<span class="_ _f"></span>前向纠错数据。前向纠错数据加到语音数据中<span class="_ _f"></span>使解码器能够</div><div class="t m0 x8 h6 y54 ff3 fs4 fc0 sc0 ls14 ws1">纠正一定量的错误而使数据帧不至于报废。<span class="_ _f"></span>如果信道传输时可能存在较多的错误,那么就<span class="_ _f"></span>应当增加前向纠</div><div class="t m0 x8 h6 y55 ff3 fs4 fc0 sc0 ls14 ws1">错数据的位数。当然声音要达到高质量的话就必须有更多的语音数据位。 </div><div class="t m0 x8 h6 y56 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y17 ff2 fs0 fc0 sc0 ls1 ws1">第<span class="ff1 ws3"> 3 </span>页<span class="ff1"> <span class="_"> </span></span>共<span class="ff1 ws3"> 33 </span>页<span class="ff1"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/628c261c16e0ca71415dad98/bg4.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> AMBE-1000<span class="_ _0"> </span><span class="ff2 ls1 ws1">手册</span><span class="ls2 ws2"> http://www<span class="_ _1"></span>.indusic.com </span></div><div class="t m0 x8 h6 y18 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h3 y19 ff3 fs1 fc1 sc2 ls23 ws1">3. 信道接口 </div><div class="t m0 x8 h6 y57 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h8 y58 ff3 fs6 fc1 sc2 ls24 ws1">3.1 <span class="_ _11"></span>概述 </div><div class="t m0 xd h6 y59 ff3 fs4 fc0 sc0 ls1 ws1">信道接口是个通用术语,<span class="_ _7"></span>用于表示压缩的数据从编码器出来通过一个接口送到解码器,<span class="_ _7"></span>该接口就是信</div><div class="t m0 x8 h6 y5a ff3 fs4 fc0 sc0 ls17 ws1">道接口。<span class="_ _1"></span>信道接口也用于编码器和解码器输出状态信息,<span class="_ _1"></span>比如是否检测到双音多频<span class="_ _7"></span>(DTMF)<span class="_ _e"></span><span class="ls1">,<span class="_ _1"></span>或者解码器是</span></div><div class="t m0 x8 h6 y5b ff3 fs4 fc0 sc0 ls1 ws1">否检测到合成后的静音帧。其实信道接口通常在编解码器两端执行更为复杂的控制操作(比如在启动时)<span class="_ _e"></span>。</div><div class="t m0 x8 h6 y5c ff3 fs4 fc0 sc0 ls25 ws1">这些控制功能包括语音数据和前向纠错速率的选择以及<span class="_ _8"> </span>A/D-D/A<span class="_ _8"> </span>芯片的配置。 </div><div class="t m0 xd h6 y5d ff3 fs4 fc0 sc0 ls1 ws1">需要注意的是,<span class="_ _7"></span>不是所有的来自<span class="_ _8"> </span>AMBE-1000<span class="_ _8"> </span>的数据都要通过信道传送的。<span class="_ _7"></span>比如状态位通常都只在本端</div><div class="t m0 x8 h6 y5e ff3 fs4 fc0 sc0 ls14 ws1">起作用。在大多数的声音传输系统中,实际<span class="_ _f"></span>编码数据位从信道的数据帧中取出,与系统信<span class="_ _f"></span>息一起在传输通</div><div class="t m0 x8 h6 y5f ff3 fs4 fc0 sc0 ls14 ws1">道中传送,在接收端,编码数据位又被取出,由解码器合成语音。 </div><div class="t m0 xd h6 y60 ff3 fs4 fc0 sc0 ls1 ws1">这个部分将首先介绍两种主要的信道接口:并口和串口,<span class="_ _1"></span>以及它们的信号和时序。第四章将介绍数据</div><div class="t m0 x8 h6 y61 ff3 fs4 fc0 sc0 ls14 ws1">帧的格式,包括命令帧等。 </div><div class="t m0 x8 h6 y62 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h6 y63 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h8 y64 ff3 fs6 fc1 sc2 ls16 ws1">3.2 并口/串口的配置 </div><div class="t m0 x8 h3 y65 ff3 fs1 fc0 sc0 ls1 ws1"> <span class="_ _12"> </span><span class="fs4 ls1e">信道接口的硬件接口部分就是串口或者并口,<span class="_ _6"></span>管脚<span class="_ _8"> </span>CH_SEL[2-0]的配置将决定使用哪种接口。<span class="_ _6"></span>见表<span class="_ _8"> </span>3-</span></div><div class="t m0 x8 h6 y66 ff3 fs4 fc0 sc0 ls26 ws1">A。 </div><div class="t m0 x8 h6 y67 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 xe h6 y68 ff3 fs4 fc0 sc0 ls14 ws1">接口选择管脚 <span class="_ _13"> </span> </div><div class="t m0 xf h6 y69 ff3 fs4 fc0 sc0 ls19 ws1">CH_SEL2 </div><div class="t m0 xf h6 y6a ff3 fs4 fc0 sc0 ls13 ws1">(98<span class="_ _8"> </span>脚) </div><div class="t m0 x10 h6 y69 ff3 fs4 fc0 sc0 ls19 ws1">CH_SEL1 </div><div class="t m0 x10 h6 y6a ff3 fs4 fc0 sc0 ls27 ws1">(99<span class="_ _8"> </span>脚) </div><div class="t m0 x11 h6 y69 ff3 fs4 fc0 sc0 ls19 ws1">CH_SEL0 </div><div class="t m0 x11 h6 y6a ff3 fs4 fc0 sc0 ls1 ws1">(2<span class="_ _8"> </span>脚)<span class="_ _6"></span> </div><div class="t m0 x5 h6 y69 ff3 fs4 fc0 sc0 ls14 ws1">端口模式<span class="_ _14"> </span>数据格式</div><div class="t m0 x12 h6 y6b ff3 fs4 fc0 sc0 ls19 ws1">CHP_WRN</div><div class="t m0 x12 h6 y6c ff3 fs4 fc0 sc0 ls19 ws1">CHP_RDN</div><div class="t m0 x13 h6 y6b ff3 fs4 fc0 sc0 ls1 ws1">CHS_I_CLK <span class="_ _15"> </span>CHS_O_CLK <span class="_ _15"> </span><span class="ls28">语音数据</span></div><div class="t m0 x14 h6 y6d ff3 fs4 fc0 sc0 ls14 ws1">字的位数</div><div class="t m0 x15 h6 y6e ff3 fs4 fc0 sc0 ls29 ws1">0 <span class="_ _16"> </span>0 <span class="_ _17"> </span>0 <span class="_ _18"> </span>并行被动<span class="_ _19"> </span>帧格式 <span class="_ _1a"> </span>In <span class="_ _1b"> </span>N/A <span class="_ _1c"> </span>N/A <span class="_ _1d"> </span>N/A </div><div class="t m0 x15 h6 y6f ff3 fs4 fc0 sc0 ls2a ws1">0 <span class="_ _16"> </span>0 <span class="_ _17"> </span>1 <span class="_ _18"> </span>并行主动<span class="_ _19"> </span>帧格式 <span class="_ _1e"> </span>Out <span class="_ _1f"> </span>N/A <span class="_ _1c"> </span>N/A <span class="_ _1d"> </span>N/A </div><div class="t m0 x15 h6 y70 ff3 fs4 fc0 sc0 ls29 ws1">0 <span class="_ _16"> </span>1 <span class="_ _17"> </span>0 <span class="_ _18"> </span>串行主动<span class="_ _19"> </span>帧格式 <span class="_ _1e"> </span>N/A <span class="_ _1b"> </span>In <span class="_ _20"> </span>Out <span class="_ _1d"> </span>N/A </div><div class="t m0 x15 h6 y71 ff3 fs4 fc0 sc0 ls29 ws1">0 <span class="_ _16"> </span>1 <span class="_ _17"> </span>1 <span class="_ _18"> </span>串行被动<span class="_ _19"> </span>帧格式 <span class="_ _1e"> </span>N/A <span class="_ _1b"> </span>In <span class="_ _21"> </span>In <span class="_ _22"> </span>N/A </div><div class="t m0 x15 h6 y72 ff3 fs4 fc0 sc0 ls2b ws1">1 <span class="_ _16"> </span>0 <span class="_ _17"> </span>0 <span class="_ _18"> </span>串行被动<span class="_ _14"> </span>非帧格式<span class="_ _1e"> </span>N/A <span class="_ _1b"> </span>In <span class="_ _21"> </span>In <span class="_ _16"> </span>1 </div><div class="t m0 x15 h6 y73 ff3 fs4 fc0 sc0 ls2b ws1">1 <span class="_ _16"> </span>0 <span class="_ _17"> </span>1 <span class="_ _18"> </span>串行被动<span class="_ _14"> </span>非帧格式<span class="_ _1e"> </span>N/A <span class="_ _1b"> </span>In <span class="_ _21"> </span>In <span class="_ _16"> </span>2 </div><div class="t m0 x15 h6 y74 ff3 fs4 fc0 sc0 ls2b ws1">1 <span class="_ _16"> </span>1 <span class="_ _17"> </span>0 <span class="_ _18"> </span>串行被动<span class="_ _14"> </span>非帧格式<span class="_ _1e"> </span>N/A <span class="_ _1b"> </span>In <span class="_ _21"> </span>In <span class="_ _16"> </span>3 </div><div class="t m0 x15 h6 y75 ff3 fs4 fc0 sc0 ls2b ws1">1 <span class="_ _16"> </span>1 <span class="_ _17"> </span>1 <span class="_ _18"> </span>串行被动<span class="_ _14"> </span>非帧格式<span class="_ _1e"> </span>N/A <span class="_ _1b"> </span>In <span class="_ _21"> </span>In <span class="_ _16"> </span>4 </div><div class="t m0 x8 h6 y76 ff3 fs4 fc0 sc0 ls2c ws1"> 表<span class="_ _23"></span><span class="ls2d">3-A 并口、串口工作配置 </span></div><div class="t m0 x8 h6 y77 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h6 y78 ff3 fs4 fc0 sc0 ls1 ws1"> <span class="_ _a"> </span>选择并口的话,那么信道数据传输时将有<span class="_ _2"> </span>8<span class="_ _2"> </span>位宽。并口包括主动和被动两种工作模式。主动和被动是</div><div class="t m0 x8 h6 y79 ff3 fs4 fc0 sc0 ls1 ws1">指激励信号是由本芯片给出,<span class="_ _4"></span>还是由外部模块送入。<span class="_ _24"></span>并口模式只存在于帧格式下。<span class="_ _4"></span>3.3<span class="_ _8"> </span>节将有并口的详细介</div><div class="t m0 x8 h6 y7a ff3 fs4 fc0 sc0 ls17 ws1">绍。<span class="_ _1"></span>选择串口的话,<span class="_ _1"></span>每次读写信号将输入、<span class="_ _7"></span>输出<span class="_ _8"> </span>16<span class="_ _8"> </span>位的数据字。<span class="_ _1"></span>串口可以存在于帧格式下也可以存在于非</div><div class="t m0 x8 h6 y7b ff3 fs4 fc0 sc0 ls1f ws1">帧格式下。<span class="_ _6"></span>串口帧格式可以配置时钟信号为输入信号或者输出信号<span class="_ _24"></span>(见表<span class="_ _9"> </span>3-A)<span class="_ _e"></span><span class="ls1">。<span class="_ _24"></span>非帧格式下,<span class="_ _6"></span>串口仍然每</span></div><div class="t m0 x8 h6 y7c ff3 fs4 fc0 sc0 ls2e ws1">次传输<span class="_ _8"> </span>16<span class="_ _8"> </span>位的数据字,但是每字中只包含<span class="_ _8"> </span>1-4<span class="_ _8"> </span>位声音数据。3.4<span class="_ _8"> </span>节将详细介绍串口。 </div><div class="t m0 x8 h6 y7d ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y17 ff2 fs0 fc0 sc0 ls1 ws1">第<span class="ff1 ws3"> 4 </span>页<span class="ff1"> <span class="_"> </span></span>共<span class="ff1 ws3"> 33 </span>页<span class="ff1"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/628c261c16e0ca71415dad98/bg5.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> AMBE-1000<span class="_ _0"> </span><span class="ff2 ls1 ws1">手册</span><span class="ls2 ws2"> http://www<span class="_ _1"></span>.indusic.com </span></div><div class="t m0 x8 h6 y18 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h8 y7e ff3 fs6 fc1 sc2 ls16 ws1">3.3<span class="_ _9"> </span>并口模式<span class="fs4 sc0 ls1"> </span></div><div class="t m0 xb h6 y7f ff3 fs4 fc0 sc0 ls1 ws1">表<span class="_ _8"> </span>3-B<span class="_ _8"> </span>的信号构成了并口的信道接口。<span class="_ _25"></span>要记住并口只存在于帧格式下。<span class="_ _25"></span><span class="ls2f">每<span class="_ _8"> </span>20ms,<span class="_ _26"></span><span class="ls1">帧格式包含<span class="_ _8"> </span>272<span class="_ _8"> </span>位<span class="_ _25"></span><span class="ls14">(34</span></span></span></div><div class="t m0 x8 h6 y80 ff3 fs4 fc0 sc0 ls1 ws1">字节)的编码器输出数据,并送到解码器。<span class="fc3 ls30">也就是说每<span class="_ _5"> </span>20ms<span class="_ _27"> </span>并口将分别执行<span class="_ _27"> </span>34<span class="_ _27"> </span>次读写操作<span class="_ _f"></span></span>。并口与任何</div><div class="t m0 x8 h6 y81 ff3 fs4 fc0 sc0 ls14 ws1">时钟都是异步的。 </div><div class="t m0 xb h6 y82 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x16 h8 y83 ff3 fs6 fc0 sc1 ls16 ws1">管脚符号 <span class="_ _14"> </span>方向 <span class="_ _28"> </span>管脚号 <span class="_ _29"> </span>描述 </div><div class="t m0 x17 h6 y84 ff3 fs4 fc0 sc0 ls31 ws1">EPR <span class="_ _2a"> </span>OUT <span class="_ _2b"> </span>46 <span class="_ _1e"> </span>编码器包准备好:<span class="_ _6"></span>每<span class="_ _8"> </span>20ms,<span class="_ _6"></span>该输出信号变高一次,<span class="_ _6"></span>用于指示编</div><div class="t m0 x18 h6 y85 ff3 fs4 fc0 sc0 ls17 ws1">码器将有一帧数据输出。<span class="_ _7"></span>在第一次读操作后<span class="_ _7"></span>(CHP_RDN),该信</div><div class="t m0 x18 h6 y86 ff3 fs4 fc0 sc0 ls14 ws1">号变低。 </div><div class="t m0 x17 h6 y87 ff3 fs4 fc0 sc0 ls31 ws1">DPE <span class="_ _2a"> </span>OUT <span class="_ _2b"> </span>47 <span class="_ _1e"> </span>解码器包空:<span class="_ _6"></span>每<span class="_ _8"> </span>20ms,<span class="_ _6"></span>该输出信号变高一次,<span class="_ _6"></span>用于指示解码器</div><div class="t m0 x18 h6 y88 ff3 fs4 fc0 sc0 ls32 ws1">已准备好接收下一帧数据。<span class="_ _7"></span>在第一次写操作后(CHP_WRN)<span class="_ _1"></span>,该</div><div class="t m0 x18 h6 y89 ff3 fs4 fc0 sc0 ls14 ws1">信号变低。 </div><div class="t m0 x19 h6 y8a ff3 fs4 fc0 sc0 ls19 ws1">CHP_RDN <span class="_ _2c"> </span>IN/OUT <span class="_ _2d"> </span>64 <span class="_ _1e"> </span>读<span class="_ _d"> </span>选<span class="_ _2e"></span><span class="ls33">通:在主动模式,该信号为输出,其上升沿表示从</span></div><div class="t m0 x18 h6 y8b ff3 fs4 fc0 sc0 ls34 ws1">AMBE-1000<span class="_ _2"> </span>输出的数据应被锁存;在被动模式,该信号由外部</div><div class="t m0 x18 h6 y8c ff3 fs4 fc0 sc0 ls1 ws1">输入,在下降沿将数据锁存到总线上。<span class="_ _e"></span><span class="fc3 ls1e">(负脉冲,从<span class="_ _2f"> </span>AMBE-100</span></div><div class="t m0 x18 h6 y8d ff3 fs4 fc3 sc0 ls14 ws1">读数据)<span class="fc0 ls1"> </span></div><div class="t m0 x19 h6 y8e ff3 fs4 fc0 sc0 ls35 ws1">CHP_WRN <span class="_ _2c"> </span>IN/OUT <span class="_ _2d"> </span>65 <span class="_ _1e"> </span>写选通:在主动模式,<span class="_ _1"></span>该信号为输出,其下降沿表示外部硬件</div><div class="t m0 x18 h6 y8f ff3 fs4 fc0 sc0 ls1 ws1">应将数据值送到总线上;<span class="_ _7"></span>在被动模式,<span class="_ _7"></span>该信号由外部输入。在</div><div class="t m0 x18 h6 y90 ff3 fs4 fc0 sc0 ls1 ws1">两种模式下,<span class="_ _30"></span>AMBE-1000<span class="_ _8"> </span>都在信号的上升沿锁存数据。<span class="_ _31"></span><span class="fc3">(负脉冲,</span></div><div class="t m0 x18 h6 y91 ff3 fs4 fc3 sc0 ls2b ws1">往<span class="_ _8"> </span>AMBE-1000<span class="_ _8"> </span>写数据)<span class="fc0 ls1"> </span></div><div class="t m0 x19 h6 y92 ff3 fs4 fc0 sc0 ls36 ws1">CHP_OBE <span class="_ _18"> </span>OUT <span class="_ _2b"> </span>61 <span class="_ _1e"> </span>输出缓冲区空:在每一次读操作<span class="_ _1"></span>(CHP_RDN)后,<span class="_ _7"></span>该信号变高;</div><div class="t m0 x18 h6 y93 ff3 fs4 fc0 sc0 ls1 ws1">一旦端口有数据准备被读,<span class="_ _25"></span>该信号变低。<span class="_ _25"></span>如果<span class="fc3">读操作<span class="_ _26"></span><span class="ls37">(CHP_RDN)</span></span></div><div class="t m0 x18 h6 y94 ff3 fs4 fc3 sc0 ls1e ws1">间隔有至少<span class="_ _8"> </span>350<span class="_ _8"> </span>个时钟<span class="_ _4"></span>(CLK_I)<span class="_ _4"></span>周期<span class="fc0 ls20">,那么可以忽略<span class="_ _8"> </span>CHP_OBE。</span></div><div class="t m0 x19 h6 y95 ff3 fs4 fc0 sc0 ls36 ws1">CHP_IBF <span class="_ _18"> </span>OUT <span class="_ _2b"> </span>63 <span class="_ _1e"> </span>输入缓冲区满:在每一次写操作<span class="_ _1"></span>(CHP_WRN)后,<span class="_ _7"></span>该信号变高;</div><div class="t m0 x18 h6 y96 ff3 fs4 fc0 sc0 ls38 ws1">当端口准备好被写时,该信号变低。如果<span class="fc3 ls39">写操作(<span class="_ _f"></span>CH<span class="_ _7"></span>P_W<span class="_ _1"></span>RN)</span></div><div class="t m0 x18 h6 y97 ff3 fs4 fc3 sc0 ls1 ws1">间隔有至少<span class="_ _8"> </span>350<span class="_ _8"> </span>个时钟<span class="_ _32"></span><span class="ls3a">(CLK_I)<span class="_ _3"></span><span class="ls1">周期<span class="fc0">,<span class="_ _32"></span><span class="ls32">那么可以忽略<span class="_ _8"> </span>CHP_IBF。</span></span></span></span></div><div class="t m0 x1a h6 y98 ff3 fs4 fc0 sc0 ls31 ws1">CHP_SEL1 <span class="_ _18"> </span>IN <span class="_ _33"> </span>68 <span class="_ _1e"> </span>并口选择<span class="_ _27"> </span>1:在被动模式,通过<span class="_ _27"> </span>10K<span class="_ _9"> </span>电阻接地;在主动模式,</div><div class="t m0 x18 h6 y99 ff3 fs4 fc0 sc0 ls14 ws1">该管脚为输出,可以不管。 </div><div class="t m0 x1a h6 y74 ff3 fs4 fc0 sc0 ls19 ws1">CHP_SEL2 <span class="_ _18"> </span>IN <span class="_ _33"> </span>69 <span class="_ _1e"> </span>并<span class="_ _f"></span>口<span class="_ _11"></span>选<span class="_ _f"></span>择<span class="_ _15"> </span>2<span class="_ _f"></span>:<span class="_ _11"></span>在<span class="_ _f"></span>被<span class="_ _f"></span>动<span class="_ _f"></span>模<span class="_ _11"></span>式<span class="_ _f"></span>,<span class="_ _f"></span>该<span class="_ _11"></span>管<span class="_ _f"></span>脚<span class="_ _f"></span>为<span class="_ _f"></span>并<span class="_ _11"></span>口<span class="_ _f"></span>使<span class="_ _f"></span>能<span class="_ _f"></span>,<span class="_ _11"></span>低<span class="_ _f"></span>有<span class="_ _f"></span>效<span class="_ _11"></span>。当</div><div class="t m0 x18 h6 y9a ff3 fs4 fc0 sc0 ls34 ws1">CHP_SEL2<span class="_ _8"> </span>为高时,<span class="_ _6"></span>AMBE-1000<span class="_ _8"> </span>忽<span class="ls3b">略<span class="_ _8"> </span>CHP_WRN<span class="_ _8"> </span>和<span class="_ _8"> </span>CHP_RDN<span class="_ _8"> </span>管脚的</span></div><div class="t m0 x18 h6 y9b ff3 fs4 fc0 sc0 ls1 ws1">活动。正常情况下,<span class="_ _1"></span>通过<span class="_ _8"> </span>10K<span class="_ _8"> </span>电阻接地。在主动模式下,<span class="_ _7"></span>该管</div><div class="t m0 x18 h6 y9c ff3 fs4 fc0 sc0 ls14 ws1">脚为输出,可以不管。 </div><div class="t m0 x1b h6 y9d ff3 fs4 fc0 sc0 ls27 ws1">CHP_D7 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>52 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>7 </div><div class="t m0 x1b h6 y9e ff3 fs4 fc0 sc0 ls27 ws1">CHP_D6 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>53 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>6 </div><div class="t m0 x1b h6 y9f ff3 fs4 fc0 sc0 ls27 ws1">CHP_D5 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>54 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>5 </div><div class="t m0 x1b h6 ya0 ff3 fs4 fc0 sc0 ls27 ws1">CHP_D4 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>55 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>4 </div><div class="t m0 x1b h6 ya1 ff3 fs4 fc0 sc0 ls27 ws1">CHP_D3 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>57 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>3 </div><div class="t m0 x1b h6 ya2 ff3 fs4 fc0 sc0 ls27 ws1">CHP_D2 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>58 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>2 </div><div class="t m0 x1b h6 ya3 ff3 fs4 fc0 sc0 ls27 ws1">CHP_D1 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>59 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>1 </div><div class="t m0 x1b h6 ya4 ff3 fs4 fc0 sc0 ls27 ws1">CHP_D0 <span class="_ _34"> </span>I/O <span class="_ _2b"> </span>60 <span class="_ _1e"> </span>数据总线<span class="_ _8"> </span>0 </div><div class="t m0 x8 h6 ya5 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h6 ya6 ff3 fs4 fc0 sc0 ls2c ws1"> 表<span class="_ _23"></span>3<span class="_ _35"></span>-<span class="_ _35"></span>B<span class="_ _36"></span> <span class="_ _35"></span><span class="ls14">并口管脚说明 </span></div><div class="t m0 x8 h6 ya7 ff3 fs4 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y17 ff2 fs0 fc0 sc0 ls1 ws1">第<span class="ff1 ws3"> 5 </span>页<span class="ff1"> <span class="_"> </span></span>共<span class="ff1 ws3"> 33 </span>页<span class="ff1"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
评论

相关推荐
- AAMBBEzipM.rar使用AMBE制作语音双工收发的程序源码,可可附加NRF2401制作效果更佳 可直接使用。
- Research-on-MELP.rar主要介绍了一种新的低比特率MELP(Mixed Excitation Linear Prediction)混合激励线性预测语音编码技术,其中着重分析了该编码算法所采用的几项关键技术.给出了采用MELP压缩编码算法后的输出比特流在各个参数上的比特...
- 数字无线对讲机实验采用AMBE语音压缩编解码模块、无线发送接收模块和控制传输的C8051F020单片机和外围硬件电路构成。实验将完成语音信号的实时采集、编码、解码及压缩编码、解码、无线发送接收的小型系统,体现无线射频调制、解调及...
- USB-COM(HL340).rarusb转串口,找了很久才找到,现在别的地方很难下到,要不用不了,我这个可以用 HL340D 的
- NAND FLASH的读写程序.rarNand flash 读写程序 C语言代码,可以给U盘开发者参考 可以读写三星各种型号的Nand flash芯片
- USB_2.0.rarUSB2.0开发例程,基于51单片机,包括pc端程序
- 串口温度数据采集并实时显示.rar串口温度数据采集并实时显示 读串口数据的原理是,只要当有数据向串口发数据来时,计算机就会自动将其数据写到一个特定的缓冲区,我们只要写程序去读那个特定的缓冲区就可以了. 有数据向串口发过来时,程序可以将数据接收到,接收的数据是字符型的,那么将数据转化为数字型的,再将这个数据的大小作为画图的某一个点的纵坐标,横坐标为数据的序号.将这些点用线连起来就是一个曲线图了,这个就是图形显示基本原理. 查看原来的数据的原理也是这样的,不同的地方就是,数据是从文件中来,同样的也是将多个数据分成一个一个的,然后这一个数据的大小就是画图的某一个点的纵坐标,横坐标同样为数据的序号,再将这些点用线连起来就是曲线图. 图形能移动的原理,是我们首先改变的只是数据,图形并没有变,但图形的形式是由这些数据来确定的,当数据发生变化后,我们通过刷新显示区来变化的.
- gps.rarGPS应用程序设计,内含GPS卫星原理、方法及详细源代码
- MSCOMM32.OCX.rar串口编程控件MSCOMM32.OCX mscomm32.ocx是微软提供的串口通讯开发控件。支持串口通讯的软件大部分都是使用这个控件来实现串口通讯功能的。 安装方法:请您把它复制到系统目录下,对于windows9x系列(win95、win98、winme)是x:\windows\system\,对于 windowsNT、windows2000、windowsXP系列是x:\winnt\system32\。然后打开一个命令行提示符窗口(MSDOS方式窗口), 用"cd x:\windows\system\"命令或者"cd x:\winnt\system32\"切换到系统目录下,再执行"regsvr32 mscomm32.ocx"这个命令。
- VSer.rar虚拟串口的完整源代码,包括注释和开发日志。据说市值5万人民币!