<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/rss.xsl" type="text/xsl" media="screen"?>
<!--åå®¢åå«æ¥å¿ï¼æ¯äºèç½ä¸ä¸ç§ä¸ªäººä¹¦ååäººéäº¤æµçå·¥å·ãéè¿åå®¢è®°å½ä¸å·¥ä½ãå­¦ä¹ ãçæ´»åå¨±ä¹çç¹æ»´ï¼çè³è§ç¹åè¯è®ºï¼ä»èå¨ç½ä¸å»ºç«ä¸ä¸ªå®å¨å±äºèªå·±çä¸ªäººå¤©å°ãå»ºç«åå®¢ï¼æå©äºä»äººå¨äºèç½ä¸æ´å¥½å°è®¤è¯æ¨ï¼ä¹æå©äºæ¨æ´å¥½çåå«äººäº¤æµãåå®¢ä¸çæ¯ä¸ä¸ªå¼æ¾åå±äº«çä¸çãæçåå®¢ç±æçå¬å¸å¼åï¼ç®åæ¯åè´¹æå¡ã--> 
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

	<channel>
		<title>FPGA技术研究－有间客栈（eda_yll）</title>
		<link>http://yliangliang.blog.sohu.com/</link>
		<description><![CDATA[探索FPGA、SOPC的system设计、基于NIOSII的嵌入式system设计、Linux驱动程序开发、集成电路设计]]></description>
		<pubDate>Wed, 10 Sep 2008 23:20:22 +0800</pubDate>
		<generator>搜狐博客</generator>
		<image>
			<title>http://blog.sohu.com</title>
			<url>http://js.pp.sohu.com/ppp/blog/images/common/logo_150_60.gif</url>
			<link>http://blog.sohu.com/</link>
			<width>100</width>
			<height>43</height>
			<description>搜狐博客</description>
		</image>
		<item>
			<title>找工作前的最后冲刺</title>
			<link>http://yliangliang.blog.sohu.com/99544912.html</link>
			<comments>http://yliangliang.blog.sohu.com/99544912.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Wed, 10 Sep 2008 23:20:22 +0800</pubDate>
			<category>求职与简历</category>
			<guid>http://yliangliang.blog.sohu.com/99544912.html</guid>
			<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找工作冲刺阶段计划安排</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</p>
<p>9月11号&mdash;10月12号（4个星期时间）</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</p>
<p>9月11号&mdash;9月18号（集成电路设计）</p>
<p>1、*数字IC系统设计</p>
<p>2、超大规模集成电路</p>
<p>3、设计与验证、DFT设计</p>
<p>4、*H.264解码器设计</p>
<p>5、*IC设计经验总结</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</p>
<p>9月19号&mdash;9月26号（数电和模电和计算机架构）</p>
<p>1、*数电</p>
<p>2、*模电</p>
<p>3、计算机架构（硬件）</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</p>
<p>9月27号&mdash;10月4号（攻克C语言与数据结构）</p>
<p>1、*C语言与指针</p>
<p>2、*数据结构</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</p>
<p>10月5号&mdash;10月12号（项目总结与面试技巧）</p>
<p>1、家庭便携式远程医疗监护系统</p>
<p>2、网络摄像头设计</p>
<p>3、多功能数码相册</p>
<p>4、H.264视频解码器设计</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</p>
<p>每天晚上9点&mdash;12点英语（听说写）</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</p>
<p>10月15号去南京</p>
<p>按计划进行，不怕找不到工作，请大家监督，做足准备工作，工作等着我呢！</p>]]></description>
		</item>
		    
		
		<item>
			<title>H.264便携式实时编解码器的方案探讨</title>
			<link>http://yliangliang.blog.sohu.com/99034483.html</link>
			<comments>http://yliangliang.blog.sohu.com/99034483.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Thu, 4 Sep 2008 14:22:01 +0800</pubDate>
			<category>视频图像处理</category>
			<guid>http://yliangliang.blog.sohu.com/99034483.html</guid>
			<description><![CDATA[<p>1 引言 </p>
<p>　　H.264标准以其高视频压缩比、高图像质量、良好的网络适应性得到了市场的广泛认可。其应用目标范围较宽，可以满足不同速率、不同解析度以及不同传输、存储场合的需求。但算法的复杂度高，必须有强劲有力的硬件作支持。 </p>
<p>2 H.264便携式实时编***方案比较 </p>
<p>　　目前DSP是实现H.264视频编解码的主流。DSP芯片采用多总线多功能单元的哈佛结构，加上带有强烈针对性的指令集设计，实际的处理能力非常高。但是由于H.264算法的复杂性，需要更快的DSP，这样将会导致价格提高和功耗增大。对于H.264便携式实时编***来说，DSP架构往往不能同时满足编解码速度和功耗这两方面的要求。另外，对于H.264编解码软件，虽然有开源的编***可以参考，但代码的修改、移植过程仍然相当复杂。 </p>
<p>　　因此，可以考虑使用专用的硬件来实现H.264便携式实时编***。目前市场上主要有两种形式：一种采用IP(Intellectual Property)核，一种采用ASIC芯片。 </p>
<p>2.1 基于IP核的编*** </p>
<p>　　目前，基于IP核的编***是比较常见的，能提供H.264编解码IP核的厂家主要有4i2i，IndigoVision，Sarnoff，Chips&amp;Media，Ocean Logic，Innovative Semi-conductors，eInfoChips，CAST，Barco-Silex，Ateme，创意电子以及国内的中芯联合等。4i2i和Chips&amp;Media等都能提供全系列的H.264编解码核。表1列举了4家IP核的H.264 编***。 </p>
<p></p>
<p>　　但由于功耗、体积和成本的限制，基于IP的方案无法广泛应用到消费电子领域中，一般直接被IC厂商封装在SoC中，以ASIC方式提供给用户。例如，可编程逻辑供应商Xilinx与英国IP核供应商4i2i就共同发布了一块单片式FPGA高清晰度的H.264视频编码器。另外也有一部分IP核可以支持ARM等平台，如表1中TechnoMathematical的H.264_BP，H.264_MP等。 </p>
<p>2.2 基于ASIC芯片的编*** </p>
<p>　　ASIC定制的视频编解码芯片成本低廉，编解码速度快，广泛用于各个领域。这种ASIC内部除处理器外，一般还集成了丰富的外设接口，如以太网、USB、CF等接口，有些还集成了图像压缩、图像增强、硬件加速等模块，特别是有些芯片还集成有RISC CPU，采用ASIC+ARM的构架，能有效地结合ASIC和ARM的长处，使芯片具有高性能编解码功能，同时实现许多应用功能的开发。 </p>
<p>　　目前，能够生产H.264编解码相关芯片的IC公司有：Broadcom，Conexant，Sigma Designs，STMicroelectron-ics，Hantro，C&amp;S Technology，NeoMagic，ATI，nVidia，Tech-no Mathematical，Qpixel，Chips&amp;Media，富士通以及国内的海思、富翰等。这些公司推出的产品大部分为***，例如Broadcom公司的BCM74xx系列、Conexant的Cx2418x系列、Sigma Designs的SMP8620和<a title="SMP8630货源和PDF资料" href="http://www.ic37.com/SMP8630-p.htm" target="_blank">SMP8630</a>系列、富翰的FH8601等。而海思的Hi3510，Qpixel的QL20X系列以及富士通的MB86H50和MB86H51等为全功能的编***芯片，下面重点介绍～下这几款芯片。 </p>
<p>1) 海思的Hi3510 </p>
<p>　　Hi3510是一款基于ARM9及DSP双处理器内核，以及硬件加速引擎的高集成、可编程、支持<a title="MPEG-4货源和PDF资料" href="http://www.ic37.com/MPEG-4-p.htm" target="_blank">MPEG-4</a>和AVC/H.264等多协议的高性能通信媒体处理器，可广泛应用于实时视频通信、数字图像监控等领域。视频处理单元能够支持<a title="MPEG-4货源和PDF资料" href="http://www.ic37.com/MPEG-4-p.htm" target="_blank">MPEG-4</a>，AVC/H.264，Baseline，H.263+，H.261，JPEG等多种协议的实时编解码。加密、DRM和数字水印技术为数据和通信的安全提供了强有力的保障。图形处理单元能够提供视频去噪、图像增强、运动检测等功能;支持任意比例的视频、图形缩放以及去隔行处理;支持OSD和2D图形加速，为应用图形界面的开发提供丰富的特性。其功能框图如图1所示。 </p>
<p>2) Qpixel的QL202B </p>
<p>　　QL202B是一款半双工H.264/AVC Main Profile(Level 3)的编解码SoC，内部集成ARM9处理器和10/100 Mbit/s以太网接口，非常适用于网络视频流的应用。图形处理单元能够提供视频去噪、图像增强、运动检测等处理功能;先进的视频编码处理支持CSVLC/CABAC，可配置GoP的结构，支持任意比例的视频、图形缩放以及全屏OSD等，为应用图形界面开发提供丰富的特性。 </p>
<p>　　目前支持Main Profile的ASIC还比较少，QL202B是性能较好的一款。它支持full D1@30 f/s(帧/秒)，外设丰富，具有一个ARM核，能够不加扩展地开发很多应用。尤其是它具有NAL(Netware Abstract Layer)，支持MPEG的TS和PS以及单独的视频或音频ES，所以能够很轻易取代目前许多应用中的<a title="MPEG-2货源和PDF资料" href="http://www.ic37.com/MPEG-2-p.htm" target="_blank">MPEG-2</a>编***。同时，支持Apple Quicktime也是它的一大卖点。 </p>
<p>3) 富士通的MB86H50 </p>
<p>　　MB86H50是首款支持High Profile Level 4.0的H.264编***，可对高清视频(高达1 440点&times;1 080行)进行实时的压缩和解压缩，也可对Dolby数字格式的音频进行同步压缩和解压缩。其内部集成有256 Mbit&times;2的FCRAM，使得尺寸更紧凑、功耗更低。富士通实验室开发的self-turning算法可以自适应地对感兴趣区域(如人脸、缓慢移动的物体等)进行浅度压缩而对其他区域进行深度压缩，这就可以使图像数据压缩至<a title="MPEG-2货源和PDF资料" href="http://www.ic37.com/MPEG-2-p.htm" target="_blank">MPEG-2</a>的1/2～1/3。 </p>
<p>　　以上3款芯片从支持H.264的Baseline Profile到High Profile，不同应用的适用层次也不同，例如Main Pro-file主要面向消费电子应用(如数字电视广播、数字视频存储等)，需要注意选型。表2将这几款芯片作了简要的对比。 </p>
<p></p>
<p>　　基于ASIC的编***其灵活性存在一定的缺陷，一旦芯片开发完毕就很难继续扩展其他应用，新功能的添加需要芯片研发公司花费较长的开发周期。好在目前很多ASIC都集成了ARM，并且支持固件升级以增加新的功能，例如，QL202B的音频Codec部分就可通过固件升级支持MPEG-1/2/4或其他新的音频编码标准，但是这样的开发在很大程度上受制于芯片公司。 </p>
<p>3 小结 </p>
<p>　　设计H.264便携式实时编***时必须充分考虑实时性、功耗、成本、资源、开发周期等因素，进行充分的调研，才能确定最优方案，降低系统的开发难度，缩短开发周期，降低开发成本。本文探讨了基于硬件实现的方案，对几款H.264不同层次的全功能编解码芯片的主要特点作了介绍以及简要对比，对开发前期方案的确定有一定的指导意义。 </p>]]></description>
		</item>
		    
		
		<item>
			<title>主规范H.264编解码器：针对消费电子应用的一种低功耗实现方案</title>
			<link>http://yliangliang.blog.sohu.com/98860378.html</link>
			<comments>http://yliangliang.blog.sohu.com/98860378.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Tue, 2 Sep 2008 14:18:56 +0800</pubDate>
			<category>视频图像处理</category>
			<guid>http://yliangliang.blog.sohu.com/98860378.html</guid>
			<description><![CDATA[<p>&nbsp; 随着全球音视频(AV)领域持续从模拟向着数字转换，支持数字音频和视频处理，包括电视机、DVD播放机、数字静止图像摄像机(DSC)、数字视频刻录机(DVC)的新型消费电子设备的数量也持续快速攀升。近来，每一个便携式个人电子设备似乎都配备了音视频功能，包括移动电话、便携式媒体播放器和PDA。此外，个人电脑、各种联网和宽带技术也通过促进创新、传输和共享内容，在引爆这个转换的过程中正发挥它们的作用。 
</p><p>
</p><p>&nbsp; 业内要求制定国际压缩标准的因素很多，以数字格式创新和共享内容就是其中的关键之一。MPEG(移动图像专家组)和JPEG(联合图像专家组)委员会创造了各种原始的标准，使得从模拟AV到数字AV格式的转换成为可能，容许通过网络或便携式存储媒体(即DVD磁盘、SD卡等等)共享和传输多媒体内容。然而，在消费电子领域从内容消费向着内容创新迈进的过程中，随着主要范例的转换，对更高品质内容创新、更大量内容存储和更方便的内容传输/共享出现了越来越高的要求。 
</p><p>
</p><p>&nbsp; 在典型的AV产品中，视频内容占用了大多数的处理能力、存储空间和通信信道带宽。MPEG-2视频压缩技术有助于在从模拟向数字视频处理转换的过程。因此，它成为了消费电子领域采用最广泛的压缩标准。H.264因具有较低的传输比特率且对存储的要求较低，目前有望取代MPEG-2。这些改进在对成本敏感的消费产品、特别是便携式消费设备中是至关重要的。 
</p><p>
</p><p>&nbsp; <a href="http://www.ent.eetchina.com/SEARCH/ART/H.264.HTM"><span>H.264</span></a> (也称为MPEG-4/AVC)标准是在2005年底由ITU-T和MPEG组织共同制定完成的。该标准从小尺寸(移动AV)到高分辨率(<a href="http://www.ent.eetchina.com/SEARCH/ART/HD.HTM"><span>HD</span></a>)视频等等宽的应用范围内极大地改进了MPEG-2压缩率。H.264技术的许多应用已经被推出，包括蓝光碟、HD-DVD、AVCHD刻录机(HD-CAM)、iTune视频、1-Seg数字电视(日本的移动数字电视)以及欧洲手持数字电视DVB-H，及其它产品。H.264获得广泛应用的关键因素有两条： 
</p><p>
</p><p>1. 相对于MPEG-2，H.264的压缩比提高了2到3倍，因此，极大地节省时间了视频存储容量和网络带宽。 
</p><p>
</p><p>2. H.264有效地实现了基于互联网的应用，因为其方案据认为能够与网络协议协调一致。网络正在家庭、办公场所和其它任何地方快速扩张。有线和无线网络的服务带宽及质量与日俱增，在这些网络上的视频流在有线电视、卫星、IPTV及其它应用中已经普及。把H.264视频压缩技术和这种无处不在的宽带网络连接性结合起来，正在点燃一个移动数字生活方式的新时代。 
</p><p>
</p><p>
</p><p align="left">&nbsp;<img src="file:///C:/Documents%20and%20Settings/杨/Local%20Settings/Temporary%20Internet%20Files/Content.IE5/EPFSHKBM/DTCOL_0116_TA1%5B1%5D.jpg" />
</p><p>
</p><p><i>表1：消费AV产品市场(日本)</i><br />
</p><p>
</p><p>注：上图(单位销售量)由日本电子和信息技术行业协会(JEITA)及照相机和成像产品协会(CIPA)提供；2006年的数字根据从2006年1月到10月的销售统计数字预测；对2007年的预测根据2006年的月度数字预测；在日本，大多移动电话包括数码相机；一定比例的3G移动电话包含视频电话及其服务；一定比例的移动电话配备了1-seg DTV接收机。 
</p><p>
</p><p>上表突出了下列要点： 
</p><p>
</p><p>?便携式消费设备领域(移动电话和数码相机)市场巨大且快速成长 
</p><p>
</p><p>?个人便携式设备的演进显著地改变着我们的生活方式，特别是我们彼此之间交流沟通的方式 
</p><p>
</p><p>除了在表1所示的便携式市场变化之外，家庭中的视频产品也正快速地向着高清晰(HD)品质的产品转换。类似地，视频便携式设备正转向标准清晰度(SD)或从QVGA或更少的分辨率向VGA转换。很显然，在全球的消费AV领域和市场存在一个趋势：许多产品正成为个人移动设备而不是桌面和以家庭为中心的设备。 
</p><p>
</p><p>H.264的先进算法为AV联网提供了更高的压缩、更低的通信信道带宽、更小的存储要求和灵活的方案；然而，那些算法也需要更多的处理能力以实现对视频内容的编码和解码。显然，对任何移动设备的首要要求就是功耗更低，以延长电池的使用时间。在下列部分，我们将概要介绍如何利用Qpixel公司的H.264压缩IC来满足便携式消费设备的视频品质和低功耗要求。 
</p><p>
</p><p><b>H.264和MPEG-2的概要技术对比</b> 
</p><p>
</p><p>H.264作为ITU-T的长期项目，其开发从1998年就开始了，目标是用H.263和MPEG-4标准一半的比特率来实现相同的视觉品质感受。与过去的视频标准 (MPEG-1/-2/-4, H.261/262/263)不同，H.264的努力方向是改善压缩效率，而不是限制实现方案的复杂度。这就导致了现有的H.264实现方案需要足够数量的计算能力，由此得到的H.264编码器提供了经改善的功能，其中的编码器结构和压缩算法与MPEG-2完全不同。 
</p><p>
</p><p>
</p><p align="left"><img alt="" src="http://www.eetchina.com/ARTICLES/2007JAN/3/DTCOL_0116_TA2.JPG" border="0" /> 
</p><p>
</p><p><i>H.264编码器结构</i><br />
</p><p>
</p><p>
</p><p align="left"><img alt="" src="http://www.eetchina.com/ARTICLES/2007JAN/3/DTCOL_0116_TA3.JPG" border="0" /> 
</p><p>
</p><p><i>表2：H.264编码器比MPEG-2编码器优越之处</i><br />
</p><p>
</p><p>表3列出了H.264标准所提供的不同规范以及简要的描述和各种目标应用。 
</p><p>
</p><p>
</p><p align="left"><img alt="" src="http://www.eetchina.com/ARTICLES/2007JAN/3/DTCOL_0116_TA4.JPG" border="0" /> 
</p><p>
</p><p><i>表3：H.264标准所提供的不同规范以及简要的描述和各种目标应用</i><br />
</p><p>
</p><p>头四个规范(Baseline、Main、Extended和High)被扩展为面向消费电子应用，紧接着的三个规范 (High 10、High 4:2:2、High 4:4:4)被扩展为针对非(专业)消费电子应用。在此，也存在与MPEG-2类似的&ldquo;Level&rdquo;的定义。Level-3用于SD(标准清晰度: 720x480x30或720x576x25)，Level-4用于HD(高清晰度: 1920x1080x30或x25)。 
</p><p>
</p><p><b>Qpixel针对AV市场需求的方法和解决方案</b> 
</p><p>
</p><p>考虑到AV市场的需求和H.264的技术特征，我们把努力定位在下列方向： 
</p><p>
</p><p>?适用于便携式应用的最低功耗的<a title="探密东芝HD DVD播放器的音视频处理设计" href="http://www.ent.eetchina.com/ART_8800490904_2700002_NT_9286946f.HTM">编解码器</a>； 
</p><p>
</p><p>?高品质标准清晰度视频处理(同时关注将来的高清晰分辩率)； 
</p><p>
</p><p>?满足特定市场需求的专用H.264编解码器算法和结构。更为特别的是，我们选择主规范的Level-3，它非常好的视频品质是标准清晰度应用最适合的选择。 
</p><p>
</p><p>利用视频压缩技术的基本理论，推荐采取下列处理： 
</p><p>
</p><p>(a)人类的心理视觉系统忽视高频纹理的细节； 
</p><p>
</p><p>(b)通过在许多可能的选项之间找到最佳的运动估值匹配，可以减少最终的比特率； 
</p><p>
</p><p>(c)熵编码可以不损失信息而获得最少的比特数。 
</p><p>
</p><p>项目(a)和(b)需要多次算法迭代才能找到人眼针对给定比特率的最佳感觉，项目(c)需要一种创新的实现方案。 
</p><p>
</p><p>一般地说，编码器需要生成符合标准的比特流，与此同时，在H.264标准中并没有规定视频品质和压缩效率。然而，我们的目标是在低功耗的条件下以低比特率实现高品质视频。这些准则就是我们努力的重点。下面概要介绍了我们的算法努力和方向： 
</p><p>
</p><p>?在不牺牲压缩效率的前提下，把高度顺序处理的H.264句法链分割为更小数量的句法单元，因此，容许利用更为并行化的处理来突破处理能力的瓶颈； 
</p><p>
</p><p>?在不牺牲视频品质的前提下，智能地预选更为有效的压缩算法，因此，减少所需要的整体处理能力； 
</p><p>
</p><p>?以高度可伸缩的方式来实现突发和依赖于内容的CABAC特征，因此，为CABAC更为便于采用硬件来实现奠定了基础； 
</p><p>
</p><p>?从实现成本考虑，以最佳地平衡视频品质为目标来实现B图； 
</p><p>
</p><p>?有效地重用数据以最大化我们的视频算法的性能； 
</p><p>
</p><p>?具有句法之间依赖性的高度顺序的句法结构； 
</p><p>
</p><p>?长期存储器容许各个句法单元。 
</p><p>
</p><p><b>H.264对视频品质的贡献</b> 
</p><p>
</p><p>我们的技术来源于对每一种编码工具的全面和仔细的分析，揭示了H.264编码器对视频品质以及在ASIC环境中的实现成本的贡献。我们的技术组不偏不倚地从业已存在的编码标准如MPEG-1/2/4开始着手，把重点放在H.264编码器中每一个模块的最佳成本性能优势上。除了视频编码算法之外，我们采用了高度智能的基于TDM的方案，以减少处理大量视频数据所需要的数据流量，因此，进一步降低了功耗。 
</p><p>
</p><p>下面总结了对架构的决策，它使我们能够满足物理设计的需要： 
</p><p>
</p><p>?Qpixel H.264视频压缩IC的设计目标是满足便携式消费设备市场的需求。众所周知，H.264实现方案的复杂度几乎是MPEG-2的十倍。为了实现高的视频品质并同时降低系统的功耗，我们提出了一种能够感觉功耗的灵活的架构，它利用最先进的设计技术来减少裸片面积和功耗，与此同时，有效地处理数据流量以最大程度地提高效率，并使与外部存储器交互作用所消耗的功率最小。 
</p><p>
</p><p>?影响功耗的主要因素是IC时钟树。为了完全利用潜在的H.264编码工具来实现高的视频品质，时钟频率必须被提高，以提供更大的处理能力。然而，以更高的频率运行IC直接增加了动态功耗，所以，在选择性能目标和系统的功耗时需要采取折衷措施。 
</p><p>
</p><p>?在给定的功耗目标条件下实现最高的性能，要对IC进行计划以最小化外部存储器的延迟周期，此外，要优化总线仲裁机制以提高数据传输效率。 
</p><p>
</p><p>?根据上述考虑，我们实现了两种创新方案，以减少与外部存储器的数据交换。一种是帧映射方案，另一种是基于TDM的总线仲裁。TDM仲裁针对我们的视频处理管线做了高度优化，帧映射针对最大的DRAM带宽做了优化。我们仔细地评估了H.264压缩工具，并在视频品质和DRAM带宽需求之间做了折衷选择。 
</p><p>
</p><p><b>结论和下一步的工作</b> 
</p><p>
</p><p>?我们的独特专利和正在申请专利的视频算法及架构，使得用最佳的方式来实现Qpixel H.264主规范编解码器成为可能，从而满足视频产品对低功耗和高视频品质两方面的需求。 
</p><p>
</p><p>?在下一代消费AV产品中，存在对高清分辨率和品质的需求。我们将继续在算法和架构技术上展开创新，以提供针对高清分辨率应用的高度有竞争力的解决方案。 
</p><p>
</p><p><i>参考文献： 
</i></p><p><i>
</i></p><p><i>?JVT-N050d1.doc 
</i></p><p><i>
</i></p><p><i>?H.264 / AVC TEXTBOOK, Authored by S. Okubo et al, Impress Limited 
</i></p><p><i>
</i></p><p><i>?Development of Video Coding Technology and Future Prospects, T. Chujo, Toshiba Review Vol.60 No.7, 2005 
</i></p><p><i>
</i></p><p><i>?A Study for Bit-rate Control of H.264/AVC Coding, Y. Akima, Graduate Paper of Waseda University, 2004 </i><br /></p>
<div></div>]]></description>
		</item>
		    
		
		<item>
			<title>一个牛人写的文章（关于RTL级设计）</title>
			<link>http://yliangliang.blog.sohu.com/98618042.html</link>
			<comments>http://yliangliang.blog.sohu.com/98618042.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Sat, 30 Aug 2008 11:29:13 +0800</pubDate>
			<category>IC设计</category>
			<guid>http://yliangliang.blog.sohu.com/98618042.html</guid>
			<description><![CDATA[<p>规范很重要</p>
<p>&nbsp;&nbsp; 工作过的朋友肯定知道，公司里是很强调规范的，特别是对于大的设计（无论软件<br />还是硬件），不按照规范走几乎是不可实现的。逻辑设计也是这样：如果不按规范做的<br />话，过一个月后调试时发现有错，回头再看自己写的代码，估计很多信号功能都忘了，<br />更不要说检错了；如果一个项目做了一半一个人走了，接班的估计得从头开始设计；如<br />果需要在原来的版本基础上增加新功能，很可能也得从头来过，很难做到设计的可重用<br />性。</p>
<p>&nbsp;&nbsp;</p><br />在逻辑方面，我觉得比较重要的规范有这些： 
<p>&nbsp;&nbsp; 1.设计必须文档化。要将设计思路，详细实现等写入文档，然后经过严格评审通过<br />后才能进行下一步的工作。这样做乍看起来很花时间，但是从整个项目过程来看，绝对<br />要比一上来就写代码要节约时间，且这种做法可以使项目处于可控、可实现的状态。</p>
<p>&nbsp;&nbsp; 2.代码规范。<br />&nbsp;&nbsp; a.设计要参数化。比如一开始的设计时钟周期是30ns，复位周期是5个时钟周期，我<br />们可以这么写：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameter CLK_PERIOD = 30;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameter RST_MUL_TIME = 5;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameter RST_TIME = RST_MUL_TIME * CLK_PERIOD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rst_n = 1'b0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # RST_TIME rst_n = 1'b1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # CLK_PERIOD/2 clk &lt;= ~clk;<br />&nbsp;&nbsp;&nbsp; 如果在另一个设计中的时钟是40ns，复位周期不变，我们只需对CLK_PERIOD进行重<br />新例化就行了，从而使得代码更加易于重用。</p>
<p>&nbsp;&nbsp; b.信号命名要规范化。<br />&nbsp;&nbsp; 1) 信号名一律小写，参数用大写。<br />&nbsp;&nbsp; 2) 对于低电平有效的信号结尾要用_n标记，如rst_n。<br />&nbsp;&nbsp; 3) 端口信号排列要统一，一个信号只占一行，最好按输入输出及从哪个模块来到哪<br />个模块去的关系排列，这样在后期仿真验证找错时后 方便很多。如：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; module a(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //input<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clk,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rst_n,&nbsp;&nbsp; //globle signal<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wren,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rden,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avalon_din, //related to avalon bus<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sdi,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //related to serial port input<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //output<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_ready,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avalon_dout, //related to avalon bus<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4) 一个模块尽量只用一个时钟，这里的一个模块是指一个module或者是一个en<br />tity。在多时钟域的设计中涉及到跨时钟域的设计中最好有专门一个模块做时钟域的隔<br />离。这样做可以让综合器综合出更优的结果。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5) 尽量在底层模块上做逻辑，在高层尽量做例化，顶层模块只能做例化，禁止<br />出现任何胶连逻辑（glue logic），哪怕仅仅是对某个信号取反。理由同上。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6) 在FPGA的设计上禁止用纯组合逻辑产生latch，带D触发器的latch的是允许的<br />，比如配置寄存器就是这种类型。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7) 一般来说，进入FPGA的信号必须先同步，以提高系统工作频率（板级）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有模块的输出都要寄存器化，以提高工作频率，这对设计做到时序收敛也<br />是极有好处的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9) 除非是低功耗设计，不然不要用门控时钟--这会增加设计的不稳定性，在要<br />用到门控时钟的地方，也要将门控信号用时钟的下降沿 打一拍再输出与时钟相与。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clk_gate_en&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------|D&nbsp;&nbsp;&nbsp;&nbsp; Q |------------------|&nbsp;&nbsp;&nbsp;&nbsp; \ gate_clk<br />_out<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; )--------<br />-<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------o|&gt;&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; /<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clk&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; ----<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10)禁止用计数器分频后的信号做其它模块的时钟，而要用改成时钟使能的方式<br />，否则这种时钟满天飞的方式对设计的可靠性极为不利，也大大增加了静态时序分析的<br />复杂性。如FPGA的输入时钟是25M的，现在系统内部要通过RS232与PC通信，要以rs232_<br />1xclk的速率发送数据。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不要这样做：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; always (posedge rs232_1xclk or negedge rst_n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而要这样做：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; always (posedge clk_25m or negedge rst_n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if ( rs232_1xclk == 1'b1 )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11)状态机要写成3段式的(这是最标准的写法)，即<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; always @(posedge clk or negedge rst_n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; current_state &lt;= next_state;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; always @ (current_state ...)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case(current_state)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s1:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next_state = s2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; always @(posedge clk or negedge rst_n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a &lt;= 1'b0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c &lt;= 1'b0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c &lt;= 1'b0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //赋默认值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case(current_state)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s1:<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; a &lt;= 1'b0;&nbsp;&nbsp; //由于上面赋了默认值，这里就不用再对b<br />、c赋值了(b、c在该状态为0，不会产生锁存器，下同)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s2:<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; b &lt;= 1'b1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s3:<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; c &lt;= 1'b1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.ALTERA参考设计准则<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) Ensure Clock, Preset, and Clear configurations are free of glitch<br />es.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) Never use Clocks consisting of more than one level of combinatori<br />al logic.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3) Carefully calculate setup times and hold times for multi-Clock sy<br />stems.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4) Synchronize signals between flipflops in multi-Clock systems when<br />the setup and hold time requirements cannot be met.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5) Ensure that Preset and Clear signals do not contain race conditio<br />ns.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6) Ensure that no other internal race conditions exist.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7) Register all glitch-sensitive outputs.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Synchronize all asynchronous inputs.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9) Never rely on delay chains for pin-to-pin or internal delays.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10)Do not rely on Power-On Reset. Use a master Reset pin to clear al<br />l flipflops.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11)Remove any stuck states from state machines or synchronous logic.</p>
<p>&nbsp;&nbsp;&nbsp; 其它方面的规范一时没有想到，想到了再写，也欢迎大家补充。</p>
<p><br />====================================================================================<br />时序是设计出来的<br />&nbsp;&nbsp; 我的boss有在华为及峻龙工作的背景，自然就给我们讲了一些华为及altera做逻辑<br />的一些东西，而我们的项目规范，也基本上是按华为的那一套去做。在工作这几个月中<br />，给我感触最深的是华为的那句话：时序是设计出来的，不是仿出来的，更不是湊出来<br />的。</p>
<p>&nbsp;&nbsp; 在我们公司，每一个项目都有很严格的评审，只有评审通过了，才能做下一步的工<br />作。以做逻辑为例，并不是一上来就开始写代码，而是要先写总体设计方案和逻辑详细<br />设计方案，要等这些方案评审通过，认为可行了，才能进行编码，一般来说这部分工作<br />所占的时间要远大于编码的时间。</p>
<p>&nbsp;&nbsp; 总体方案主要是涉及模块划分，一级模块和二级模块的接口信号和时序（我们要求<br />把接口信号的时序波形描述出来）以及将来如何测试设计。在这一级方案中，要保证在<br />今后的设计中时序要收敛到一级模块（最后是在二级模块中）。什么意思呢？我们在做<br />详细设计的时候，对于一些信号的时序肯定会做一些调整的，但是这种时序的调整最多<br />只能波及到本一级模块，而不能影响到整个设计。记得以前在学校做设计的时候，由于<br />不懂得设计时序，经常因为有一处信号的时序不满足，结果不得不将其它模块信号的时<br />序也改一下，搞得人很郁闷。</p>
<p>&nbsp;&nbsp; 在逻辑详细设计方案这一级的时候，我们已经将各级模块的接口时序都设计出来了<br />，各级模块内部是怎么实现的也基本上确定下来了。</p>
<p>&nbsp;&nbsp; 由于做到这一点，在编码的时候自然就很快了，最重要的是这样做后可以让设计会<br />一直处于可控的状态，不会因为某一处的错误引起整个设计从头进行。</p>
<p><br />&nbsp;&nbsp; 版权所有，未经作者允许，禁止用于商业性质的转载；如对此文有疑问或想给作者<br />提建议请给作者发email：<a href="mailto:wangdian@tom.com">wangdian@tom.com</a> </p>
<p></p>
<p><br />EDA论坛 版权所有，严禁拷贝！ 转载请联系<a href="mailto:bbs@edacn.net">bbs@edacn.net</a></p>
<p>=============================================================================================<br />如何提高电路工作频率</p>
<p>&nbsp;&nbsp; 对于设计者来说，我们当然希望我们设计的电路的工作频率（在这里如无特别说明<br />，工作频率指FPGA片内的工作频率）尽量高。我们也经常听说用资源换速度，用流水的<br />方式可以提高工作频率，这确实是一个很重要的方法，今天我想进一步去分析该如何提<br />高电路的工作频率。</p>
<p>&nbsp;&nbsp; 我们先来分析下是什么影响了电路的工作频率。</p>
<p>&nbsp;&nbsp; 我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及clock skew有关<br />。在FPGA内部如果时钟走长线的话，clock skew很小，基本上可以忽略, 在这里为了简<br />单起见，我们只考虑信号的传播时延的因素。</p>
<p>&nbsp;&nbsp; 信号的传播时延包括寄存器的开关时延、走线时延、经过组合逻辑的时延（这样划<br />分或许不是很准确，不过对分析问题来说应该是没有可以的），要提高电路的工作频率<br />，我们就要在这三个时延中做文章，使其尽可能的小。</p>
<p>&nbsp;&nbsp; 我们先来看开关时延，这个时延是由器件物理特性决定的，我们没有办法去改变，<br />所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。</p>
<p>&nbsp;&nbsp; 1.通过改变走线的方式减少时延。<br />&nbsp;&nbsp; 以altera的器件为例，我们在quartus里面的timing closure floorplan可以看到有<br />很多条条块块，我们可以将条条块块按行和按列分，每一个条块代表1个LAB，每个LAB里<br />有8个或者是10个LE。它们的走线时延的关系如下：同一个LAB中（最快） &lt; 同列或者同<br />行 &lt; 不同行且不同列。<br />&nbsp;&nbsp; 我们通过给综合器加适当的约束（不可贪心，一般以加5%裕量较为合适，比如电路<br />工作在100Mhz，则加约束加到105Mhz就可以了，贪心效果反而不好，且极大增加综合时<br />间）可以将相关的逻辑在布线时尽量布的靠近一点，从而减少走线的时延。（注：约束<br />的实现不完全是通过改进布局布线方式去提高工作频率，还有其它的改进措施）</p>
<p>&nbsp;&nbsp; 2.通过减少组合逻辑的减少时延。<br />&nbsp;&nbsp; 上面我们讲了可以通过加约束来提高工作频率，但是我们在做设计之初可万万不可<br />将提高工作频率的美好愿望寄托在加约束上，我们要通过合理的设计去避免出现大的组<br />合逻辑，从而提高电路的工作频率，这才能增强设计的可移植性，才可以使得我们的设<br />计在移植到另一同等速度级别的芯片时还能使用。<br />&nbsp;&nbsp; 我们知道，目前大部分FPGA都基于4输入LUT的，如果一个输出对应的判断条件大于<br />四输入的话就要由多个LUT级联才能完成，这样就引入一级组合逻辑时延，我们要减少组<br />合逻辑，无非就是要输入条件尽可能的少，，这样就可以级联的LUT更少，从而减少了组<br />合逻辑引起的时延。<br />&nbsp;&nbsp; 我们平时听说的流水就是一种通过切割大的组合逻辑（在其中插入一级或多级D触发<br />器，从而使寄存器与寄存器之间的组合逻辑减少）来提高工作频率的方法。比如一个32<br />位的计数器，该计数器的进位链很长，必然会降低工作频率，我们可以将其分割成4位和<br />8位的计数，每当4位的计数器计到15后触发一次8位的计数器，这样就实现了计数器的切<br />割，也提高了工作频率。<br />&nbsp;&nbsp; 在状态机中，一般也要将大的计数器移到状态机外，因为计数器这东西一般是经常<br />是大于4输入的，如果再和其它条件一起做为状态的跳变判据的话，必然会增加LUT的级<br />联，从而增大组合逻辑。以一个6输入的计数器为例，我们原希望当计数器计到111100后<br />状态跳变，现在我们将计数器放到状态机外，当计数器计到111011后产生个enable信号<br />去触发状态跳变，这样就将组合逻辑减少了。</p>
<p>&nbsp;&nbsp; 上面说的都是可以通过流水的方式切割组合逻辑的情况，但是有些情况下我们是很<br />难去切割组合逻辑的，在这些情况下我们又该怎么做呢？</p>
<p>&nbsp;&nbsp; 状态机就是这么一个例子，我们不能通过往状态译码组合逻辑中加入流水。如果我<br />们的设计中有一个几十个状态的状态机，它的状态译码逻辑将非常之巨大，毫无疑问，<br />这极有可能是设计中的关键路径。那我们该怎么做呢？还是老思路，减少组合逻辑。我<br />们可以对状态的输出进行分析，对它们进行重新分类，并根据这个重新定义成一组组小<br />状态机，通过对输入进行选择(case语句)并去触发相应的小状态机，从而实现了将大的<br />状态机切割成小的状态机。在ATA6的规范中（硬盘的标准），输入的命令大概有20十种<br />，每一个命令又对应很多种状态，如果用一个大的状态机（状态套状态）去做那是不可<br />想象的，我们可以通过case语句去对命令进行译码，并触发相应的状态机，这样做下来<br />这一个模块的频率就可以跑得比较高了。</p>
<p>&nbsp;&nbsp; 总结：提高工作频率的本质就是要减少寄存器到寄存器的时延，最有效的方法就是<br />避免出现大的组合逻辑，也就是要尽量去满足四输入的条件，减少LUT级联的数量。我们<br />可以通过加约束、流水、切割状态的方法提高工作频率。</p>
<p>===================================================================================<br />做逻辑的难点在于系统结构设计和仿真验证<br />&nbsp;&nbsp; 刚去公司的时候BOSS就和我讲，做逻辑的难点不在于RTL级代码的设计，而在于系统<br />结构设计和仿真验证方面。目前国内对可综合的设计强调的比较多，而对系统结构设计<br />和仿真验证方面似乎还没有什么资料，这或许也从一个侧面反映了国内目前的设计水平<br />还比较低下吧。</p>
<p>&nbsp;&nbsp; 以前在学校的时候，总是觉得将RTL级代码做好就行了，仿真验证只是形式而已，所<br />以对HDL的行为描述方面的语法不屑一顾，对testbench也一直不愿意去学--因为觉得画<br />波形图方便；对于系统结构设计更是一点都不懂了。</p>
<p>&nbsp;&nbsp; 到了公司接触了些东西才发现完全不是这样。</p>
<p>&nbsp;&nbsp; 其实在国外，花在仿真验证上的时间和人力大概是花在RTL级代码上的两倍，现在仿<br />真验证才是百万门级芯片设计的关键路径。仿真验证的难点主要在于怎么建模才能完全<br />和准确地去验证设计的正确性（主要是提高代码覆盖），在这过程中，验证速度也是很<br />重要的。</p>
<p>&nbsp;&nbsp; 验证说白了也就是怎么产生足够覆盖率的激励源，然后怎么去检测错误。我个人认<br />为，在仿真验证中，最基本就是要做到验证的自动化。这也是为什么我们要写testbenc<br />h的原因。在我现在的一个设计中，每次跑仿真都要一个小时左右（这其实算小设计）。<br />由于画波形图无法做到验证自动化，如果用通过画波形图来仿真的话，一是画波形会画<br />死（特别是对于算法复杂的、输入呈统计分布的设计），二是看波形图要看死，三是检<br />错率几乎为零。</p>
<p>&nbsp;&nbsp; 那么怎么做到自动化呢？我个人的水平还很有限，只能简单地谈下BFM（bus funct<br />ion model，总线功能模型）。</p>
<p>&nbsp;&nbsp; 以做一个MAC的core为例（背板是PCI总线），那么我们需要一个MAC_BFM和PCI_BFM<br />及PCI_BM（PCI behavior model）。MAC_BFM的主要功能是产生以太网帧(激励源），随<br />机的长度和帧头，内容也是随机的,在发送的同时也将其复制一份到PCI_BM中；PCI_BFM<br />的功能则是仿PCI总线的行为，比如被测收到了一个正确帧后会向PCI总线发送一个<br />请求，PCI_BFM则会去响应它，并将数据收进来；PCI_BM的主要功能是将MAC_BFM发送出<br />来的东西与PCI_BFM接收到的东西做比较，由于它具有了MAC_BFM的发送信息和PCI_BFM的<br />接收信息，只要设计合理，它总是可以自动地、完全地去测试被测是否工作正常，<br />从而实现自动检测。</p>
<p>&nbsp;&nbsp; 华为在仿真验证方面估计在国内来说是做的比较好的，他们已建立起了比较好的验<br />证平台，大部分与通信有关的BFM都做好了，听我朋友说，现在他们只需要将被测放<br />在测试平台中，并配置好参数，就可以自动地检测被测功能的正确与否。</p>
<p>&nbsp;&nbsp; 在功能仿真做完后，由于我们做在是FPGA的设计，在设计时已经基本保证RTL级代码<br />在综合结果和功能仿真结果的一致性，只要综合布局布线后的静态时序报告没有违反时<br />序约束的警告，就可以下到板子上去调试了。事实上，在华为中兴，他们做FPGA的设计<br />时也是不做时序仿真的，因为做时序仿真很花时间，且效果也不见得比看静态时序分析<br />报告好。</p>
<p>&nbsp;&nbsp; 当然了，如果是ASIC的设计话，它们的仿真验证的工作量要大一些，在涉及到多时<br />钟域的设计时，一般还是做后仿的。不过在做后仿之前，也一般会先用形式验证工具和<br />通过静态时序分序报告去查看有没有违反设计要求的地方，这样做了之后，后仿的工作<br />量可以小很多。</p>
<p>&nbsp;&nbsp; 在HDL语言方面，国内语言很多人都在争论VHDL和verilog哪个好，其实我个人认为<br />这并没有多大的意义，外面的大公司基本上都是用verilog在做RTL级的代码，所以还是<br />建议大家尽量学verilog。在仿真方面，由于VHDL在行为级建模方面弱于verilog，用VH<br />DL做仿真模型的很少，当然也不是说verilog就好，其实verilog在复杂的行为级建模方<br />面的能力也是有限的，比如目前它还不支持数组。在一些复杂的算法设计中，需要高级<br />语言做抽象才能描述出行为级模型。在国外，仿真建模很多都是用System C和E语言，用<br />verilog的都算是很落后的了，国内华为的验证平台好像是用System C写。</p>
<p>&nbsp;&nbsp; 在系统结构设计方面，由于我做的设计还不够大，还谈不上什么经验，只是觉得必<br />须要具备一些计算机系统结构的知识才行。划分的首要依据是功能，之后是选择合适的<br />总线结构、存储结构和处理器架构，通过系统结构划分要使各部分功能模块清晰，易于<br />实现。这一部分我想过段时间有一点体会了再和大家分享，就先不误导大家了。</p>]]></description>
		</item>
		    
		
		<item>
			<title>什么是Soft AP </title>
			<link>http://yliangliang.blog.sohu.com/97268851.html</link>
			<comments>http://yliangliang.blog.sohu.com/97268851.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Thu, 14 Aug 2008 23:00:28 +0800</pubDate>
			<category>网络驱动开发</category>
			<guid>http://yliangliang.blog.sohu.com/97268851.html</guid>
			<description><![CDATA[<div>WLAN（无线局域网）技术无疑是当今网络应用的热点，除了迅驰笔记本电脑掀起的WLAN热潮之外，最近，华硕等<a href="http://www.yesky.com/key/1664/176664.html" target="_blank">主板厂</a>商也引人注目地在台式机主板中加入了WLAN功能。 
<p>　　与此同时，一种被称为Soft AP的技术也开始进入到我们的视野中&hellip;&hellip;</p>
<p>　　<font color="#c00000">由来</font></p>
<p>　　Soft AP是一种通过无线网卡，使用专用软件在PC上实现AP功能的技术，它可以取代无线网络中的AP（<a href="http://www.yesky.com/key/265/595265.html" target="_blank">Access Point</a>，<a href="http://www.yesky.com/key/403/175403.html" target="_blank">无线接入点</a>），从而会降低无线组网的成本。</p>
<p>　　长期以来，高昂的组网成本是WLAN普及的最大障碍，虽然现在WLAN设备的价格已经降低了很多，但对价格敏感的SOHO用户而言，WLAN依然太贵。其中&ldquo;昂贵&rdquo;的AP就是造成总成本居高不下的主要因素，毕竟相对于价格低廉的HUB和交换机，600~1000元的AP要贵得多。</p>
<p>　　不过，Soft AP的出现将有可能扫除WLAN进入<a href="http://www.yesky.com/key/3327/473327.html" target="_blank">小型办公</a>室及家庭的最后一道障碍，毕竟这类用户对价格的关注要远超过对安全性的担忧。</p>
<p>　　其实，Soft AP技术出现得并不晚，早期所谓的主机AP就是一种利用软件来实现AP功能的设备，它一般采用PC机，使用Windows、<a href="http://www.yesky.com/key/1531/206531.html" target="_blank">VXWorks</a>、Linux等操作系统和主机AP程序。不过这种主机AP由于使用专用的设备，比AP便宜不了多少。而现在所说的Soft AP则是英特尔等公司力推的一个新概念，它可以让任何一台拥有无线网卡的PC或笔记本电脑具备AP功能!</p>
<p>　　在英特尔之前，已经不少中小厂商探讨过Soft AP的概念，国内的创智网络甚至还推出过Soft AP产品，不过直到英特尔在今年秋季的IDF上正式提出来，才引起业内的广泛关注。</p>
<p>　　目前已经有多家Wi-Fi芯片供货商在芯片中加入了对Soft AP的支持，这其中有最早推出此功能的台湾IC设计公司益勤、雷凌。</p>
<p><font color="#c00000">与AP的区别</font></p>
<p>　　在无线网络中，AP作为基站起着连接其它无线设备以及与有线骨干网桥接的作用，相当于有线网络中的HUB与交换机。</p>
<p>　　在基本功能上，Soft AP与AP并没有太大的差别，不过Soft AP的接入能力和覆盖范围远不如AP。Soft AP通常只能接入数台或十几台无线设备，而且不便于长久放置在室外，也不能放置在天花板等较高的位置，室外天线的安装也不够方便，因而它的信号覆盖范围受到较大的限制，这也决定了它的应用对象主要还是SOHO这一级别。</p>
<p>　　现在很多AP都带上了附加功能，如ADSL Modem、路由器、防火墙等，这也是Soft AP无法实现的。不过Soft AP升级要更方便一些，只需更换无线网卡和软件就可以升级到802.11g，甚至更新的标准。</p>
<p>　　由于省去了AP，用Soft AP构筑的无线网络会表现出更大的灵活性，任何一台连接Internet或有线骨干网的电脑都可以作为无线网络中的AP来使用，并可支持64位或128位的WEP加密。</p>
<p>　　<font color="#c00000">优势所在</font></p>
<p>　　因为不用部署专用AP，Soft AP几乎可在任何需要的地点组建无线网络，给用户组网带来了极大的方便。</p>
<p>　　Soft AP特别适用于在小型办公室及家庭环境中快速经济地组建无线局域网；作为有线网络的延伸，它也可以为某一局部范围内（如办公室、会议室、实验室等）的少量用户提供一种经济、快捷的联网方式；同时它还可以非常方便地组建临时网络，如在工地、展览会、博览会、运动会等需要临时组网的场所，部署Soft AP无疑要便捷得多。</p>
<p>　　用Soft AP组网的另一大优势就是成本极低，目前Soft AP成本只有AP的一半不到，更何况还有免费的Soft AP软件。</p>
<p>　　这些对于SOHO用户，尤其是家庭用户而言无疑是一个福音。可以肯定的是Soft AP将成为WLAN走向家庭的一个绝好契机。有了低成本的WLAN，谁还会在家里用拖着一条长长&ldquo;辫子&rdquo;的有线网络呢?面对如此看好的市场前景，无怪乎英特尔等WLAN设备制造商要力捧了。</p>
<p>　　<font color="#c00000">趋势分析</font></p>
<p>　　目前市面上能见到的采用Soft AP技术的产品主要是华硕为其主板配套设计的WiFi-b子卡，它可配合多款华硕主板使用，并兼容IEEE 802.11b无线局域网络协议，在Windows XP操作系统即可实现Soft AP功能，最多可支持31个客户端联机。华硕还计划推出支持IEEE 802.11g协议的WiFi-g子卡，从而将连接速度提升到54Mbps。</p>
<p>　　除了华硕之外，微星、技嘉等一线主板大厂也推出支持WLAN及Soft AP的产品。此外，英特尔支持Soft AP的Wi-Fi芯片也正在开发当中。</p>
<p>　　对于Soft AP的技术发展趋势，Pctel大中华区销售总经理罗宗文指出：Soft AP不仅可扮演AP的角色，还可能会进一步整合调制解调器的功能。</p>
<p>　　在全球WLAN设备主要制造基地的中国台湾，WLAN厂商对Soft AP的看法还存有分歧，二线厂对它的接受度相当高，而一线厂则持保留态度。</p>
<p>　　建汉公司运营官袁允中认为：Soft AP须在计算机开机的情况下才能运作，不符合一般的使用习惯，绝对不会排挤AP或无线路由器的商机。而益勤总经理洪乃权则认为Soft AP的概念具备档案分享功能，又降低了采购成本，还可增加SOHO使用者的应用需求，其中以无须搬移的桌上型计算机最适用。</p>
<p>　　显然，一线厂商是担心Soft AP会挤占AP的市场，彻底取代AP。不过这些还真很难说</p></div>]]></description>
		</item>
		    
		
		<item>
			<title>无线AP与无线路由的区别?</title>
			<link>http://yliangliang.blog.sohu.com/96904803.html</link>
			<comments>http://yliangliang.blog.sohu.com/96904803.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Sun, 10 Aug 2008 17:08:15 +0800</pubDate>
			<category>通信网络</category>
			<guid>http://yliangliang.blog.sohu.com/96904803.html</guid>
			<description><![CDATA[<p>解答一：</p>
<p>&nbsp;&nbsp;&nbsp; 摆脱线缆的羁绊，手捧一杯香醇的咖啡在家中的任何角落都可以无拘无束和网友谈天说地──这就是无线的魅力!在无线网络迅猛发展的今天，无线局域网(Wireless Local-Area Network，简称WLAN)已经成为许多SOHO家庭网络生活的首选。虽然现在无线网络普及的速度很快，但无线网络毕竟是个新鲜事物，因此很多网友对无线网络产品存在很多困惑。 </p>
<p>&nbsp;&nbsp;&nbsp; 今天我们从功能、应用、组网和成本四个方面为大家区分无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>和<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>。</p>
<div align="center">
<div align="center"><a href="http://product.pcpop.com/000024237/Picture/000239550.html" target="_blank"><img style="#" alt="初学必看!?无线AP与无线路由器的区别" src="http://img5.pcpop.com/ProductImages/500x375/0/239/000239550.jpg" border="1" /></a></div></div>
<div align="center">&nbsp;</div>
<div align="center"><img src="http://www.pcpop.com/doc/Image/popup.gif" border="0" />&nbsp; <a href="http://product.pcpop.com/wireless_Router/00253_1.html" target="_blank">华硕</a>迷你级别AP WL-330g</div>
<p>&nbsp;&nbsp;&nbsp; 当前的<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>可以分为两类：单纯型AP和扩展型AP。</p>
<p>&nbsp;&nbsp;&nbsp; 单纯型AP的功能相对来比较简单缺少路由功能，只能相当无线<a href="http://product.pcpop.com/Hub/00000_1.html" target="_blank">集线器</a>;对于此类<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>，还没有发现可以互连的产品!!而扩展型AP也就是市场上的无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>，由于它功能比较全面，大多数扩展型AP不但具有路由交换功能还有DHCP、网络<a href="http://product.pcpop.com/Firewall/00000_1.html" target="_blank">防火墙</a>等功能。</p>
<div align="center"><a href="http://product.pcpop.com/000024237/Picture/000239551.html" target="_blank"><img style="#" alt="初学必看!?无线AP与无线路由器的区别" src="http://img5.pcpop.com/ProductImages/500x375/0/239/000239551.jpg" border="1" /></a></div>
<div align="center">&nbsp;</div>
<div align="center"><img src="http://www.pcpop.com/doc/Image/popup.gif" border="0" />&nbsp; AP一般只有一个WAN口</div>
<p>&nbsp;&nbsp;&nbsp; 现在市场上的<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>大多属于扩展型AP，对于扩展型AP来说，它们在短距离范围内是可以相互联的;如果大家需要传输的距离比较远，那么就需要无线网桥和专门的天线等设备!!其实无线网桥也是<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>的一种。</p>
<p><strong>首先从功能上区分：</strong></p>
<p>&nbsp;&nbsp;&nbsp; <a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>：AP为Access Point简称，一般翻译为&ldquo;无线访问节点&rdquo;，它主要是提供无线<a href="http://product.pcpop.com/Workstation/00000_1.html" target="_blank">工作站</a>对有线局域网和从有线局域网对无线<a href="http://product.pcpop.com/Workstation/00000_1.html" target="_blank">工作站</a>的访问，在访问接入点覆盖范围内的无线<a href="http://product.pcpop.com/Workstation/00000_1.html" target="_blank">工作站</a>可以通过它进行相互通信。通俗的讲，<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>是无线网和有线网之间沟通的桥梁。由于<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>的覆盖范围是一个向外扩散的圆形区域，因此，应当尽量把<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>放置在无线网络的中心位置，而且各无线客户端与<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>的直线距离最好不要超过30米，以避免因通讯信号衰减过多而导致通信失败。</p>
<div align="center"><a href="http://product.pcpop.com/000024155/Picture/000217900.html" target="_blank"><img style="#" alt="初学必看!?无线AP与无线路由器的区别" src="http://img5.pcpop.com/ProductImages/500x375/0/217/000217900.jpg" border="1" /></a></div>
<div align="center">&nbsp;</div>
<div align="center"><img src="http://www.pcpop.com/doc/Image/popup.gif" border="0" />&nbsp; 无线路由一般除了WAN口还有4个有线LAN口</div>
<p>&nbsp;&nbsp;&nbsp; 无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>:无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>是单纯型AP与宽带<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>的一种结合体;它借助于<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>功能，可实现家庭无线网络中的Internet连接共享，实现<a href="http://product.pcpop.com/ADSL/00000_1.html" target="_blank">ADSL</a>和小区宽带的无线共享接入 ，另外，无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>可以把通过它进行无线和有线连接的终端都分配到一个子网，这样子网内的各种设备交换数据就非常方便。</p>
<p><strong>可以这样说：</strong></p>
<p>&nbsp;&nbsp;&nbsp; 无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>就是AP、路由功能和<a href="http://product.pcpop.com/Exchange/00000_1.html" target="_blank">交换机</a>的集合体，支持有线无线组成同一子网，直接接上MODEM。</p>
<p>&nbsp;&nbsp;&nbsp; <a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>相当于一个无线<a href="http://product.pcpop.com/Exchange/00000_1.html" target="_blank">交换机</a>，接在有线<a href="http://product.pcpop.com/Exchange/00000_1.html" target="_blank">交换机</a>或<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>上，为跟它连接的无线<a href="http://product.pcpop.com/Networkcard/00000_1.html" target="_blank">网卡</a>从<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>那里分得IP。</p>
<p><strong>从应用上区分：</strong></p>
<p>&nbsp;&nbsp;&nbsp; 独立的AP在那些需要大量AP来进行大面积覆盖的公司使用得比较多，所有AP通过以太网连接起来并连到独立的无线局域网<a href="http://product.pcpop.com/Firewall/00000_1.html" target="_blank">防火墙</a>。</p>
<div align="center"><a href="http://product.pcpop.com/000024045/Picture/000206749.html" target="_blank"><img style="#" alt="初学必看!?无线AP与无线路由器的区别" src="http://img5.pcpop.com/ProductImages/500x375/0/206/000206749.jpg" border="1" /></a></div>
<div align="center">&nbsp;</div>
<div align="center"><img src="http://www.pcpop.com/doc/Image/popup.gif" border="0" />&nbsp; 十分高档的<a href="http://product.pcpop.com/wireless_Router/00735_1.html" target="_blank">Linksys</a><a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a> WRT54G 家庭无线梦幻装备</div>
<p>&nbsp;&nbsp;&nbsp; 无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>在SOHO的环境中使用得比较多，在这种环境下，一个AP就足够了。这样的话，整合了宽带接入<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>和AP的无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>就提供了单个机器的解决方案，它比起两个分开的机器的方案要容易管理和便宜一些。无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>一般包括了网络地址转换(NAT)协议，以支持无线局域网用户的网络连接共享--这是SOHO环境中很好用的一个功能。它们也可能有基本的<a href="http://product.pcpop.com/Firewall/00000_1.html" target="_blank">防火墙</a>或者信息包过滤器来防止端口扫描软件和其他针对宽带连接的攻击。最后，大多数无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>包括一个四个端口的以太网<a href="http://product.pcpop.com/Commutator/00000_1.html" target="_blank">转换器</a>，可以连接几台有线的PC。这对于管理<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>或者把一台打印机连上局域网来说非常方便。</p>
<p><strong>从组网拓扑图上分析：</strong></p>
<div align="center">
<div align="center"><img style="#" alt="初学必看!?无线AP与无线路由器的区别" src="http://img5.pcpop.com/ArticleImages/0x0/0/348/000348028.jpg" border="1" /></div></div>
<p>&nbsp;&nbsp;&nbsp; AP不能直接跟<a href="http://product.pcpop.com/ADSL/00000_1.html" target="_blank">ADSL</a> MODEM相连，所以在使用时必须再添加一台<a href="http://product.pcpop.com/Exchange/00000_1.html" target="_blank">交换机</a>或者<a href="http://product.pcpop.com/Hub/00000_1.html" target="_blank">集线器</a>。</p>
<div align="center"><img style="#" alt="初学必看!?无线AP与无线路由器的区别" src="http://img5.pcpop.com/ArticleImages/0x0/0/348/000348029.jpg" border="1" /></div>
<div align="center">&nbsp;</div>
<div align="center"><img src="http://www.pcpop.com/doc/Image/popup.gif" border="0" />&nbsp; 无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>中间省掉了<a href="http://product.pcpop.com/Hub/00000_1.html" target="_blank">集线器</a>或者<a href="http://product.pcpop.com/Exchange/00000_1.html" target="_blank">交换机</a></div>
<p>&nbsp;&nbsp;&nbsp; 使用上面的拓扑架构时，AP和无线路由的用法是一样的。不过，大部分无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>由于具有宽带拨号的能力，因此可以直接跟<a href="http://product.pcpop.com/ADSL/00000_1.html" target="_blank">ADSL</a> MODEM连接进行宽带共享:</p>
<p><strong>最后从成本上来分析：</strong></p>
<p>&nbsp;&nbsp;&nbsp; 802.11B的<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>和无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>的价钱相差不多， 一般无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>会贵100元左右;802.11G则要看具体情况而言，根据品牌和附加功能的不同两者价格会有几百元不等的差距，不过便宜的产品差价也是100多元。</p>
<p>&nbsp;&nbsp;&nbsp; 现在您知道如果要组建无线网络，您需要的是<a href="http://product.pcpop.com/wireless_AP/00000_1.html" target="_blank">无线AP</a>，还是无线<a href="http://product.pcpop.com/Router/00000_1.html" target="_blank">路由器</a>了吧！</p>
<p>解答二、</p>
<p>无线AP（Access Point）:即无线接入点，它是用于无线网络的无线交换机，也是无线网络的核心。无线AP是移动计算机用户进入有线网络的接入点，主要用于宽带家庭、大楼内部以及园区内部，典型距离覆盖几十米至上百米，目前主要技术为802.11系列。大多数无线AP还带有接入点客户端模式（AP client），可以和其它AP进行无线连接，延展网络的覆盖范围。 <br /><br />无线AP（AP，Access Point，无线访问节点、会话点或存取桥接器）是一个包含很广的名称，它不仅包含单纯性无线接入点（无线AP），也同样是无线路由器（含无线网关、无线网桥）等类设备的统称。各种文章或厂家在面对无线AP时的称呼目前比较混乱，但随着无线路由器的普及，目前的情况下如没有特别的说明，我们一般还是只将所称呼的无线AP理解为单纯性无线AP，以示和无线路由器加以区分。它主要是提供无线工作站对有线局域网和从有线局域网对无线工作站的访问，在访问接入点覆盖范围内的无线工作站可以通过它进行相互通信。单纯性无线AP就是一个无线的交换机，仅仅是提供一个无线信号发射的功能。单纯性无线AP的工作原理是将网络信号通过双绞线传送过来，经过AP产品的编译，将电信号转换成为无线电讯号发送出来，形成无线网的覆盖。根据不同的功率，其可以实现不同程度、不同范围的网络覆盖，一般无线AP的最大覆盖距离可达 300米。多数单纯性无线AP本身不具备路由功能，包括DNS、DHCP、Firewall在内的服务器功能都必须有独立的路由或是计算机来完成。目前大多数的无线 AP都支持多用户（30-100台电脑）接入，数据加密，多速率发送等功能，在家庭、办公室内，一个无线AP便可实现所有电脑的无线接入。单纯性无线AP亦可对装有无线网卡的电脑做必要的控制和管理。单纯性无线AP即可以通过10BASE-T（WAN）端口与内置路由功能的ADSL MODEM或CABLE MODEM（CM）直接相连，也可以在使用时通过交换机/集线器、宽带路由器再接入有线网络。无线AP跟无线路由器类似，按照协议标准本身来说IEEE 802.11b和IEEE 802.11g的覆盖范围是室内100米、室外300米。这个数值仅是理论值，在实际应用中，会碰到各种障碍物，其中以玻璃、木板、石膏墙对无线信号的影响最小，而混凝土墙壁和铁对无线信号的屏蔽最大。所以通常实际使用范围是：室内30米、室外100米（没有障碍物）。因此，作为无线网络中重要的环节无线接入点、无线网关也就是无线AP（Access Point），它的作用其实就类似于我们常用的有线网络中的集线器。在那些需要大量AP来进行大面积覆盖的公司使用得比较多，所有AP通过以太网连接起来并连到独立的</p>
<p>&nbsp;</p>
<!--Content End-->]]></description>
		</item>
		    
		
		<item>
			<title>好好理解数据链路层</title>
			<link>http://yliangliang.blog.sohu.com/96641629.html</link>
			<comments>http://yliangliang.blog.sohu.com/96641629.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Thu, 7 Aug 2008 14:21:50 +0800</pubDate>
			<category>通信网络</category>
			<guid>http://yliangliang.blog.sohu.com/96641629.html</guid>
			<description><![CDATA[<p><font color="#000000" size="2">在ISO的OSI参考模型中，数据链路层的功能相对简单。它只负责将数据从一个节点可靠地传输到相邻节点。但在局域网中，多个节点共享传输介质，必须有某种机制来决定下一个时刻，哪个设备占用传输介质传送数据。因此，局域网的数据链路层要有介质访问控制的功能。为此，一般将数据链路层又划分成两个子层：&nbsp;<br /><br />逻辑链路控制LLC（Logic&nbsp;Line&nbsp;Control）子层&nbsp;<br /><br />介质访问控制MAC（Media&nbsp;Access&nbsp;Control）子层&nbsp;<br /><br /><br />其中，LLC子层负责向其上层提供服务；MAC子层的主要功能包括数据帧的封装/卸装，帧的寻址和识别，帧的接收与发送，链路的管理，帧的差错控制等。MAC子层的存在屏蔽了不同物理链路种类的差异性。&nbsp;<br /><br />在MAC子层的诸多功能中，非常重要的一项功能是仲裁介质的使用权，即规定站点何时可以使用通信介质。&nbsp;<br /><br />实际上，局域网技术中是采用具有冲突检测的载波侦听多路访问（Carrier&nbsp;Sense&nbsp;Multiple&nbsp;Access&nbsp;/&nbsp;Collision&nbsp;Detection，CSMA/CD）这种介质访问方法的。&nbsp;<br /><br />在这种介质访问方法中规定：在发送数据之前，一个节点必须首先侦听网线上的载波，如果在9.6微秒的时间之内没有检测到载波（说明通信介质空闲），节点才可以发送一帧数据。&nbsp;<br /><br />如果两个节点同时检测到介质空闲并同时发送出一帧数据，则会导致数据帧的冲突，双方的数据帧均被破坏。一方面，检测到冲突的节点会发送&quot;冲突增强&quot;信号（32比特的&quot;1&quot;）通知介质上的每个节点发生了冲突。另一方面，发生冲突的节点在再次发送自己的数据帧之前会各自等待一段随机的时间。&nbsp;<br /><br />随着以太网上节点数量的增加，冲突的数量也随之增加，而整个网段的有效带宽将随之减少。</font></p>
<p><font color="#000000" size="2">1. 数据链路层的功能是什么？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 负责网络中相邻节点之间可靠的数据传输，并进行有效的流量和差错控制。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 具体地讲，以一次数据发送为例，数据链路层的作用包括数据链路的建立、维护与拆除、帧包装、帧传输、帧同步、帧的差错控制以及流量控制。</font></p>
<p><font color="#000000" size="2">2. 如何区分不同类型的局域网？</font></p>
<p><font color="#000000" size="2">不同类型的局域网，其MAC子层所使用的规范不同。</font></p>
<p><font color="#000000" size="2">3. 以太网采取什么样的数据传输机制？这种传输机制的工作原理如何？</font></p>
<p><font color="#000000" size="2">以太网采用了CSMA/CD的数据传输机制，即带冲突检测的载波监听多路访问。</font></p>
<p><font color="#000000" size="2">CSMA/CD的工作过程是：发送前先监听信道是否空闲，若空闲则立即发送数据。在发送时，边发边继续监听。若监听到冲突，则立即停止发送。等待一段随机时间（称为退避）以后，再重新尝试。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 也就是说CSMA/CD实际上是一种访问介质的算法也就是MAC算法：一次只允许一个工作站能够在介质上进行数据传输。使用CSMA/CD传输机制的以太网必须考虑所有的传输请求，并且能够决定在某一个时刻哪个设备能够使用信道，即，其解决的是秩序问题。</font></p>
<p><font color="#000000" size="2">4. MAC地址是用来做什么的？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; MAC地址是制造在网络设备上的一个硬件地址，这个地址全球唯一，用来标识设备。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; MAC地址一共由48位二进制位组成，其中前24位用来标识厂商，后24位用来标识设备。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; MAC地址分物理地址和逻辑地址两类，出厂时固化在设备中的MAC地址就是物理地址。链路层在封装数据帧时，把写在帧中的MAC地址的第8位由0改为1，这个新的MAC地址就是一个逻辑地址。</font></p>
<p><font color="#000000" size="2">5. 802.3以太网帧由哪六个域构成？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 前导码；目的MAC地址；源MAC地址；类型/长度，当值大于0600H时，用来表示上层协议的类型，当值小于0600H时，用来表示后续数据的字节长度；数据，出于CSMA/CD算法，数据的最小长度为46字节；帧校验序列，是从目的地址域开始，到数据域结束，这部分的校验和。</font></p>
<p><font color="#000000" size="2">6. 数据链路层分成哪两个子层，每层对应的协议是什么？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 分为两个子层：MAC子层，也叫介质访问控制子层；LLC子层，也叫逻辑链路控制子层。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; MAC子层的规范称为IEEE802.3，LLC子层的规范称为IEEE802.2。</font></p>
<p><font color="#000000" size="2">7. MAC子层的功能有哪些？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 将上层交下来的数据封装成帧进行发送（接收时进行相反的过程，将帧解封装）。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 实现和维护介质访问控制协议，如CSMA/CD。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 差错检测。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; MAC帧的寻址，即MAC帧由哪个站发出，被哪个站接收。</font></p>
<p><font color="#000000" size="2">8. LLC子层的功能有哪些？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 建立和释放数据链路层的逻辑连接。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 提供与上层的接口。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 给帧加上序号。</font></p>
<p><font color="#000000" size="2">9. 以太网命名方法中，base和broad的区别是什么？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; Base表示采用的信号是基带的，即物理介质是由以太网专用的，不与其他的通信系统共享。</font></p>
<p><font color="#000000" size="2">Broad表示信号是宽带的，即物理介质能够同时支持以太网和其他非以太网的服务。</font></p>
<p><font color="#000000" size="2">10. 交换机进行数据转发的工作原理如何？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 交换机在RAM中保存着一张MAC地址表，MAC地址表为MAC地址与端口号对应的一张表。交换机的MAC地址表的形成与表的作用主要包含以下几点：</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp; ⑴学习：MAC地址表是交换机通过学习接收的数据帧的源MAC地址而形成的。当交换机收一个数据帧时，首先查看帧中的源MAC地址，再查MAC地址表，如果表中没有这个MAC地址，则添加这个条目。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp; ⑵转发：交换机根据MAC地址表单播转发数据帧。交换机转发数据帧时，先查看帧中的目标MAC地址，再查表，根据表中对应的端口号，将数据转发到对应的端口去。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp; ⑶广播：如果目标地址在MAC地址表中没有，交换机就向除接收到该数据帧的端口外的其他所有端口广播该数据帧。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp; ⑷更新：交换机如果发现表中已经存在的一个MAC地址的来源端口与表中的不同，则用新的端口更新原来的端口。MAC地址表中条目的老化时间是300秒。</font></p>
<p><font color="#000000" size="2">11. 按信息传送的方向，可以将传输方式分为哪三种？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 单工：只有一个信道，传输方向是单向的。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 半双工：只有一个信道，在同一时刻，只能是单向传输。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 全双工：双信道，同时可以有双向数据传输。</font></p>
<p><font color="#000000" size="2">12. 什么是冲突域？什么是广播域？</font></p>
<p><font color="#000000" size="2">冲突域：处于同一网段上所有节点的集合，当某两个以上的节点同时发送数据时，会产生冲突的区域。</font></p>
<p><font color="#000000" size="2">广播域：接收同样广播消息的节点的集合，当某个节点发送广播消息，能够接收到这个消息的所有的节点属于同一广播域。</font></p>
<p><font color="#000000" size="2">13. 什么设备能分割冲突域？</font></p>
<p><font color="#000000" size="2">交换机为需要通信的两台主机直接建立专用的通信信道，这个专用信道是通过交换机中的一个叫做交叉点阵的电路结构来实现的。</font></p>
<p><font color="#000000" size="2">在实现了专用信道的结构中，每个端口关闭了载波侦听和冲突检测的功能。</font></p>
<p><font color="#000000" size="2">14. 交换机能够分割广播域吗？</font></p>
<p><font color="#000000" size="2">交换机分割冲突域，但是不分割广播域，即交换机的所有端口属于同一个广播域。</font></p>
<p><font color="#000000" size="2">15. 交换机有哪三种交换方式？各有什么优缺点？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 存储转发：交换机在转发帧之前需要接收缓存整个帧，优点是可以查看FCS，检验帧的正确性后再进行转发，防止错误的帧再转发出去，造成网络资源浪费。缺点是交换机转发数据处理延时较大。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 快速转发：它只检查数据包的包头，所以具有延迟小、交换速度快的优点。缺点是，因为数据包内容并没有被以太网交换机保存下来，所以无法检查所传送的数据包是否有误，不能提供错误检测能力。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 分段过滤：交换机接收到64个字节后，就开始转发。根据以太网规范，如果发送64字节后，仍检测不到冲突，则没有冲突。其特点是延时较小，但是仍然不能检查数据帧的FCS字段。</font></p>
<p><font color="#000000" size="2">16. 思科交换机的Console端口的默认设置如何？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 端口速率：9600Bps</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 数据位：8</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 奇偶校验：无</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 停止位：1</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 流控：无</font></p>
<p><font color="#000000" size="2">17. 交换机的常用配置模式有哪些？进入相应模式的操作命令是什么？</font></p>
<p><font color="#000000" size="2">用户模式：switch&gt;</font></p>
<p><font color="#000000" size="2">特权模式：switch&gt;enable</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch#</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; show命令在此模式下使用</font></p>
<p><font color="#000000" size="2">全局配置模式：swhtch# config terminal</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(config)#</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此模式下做的配置对整个交换机生效</font></p>
<p><font color="#000000" size="2">接口配置模式：switch(config)# interface f0/1</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(config-if)#</font></p>
<p><font color="#000000" size="2">Line模式：switch(config)# line console 0</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(config-line)#</font></p>
<p><font color="#000000" size="2">18. 当交换机接收到的数据帧中的源MAC地址在MAC地址表中没有的时候，交换机做的动作是什么？</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 学习交换机的MAC地址。</font></p>
<p><font color="#000000" size="2">19. 简述交换机启动过程中主要出现哪些信息。</font></p>
<p><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; 硬件平台、软件版本、MAC地址、IOS名称及一些自检信息和序列号。</font></p>
<p>.数据链路层 <font color="#ff0000">数据链路层建立在物理传输能力的基础上，以帧为单位传输数据</font>。这一层的主要任务就是进行数据封装和数据链接的建立。封装的数据信息中，地址段含有发送节点和接收节点的地址，控制段用来表示数据连接帧的类型，数据段包含实际要传输的数据，差错控制段用来检测传输中帧出现的错误。<br /><br />数据链路层可使用的协议有SLIP、PPP、X25和帧中继等。<font color="#ff0000">常见的集线器和低档的交换机网络设备</font>都是工作在这个层次上，MODEM之类的拨号设备也是。工作在这个层次上的交换机俗称&ldquo;<font color="#ff0000">第二层交换机</font>&rdquo;。<br /><br /><font color="#ff0000">数据链路可以粗略地理解为数据通道</font>。物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是长期的，连接是有生存期的。在连接生存期内，收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两个过程。这种建立起来的数据收发关系就叫做数据链路。而在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错，为了弥补物理层上的不足，为上层提供无差错的数据传输，就要能对数据进行检错和纠错。<font color="#ff0000">数据链路的建立、拆除和对数据的检错、纠错是数据链路层的基本任务</font>。<br /><br />链路层为网络层提供数据传送服务，这种服务要依靠本层所具备的功能来实现。链路层应具备的<font color="#ff0000">功能</font>如下：<br /><br /></p>
<ul>
<li>链路连接的建立、拆除及分离。 
</li><li>帧定界和帧同步。链路层的数据传输单元是帧，协议不同，帧的长短和界面也有差别，但无论如何必须对帧进行定界。 
</li><li>顺序控制，指对帧的收发顺序的控制。 
</li><li>差错检测和恢复。还有链路标识、流量控制等。差错检测多用方阵码校验和循环码校验来检测信道上数据的误码，而帧丢失等用序号检测。各种错误的恢复则常靠反馈重发技术来完成。 </li></ul>
<p>数据链路层协议是为了对等实体间保持一致而制定的，也是为了顺利完成对网络层的服务。主要协议如下。<br /><br /></p>
<ul>
<li>ISO 1745-1975 数据通信系统的基本控制规程。这是一种面向字符的标准，利用10个控制字符完成链路的建立、拆除及数据交换。对帧的收发情况及差错恢复也靠这些字符来完成。ISO 1155、ISO 1177、ISO 2626、ISO 2629等标准的配合使用可形成多种链路控制和数据传输方式。 
</li><li>ISO 3309-1984（HDLC帧结构）、ISO 4335-1984（HDLC规程要素）、ISO 7809-1984（HDLC规程类型汇编）这3个标准都是为面向字节的数据传输控制而制定的，有人习惯上把这3个标准组合称为高级链路控制规程。 
</li><li>ISO 7776 DTE数据链路层规程。与CCITT X.25 LAB&ldquo;平衡型链路访问规程&rdquo;相兼容。 </li></ul>
<p>独立的链路层产品中最常见的是网卡，网桥也是链路层产品。数据链路层将本质上不可靠的传输媒体变成可靠的传输通路提供给网络层。在IEEE 802.3情况下，数据链路层分成了两个<font color="#ff0000">子层</font>，一个是<font color="#ff0000">逻辑链路控制</font>，另一个是<font color="#ff0000">媒体访问控制</font>。<br /><font size="2">&nbsp;&nbsp; 传输层是两台计算机经过网络进行数据通信时，第一个端到端的层次，具有缓冲作用。当网络层的服务质量不能满足要求时，它将提高服务，以满足高层的要求；当网络层服务质量较好时，它只做很少的工作。传输层还可进行复用，即在一个网络连接上创建多个逻辑连接。传输层也称为&ldquo;<font color="#ff0000">运输层</font>&rdquo;，它只存在于端开放系统中，是介于低3层通信子网系统和高3层之间的一层，但是很重要的一层，因为它是源端到目的端对数据传送进行控制从低到高的最后一层。<br /><br />传输层还具备<font color="#ff0000">差错恢复</font>、<font color="#ff0000">流量控制</font>等功能，以此对会话层屏蔽通信子网在这些方面的细节与差异。传输层面对的数据对象已不是网络地址和主机地址，而是和会话层的界面端口。上述功能的<font color="#ff0000">最终目的</font>是为会话提供可靠的、无误的数据传输。传输层的服务一般要经历<font color="#ff0000">传输连接建立</font>、<font color="#ff0000">数据传送</font>和<font color="#ff0000">传输连接释放</font>3个阶段才算完成一个完整的服务过程，而在数据传送阶段又分为一般数据传送和加速数据传送两种。<br /><br />传输层的<font color="#ff0000">服务</font>分成以下三大类，基本可以满足对传送质量、传送速度和传送费用的各种不同需要。<br /><br />A类：网络连接具有可接受的差错率和可接受的故障通知率，A类服务是可靠的网络服务，一般指虚电路服务。<br /><br />C类：网络连接具有不可接受的差错率，C类的服务质量最差，提供数据报服务，无线电分组交换网均属此类。<br /><br />B类：网络连接具有可接受的差错率和不可接受的故障通知率，B类服务介于A类与C类之间，在广域网和因特网中多是提供B类服务。<br /><br />传输层的协议标准有以下两种：<br /><br /></font></p>
<ul>
<li>ISO 8072 面向连接的传输服务定义。 
</li><li>ISO 8073 面向连接的传输协议规范。 </li></ul>
<p>传输层的<font color="#ff0000">功能</font>包括：映像传输地址到网络地址、多路复用与分割、传输连接的建立与释放、分段与重新组装、组块与分块。</p>]]></description>
		</item>
		    
		
		<item>
			<title>WiMax与WiFi的比较 解除你的误解与困惑</title>
			<link>http://yliangliang.blog.sohu.com/96008765.html</link>
			<comments>http://yliangliang.blog.sohu.com/96008765.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Thu, 31 Jul 2008 12:30:43 +0800</pubDate>
			<category>通信网络</category>
			<guid>http://yliangliang.blog.sohu.com/96008765.html</guid>
			<description><![CDATA[WiMAX是IEEE802.16以太网络的界面标准，就像Wi-Fi 是802.11以太网络的标准一样。 这两年来，WiMax 已经成为无线网络界最流行的专用字汇。 
<p>　　但是&hellip;&hellip; 
</p><p>　　1. WiMax的传输范围一定比WiFi大吗？ 
</p><p>　　WiMAX的设计可以在需要执照的无线频段，或是公用的无线频段运作。只要系统企业拥有该无线频段的执照，而让WiMAX在授权频段运作时，WiMAX便可以用更多频宽、更多时段与更强的功率进行发送。一般来说，只有无线ISP 企业才会使用授权频宽的WiMAX 技术。至于Wi-Fi 的设计则只在公用频段中的2.4GHz到5GHZ之间工作。美国的联邦通讯委员会（FCC ）规定Wi-Fi 一般的传输功率要在1 毫瓦到100 毫瓦之间。一般的WiMAX 的传输功率大约100 千瓦，所以Wi-Fi 的功率大约是WiMAX 的一百万分之一。使用WiFi基地台一百万倍传输功率的WiMAX 基地台，会有较大的传输距离，自然毫无疑问。 
</p><p>　　虽然有授权频段的WiMAX显然有较长的传输范围，也不代表只要有钱就要赶着去买个WiMAX基地台。你必须要有一个授权的无线电频段，就像一个音乐电台也必须要有频段执照，才能在空中发射无线电波。而如果WiMAX跟Wi-Fi 一样放在未授权的频段，则它的传输优势就马上消失了。Wimax 跟Wi-Fi 都是基于无线频段传输的技术，所以受同样的物理定律限制。反之，如果在同样的条件下，让Wi-Fi 使用授权频宽，Wi-Fi 也可以跟WiMAX 一样快。另外，虽然WiMAX 可以利用较新的多路径技术。目前新推出的pre-N MIMO（多天线双向传输）技术 Wi-Fi 产品也使用了该技术。 
</p><p>　　2. WiMax 的速度一定比WiFi快吗？ 
</p><p>　　WiMAX的拥护者常常在大肆宣扬该技术的速度优势。虽然WiMAX声称最高速度每秒70mbyte，然而最新的Wi-Fi MIMO理论上也有每秒108mbyte 的最高速度，而实际环境下也有45mbps的速度。我可以去商场买一个Wi-Fi MIMO的基地台回家组装，自行确认其速度约为45mbps，然而WiMAX 的产品至今却尚未出现。WiMAX 技术同样受技术问题与物理定律所限制，要谈论WiMAX 的实际频宽还是太早。 
</p><p>　　无线ISP企业在建置WiMAX的时候，同样会遇到现今其他无线企业会遇到的频宽竞争难题。授权频段的WiMAX系统涵盖范围极大，约数十公里，其建置的困难可说是一把两刃之剑。这是因为无线覆盖范围非常之大，里面会有极多的使用者同时竞争同样的频宽。就算无线ISP 企业使用多个独立的频道来运作，在同一个频道中，还是会有数倍于Wi-Fi 的使用人数。我所认识的每一家无线ISP 企业，不管是无线微波企业、3G行动企业，到卫星电话企业，同样都会遇到频宽竞争与QoS （服务品质）管控的问题。 
</p><p>　　如果网络的延迟在200到2000毫秒间游移，这种网络根本不可能使用VoIP、视讯会议、网络游戏，或任何其他的即时应用。虽然已经有人谈论将WiMAX加上QoS机制，以供VoIP使用，然而实作方法与实作效益仍旧有待观察。而在Wi-Fi 方面，Spectralink 上的QoS 实作成效已被证实，同时802.11e 的无线QoS 标准也将要推出。无线ISP 企业的WiMAX 建置一定会比非授权的WiMAX 或Wi-Fi 基地台建置来得慢，因为对无线ISP 企业不可能会去让少数用户使用整个频段。 
</p><p>　　私人而使用公用频段的WiMAX基地台，与Wi-Fi基地台的设置到底何者为快，将取决于产品的推出。由于理论上他们的传输功率与频段大致相同，而市面上已经有大量而且成熟的Wi-Fi产品，我个人会赌Wi-Fi 这一边赢。Wi-Fi 在非授权频段这一边已经领先一大步，很难想像WiMAX 在这个领域有办法成功。这是为什么WiMAX 多是往无线ISP 企业的方向来推动。 
</p><p>　　3. WiMax一定比WiFi安全吗？ 
</p><p>　　WiMAX比Wi-Fi更安全是另一个盛传的错误观点。事实上WiMAX使用的是与Wi-Fi 的WPA2标准相似的认证与加密方法。其中的微小区别在于WiMAX 的安全机制使用3DES或AES 加密，然后再加上EAP ，这种方法叫PKM-EAP.而另一方面Wi-Fi 的WPA2则是用典型的PEAP认证与AES 加密。没人可以说其中一个一定绝对比另一个安全，因为好的安全性往往取决于实际建置方式的正确与否。 
</p><p>　　让社会大众知道WiMAX的正反两面十分重要。WiMAX技术与802.16标准是十分重要的，因为他是无线ISP企业未来合理的演进方向。但是它绝非无线网络技术万能而且终极的解决方案。WiMAX 或其他的无线网络技术将会互补，同时这些无线技术也不可能取代有线技术的需求。无线的连线方式必定更有行动力、更方便。至于有线的连线方式，只要能牵上线，则一定更快，更可靠。我们必须扬弃所有关于WiMAX 的不实谣言，务实看待这个技术的真实面貌。 
</p><p>　　4. WiMax一定会取代WiFi吗？ 
</p><p>　　最狂热的WiMAX支持者甚至辩称WiMAX将会完完全全的取代Wi-Fi，让Wi-Fi成为历史。这种想法说好听一点是过度乐观，过难听一点则是荒谬无比。WiMAX 在整合与标准化无线微波ISP 市场的过程中，将会有一席之地，但它并不会直接的与大多数的Wi-Fi 建置竞争。WiMAX 将会聚焦于授权频段的无线ISP 市场，而Wi-Fi 将会继续主导私用的无照无线市场，如公司或家用的无线网络。WiMAX 与Wi-Fi 唯一会重叠的地方，大概就是收费的Wi-Fi 存取点了。 
</p><p>　　由于WiMAX连线的涵盖面积较大，以数十公里计，而Wi-Fi存取点是由数十米的小片面积所组成，所以WiMAX在全球涵盖上会有占有优势。但是因为目前的市场占有率较高，以及因为小范围、同时竞争的用户人数较少，造成Wi-Fi 较快、延迟较小的特性，Wi-Fi 的收费存取点仍可能持续流行。至于WiMAX 是否能击败Wi-Fi 的收费存取点，关键因素将是WiMAX 的QoS 机制是否良好实作，以及如何解决过多使用者的问题。如果WiMAX 技术跟现今的无线ISP 一样，具有过多使用者与高延迟的问题，它绝对不可能让Wi-Fi 收费存取点的需求消失。 </p>]]></description>
		</item>
		    
		
		<item>
			<title>AVS-M与H.264(Baseline)视频解码器结构的分析</title>
			<link>http://yliangliang.blog.sohu.com/94661293.html</link>
			<comments>http://yliangliang.blog.sohu.com/94661293.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Tue, 15 Jul 2008 22:04:56 +0800</pubDate>
			<category>视频图像处理</category>
			<guid>http://yliangliang.blog.sohu.com/94661293.html</guid>
			<description><![CDATA[&nbsp;H.264是JVT组织起草的一个覆盖多种应用和面向多种传输环境的国际标准，它规定了三种档次，基本档次（Baseline profile）、主要档次(Main profile)和扩展档次(Extended profile)，其中基本档次利用I片和P片支持帧内和帧间编码，支持利用基于上下文的自适应的变长编码进行的熵编码（CAVLC），主要用于会议电视、可视电话和无线通信等实时视频通信。 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AVS（Audio video coding）标准是由我国自主制定，拥有自主知识产权的音视频编解码技术标准。AVS-M（Mobile video）是AVS系列标准中的第七部分&mdash;&mdash;移动视频，应用于数字存储媒体、宽带视频业务、远程监控和可视电话等。 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AVS-M和H.264（Baseline）视频解码器在结构上十分相似，但又各有其核心思想，本文基于JM10.2和WM3.3源代码对两解码器的关键技术作了详细分析。程序中并未单独有H.264（Baseline）的代码，是笔者从JM10.2中抽取出来分析的，下文中H.264均表示从基本档次上考虑。 <br /><br />两种标准的解码器结构 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AVS-M和H.264视频解码器都只需考虑I帧和P帧（为了两标准视频解码器更好地比较，本文对H.264只考虑帧图像，不考虑场图像）的解码，总体思想是从比特流中解出头信息，产生预测块，熵解码得到的量化系数经反量化、反变换得到残差块，预测块和残差块相加后，经过滤波器即可得到重建的图像，其结构框图如图1所示。 <br />
<p align="center"><img style="WIDTH: 376px; HEIGHT: 125px" height="140" alt="" src="http://www.eefocus.com/data/08-04/34944_1207543504/1207543542.gif" width="400" /></p>
<p align="left">&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在实际应用当中，这两种标准设计出来的解码器应用领域有所不同，现就以下几个方面分析两种标准的差异。 <br /><br />1 比特流信息 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ①NALU(Network Abstract Layer Unit)：两标准中的比特流都是以NAL为单位，每个NAL单元包含一个RBSP，NALU的头信息定义了RBSP所属类型。类型一般包括序列参数集（SPS）、图像参数集（PPS）、增强信息（SEI）、条带（Slice）等，其中，SPS和PPS属于参数集，两标准采用参数集机制是为了将一些重要的序列、图像参数（解码图像尺寸、片组数、参考帧数、量化和滤波参数标记等）与其他参数分离，通过解码器先解码出来。此外，为了增强图像的清晰度，AVS-M增加了图像头（Picture head）信息。读取NALU过程中，每个NALU前有一个起始码0x000001，为防止内部0x000001序列竞争，H.264编码器在最后一字节前插入一个新的字节&mdash;&mdash;0x03，所以解码器检测到该序列时，需将0x03删掉，而AVS-M只需识别出起始码0x000001。 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ②读取宏块类型（mb type）和宏块编码模板（cbp）：编解码图像以宏块划分，一个宏块由一个16*16亮度块和相应的一个8*8cb和一个8*8cr色度块组成。 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (a) 两标准的帧内、帧间预测时宏块的划分是有区别的。H.264中，I_slice亮度块有Intra_4*4和Intra_16*16两种模式，色度块只有8*8模式；P_slice宏块分为16*16、16*8、8*16、8*8、8*4、4*8、4*4共7种模式。而AVS-M中，I_slice亮度块有I_4*4和I_Direct两模式，P_slice时宏块的划分和H.264中的划分一致。 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (b) 两标准的宏块cbp值计算也不相同。H.264中，Intra_16*16宏块的亮度（色度）cbp直接通过读mb type得到；非Intra_16*16宏块的亮度cbp=coded_block_pattern%16，色度cbp=coded_block_pattern/16 。其中，亮度cbp最低4位有效，每位决定对应宏块的残差系数是否为0；色度cbp为0时，对应残差系数为0，cbp为1时，DC残差系数不为0，AC系数为0，cbp为2时，DC、AC残差系数都不为0。AVS-M中，当宏块类型不是P_skip时，直接从码流中得到cbp的索引值，并以此索引值查表得到codenum值，再以codenum查表分别得到帧内／帧间cbp。此cbp为6位，每位代表宏块按8*8划分时是否包含非零系数，当变换系数不为0时，需进一步读cbp_4*4中每位值来判断一个8*8块中4个4*4块的系数是否为0。 <br /><br />2 帧内预测 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H.264中Intra_16*16亮度块和8*8色度块都有4种预测模式(垂直、水平、直流、平面)，AVS-M中8*8色度块只有3种(垂直、水平、直流)，H.264中Intra_4*4和AVS-M中的4*4亮度块都有9种预测模式，但排列顺序不一样。H.264中的Intra_4*4和AVS-M中的4*4亮度块的模式可以通过邻块的帧内模式来预测，预测方法不同。H.264中，当前亮度块的最可能模式由左块(A)、上块(B)中较小的决定，如果相邻块不存在，则A、B模块的模式置为DC。而预测模式的选定要看码流中标志信息&nbsp;prev_intra4*4_pred_mode，该标志为1时，则用最可能模式，该标志不为0时，还需看参数rem_intra4*4_pred_mode，如果它小于最可能模式，则预测模式即为rem_intra4*4_pred_mode，否则为rem_intra4*4_pred_mode+1。AVS-M中，左块(A)、上块(B)的预测模式（若不存在，置为-1）形成表格后，通过查表可获得当前块的最可能模式。对I_Direct,其预测模式即为最可能模式；对I_4*4，需看标志信息pred_mode_flag，该标志为0时，预测模式即为最可能模式；该标志为1时，当码流中读到的intra_luma_pred_mode小于最可能模式，则预测模式为最可能模式，否则，预测模式为intra_luma_pred_mode+1。另外， H.264中的Intra_16*16和色度预测模式从码流中读取，AVS-M的色度预测模式也从码流中读取。 <br /><br />3 帧间预测 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 两标准下亮度块的运动矢量等于预测运动矢量(MVPred)加上比特流中读取到的运动矢量差(MVD)。由于亮度MV精度为1/4像素，而色度精度为1/8像素，因此，色度块的运动矢量等于亮度块的两倍。AVS-M和H.264的当前亮度块E和邻块A、B、C、D的空间位置分别如图2、3所示。E的大小可以是16*16、16*8、8*16、8*8、8*4、4*8或4*4。显然，AVS-M中，A是与E的左下角样本紧邻的块，B、D与E的左上角样本紧邻的块，C是与E的右上角样本紧邻的块。H.264中，A是与E的左上角样本紧邻的块，B、D与E的左上角样本紧邻的块，C是与E的右上角样本紧邻的块。 <br /></p>
<p align="center"><img style="WIDTH: 214px; HEIGHT: 178px" height="223" alt="" src="http://www.eefocus.com/data/08-04/34944_1207543504/1207543581.jpg" width="300" /></p>
<p>&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; 图2 AVS-M预测块邻块位置 <br /></p>
<p align="center"><img style="WIDTH: 228px; HEIGHT: 184px" height="223" alt="" src="http://www.eefocus.com/data/08-04/34944_1207543504/1207543618(1).gif" width="300" /></p>
<p>&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;图3 H.264预测块邻块位置 </p>
<p>4 熵解码 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H.264中采用基于上下自适应的可变长编码（CAVLC），其原理： 4*4块残差数据经整数变换、量化后非零系数主要集中在低频部分，高频系数大部分是零，且高频位置上非零系数值大部分是+1和-1。AVS-M熵编码也采用变长编码技术，在AVS-M熵编码过程中，所有的语法元素和残差数据都是以指数哥伦布码的形式映射成二进制比特流。 <br /><br />5 环路滤波 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 两标准都是采用基于块的残差系数反变换、反量化，量化过程相对粗糙，反量化恢复的变换系数必定带来误差，另一方面，运动补偿块可能来自不同帧位置的内插样本块，将导致边界不连续，因此，需采用环路滤波来消除块预测误差造成的失真。H.264中根据相邻块模式、参考索引、运动矢量和解码块确定滤波强度，滤波强度参数Bs值为0～4，对于Bs为1～3的采用４抽头滤波器，对于Bs为4的采用6抽头滤波器。H.264中滤波器能适应片级、边界级和样点级的需要。而在AVS-M中根据当前宏块是帧内（帧间）编码宏块来选择帧内（帧间）滤波器，当满足滤波条件后，采用４抽头滤波器对边界先垂直后水平滤波。AVS-M滤波器相对H.264而言，像素少，强度弱，但在消除方块效应的同时能大大地减少滤波时间。 <br /><br />应用前景 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 直播卫星电视和高清电视是其中进展最快的项目。与整机厂商互动，AVS标准组可从实际应用中得到反馈，对标准、实现算法、软件、IP内核、专用芯片进行及时的修改和改进，从而真正适应产业的需求。 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上广电主持的卫星电视实验系统项目中的AVS编码器则采用了&ldquo;转码器+DSP&rdquo;的实现方案。该系统高度兼容MPEG-2，这是由于MPEG-2的节目较多，所以AVS与它有一个融合-取代的过程。如加密、用户管理、收费系统、编辑系统等其他配套系统不变。 <br /><br />总结 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由上分析可知，两种视频解码器结构有很多共同之处。目前，关于H.264视频解码器的优化、硬件移植的方法及其应用很多，这些也可被AVS-M采纳。本文根据优化H.264的相关文献中的一些方法对AVS-M作过软件上的优化。算法上的优化主要包括插值、环路滤波和熵解码的优化。插值时可以将像素分为内部像素和边界像素，避免重复的判断。环路滤波时每个4*4块中的每个点有相同的边界门限，其相应的滤波操作也可以4次完成。熵解码时，可通过重新建表减少转化程序。代码上的优化主要包括程序结构优化、循环展开、数据类型选择和数据的移动等，例如，Decode_one_macroblock函数中，可根据宏块类型采用不同的函数来解码，对临时的缓存区可简化。此外，对插值运算（可转化为矩阵运算）、反量化和反变换等涉及到矩阵运算的函数都可使用MMX/SSE指令集优化。 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H.264是国际通用标准，而AVS-M是我国自主制定的标准，因而，两标准兼容的视频解码器的出现是种必然。本课题接下来的工作即是在对已有结构对比分析的基础上结合两套代码，将两解码器结构相同部分进行复用，不同部分通过开关进行选择，实现对两种不同格式的码流进行识别并实时解码。 <br /></p>]]></description>
		</item>
		    
		
		<item>
			<title>H.264编码技术总结</title>
			<link>http://yliangliang.blog.sohu.com/94524053.html</link>
			<comments>http://yliangliang.blog.sohu.com/94524053.html#comment</comments>
			<dc:creator>FPGA技术研究－有间客栈（eda_yll）</dc:creator>
			<pubDate>Mon, 14 Jul 2008 16:18:07 +0800</pubDate>
			<category>视频图像处理</category>
			<guid>http://yliangliang.blog.sohu.com/94524053.html</guid>
			<description><![CDATA[<p><strong>一、H.264的制定过程和应用场合</strong></p>
<p>&nbsp;&nbsp;&nbsp; 在制订完最初的H.263标准之后，ITU-T的视频编码专家组（VCEG）将开发工作分为两部分：一部分称之为&ldquo;短期（short-term）&rdquo;计划，目的是给H.263增加一些新的特性（这一计划开发出了H.263+和H.263++）；另一部分被称为&ldquo;长期（long-term）&rdquo;计划，其最初的目标就是要制定出一个比当时其他的视频编码标准效率提高一倍的新标准。这一计划在1997年开始，其成果就是作为H.264前身的H.26L（起初叫H.263L）。在将近2001年底，由于H.26L优越的性能，ISO／IEC的MPEG专家组加入到VCEG中来，共同成立了联合视频小组（JVT），接管了H.26L的开发工作。这个组织的目标是：&ldquo;研究新的视频编码算法，其目标是在性能上要比以往制定的最好的标准提高很多。&rdquo;</p>
<p>&nbsp;&nbsp;&nbsp; 这一标准正式成为国际标准是2003年3月在泰国Pattaya举行的JVT第7次会议上通过的。由于该标准是由两个不同的组织共同制定的，因此有两个不同的名称：在ITU-T中，它的名字叫H.264；而在ISO／IEC中，它被称为MPEG-4的第10部分，即高级视频编码（AVC）。</p>
<p>&nbsp;&nbsp;&nbsp; H.264的应用场合相当广泛，包括可视电话（固定或移动）、实时视频会议系统、视频监控系统、因特网视频传输以及多媒体信息存储等。</p>
<p>&nbsp;&nbsp;&nbsp; 目前在国际上，加拿大的UB Video公司开发出了一套基于TMS320C64x系列的H.26L实时视频通信系统，它可以在160kbit/s的码率下获得与H.263+在320kbit/s下相同的图像质量。另一家加拿大的公司VideoLocus通过在系统中插入一块基于FPGA的硬件扩展卡，在P4平台上实现了H.264的实时编解码。</p>
<p><strong>二、 H.264的特点</strong></p>
<p>&nbsp;&nbsp;&nbsp; H.264在编码框架上还是沿用以往的MC-DCT结构，即运动补偿加变换编码的混合（hybrid）结构，因此它保留了一些先前标准的特点，如不受限制的运动矢量（unrestricted motion vectors），对运动矢量的中值预测（median prediction）等。然而，以下介绍的技术使得H.264比之前的视频编码标准在性能上有了很大的提高。应当指出的是，这个提高不是单靠某一项技术实现的，而是由各种不同技术带来的小的性能改进而共同产生的。</p>
<p>1. 帧内预测</p>
<p>&nbsp;&nbsp;&nbsp; 对I帧的编码是通过利用空间相关性而非时间相关性实现的。以前的标准只利用了一个宏块（macroblock）内部的相关性，而忽视了宏块之间的相关性，所以一般编码后的数据量较大。为了能进一步利用空间相关性，H.264引入了帧内预测以提高压缩效率。简单地说，帧内预测编码就是用周围邻近的像素值来预测当前的像素值，然后对预测误差进行编码。这种预测是基于块的，对于亮度分量（1uma），块的大小可以在16&times;16和4&times;4之间选择，16&times;16块有4种预测模式，4&times;4块有9种预测模式；对于色度分量（chroma），预测是对整个8&times;8块进行的，有4种预测模式。除了DC预测外，其他每种预测模式对应不同方向上的预测。</p>
<p>2. 帧间预测</p>
<p>&nbsp;&nbsp;&nbsp; 与以往的标准一样，H.264使用运动估计和运动补偿来消除时间冗余，但是它具有以下五个不同的特点：</p>
<p>（1）预测时所用块的大小可变</p>
<p>&nbsp;&nbsp;&nbsp; 由于基于块的运动模型假设块内的所有像素都做了相同的平移，在运动比较剧烈或者运动物体的边缘处这一假设会与实际出入较大，从而导致较大的预测误差，这时减小块的大小可以使假设在小的块中依然成立。另外小的块所造成的块效应相对也小，所以一般来说小的块可以提高预测的效果。</p>
<p>&nbsp;&nbsp;&nbsp; 为此，H.264一共采用了7种方式对一个宏块进行分割，每种方式下块的大小和形状都不相同，这就使编码器可以根据图像的内容选择最好的预测模式。</p>
<p>&nbsp;&nbsp;&nbsp; 与仅使用16&times;16块进行预测相比，使用不同大小和形状的块可以使码率节省15％以上。</p>
<p>（2）更精细的预测精度</p>
<p>&nbsp;&nbsp;&nbsp; 在H.264中，Luma分量的运动矢量（MV）使用1／4像素精度。Chroma分量的MV由luma MV导出，由于chroma分辨率是luma的一半（对4:2:0），所以其MV精度将为1／8，这也就是说1个单位的chroma MV所代表的位移仅为chroma分量取样点间距离的1／8。如此精细的预测精度较之整数精度可以使码率节省超过20％。</p>
<p>（3）多参考帧</p>
<p>&nbsp;&nbsp;&nbsp; H.264支持多参考帧预测（multiple reference frames），即可以有多于一个（最多5个）的在当前帧之前解码的帧可以作为参考帧产生对当前帧的预测（motion-compensated prediction）。这适用于视频序列中含有周期性运动的情况。采用这一技术，可以改善运动估计（ME）的性能，提高H.264解码器的错误恢复能力，但同时也增加了缓存的容量以及编解码器的复杂性。不过，H.264的提出是基于半导体技术的飞速发展，因此这两个负担在不久的将来会变得微不足道。较之只使用一个参考帧，使用5个参考帧可以节省码率5～10％。</p>
<p>（4）抗块效应滤波器</p>
<p>&nbsp;&nbsp;&nbsp; 抗块效应滤波器（Deblocking Filter），它的作用是消除经反量化和反变换后重建图像中由于预测误差产生的块效应，即块边缘处的像素值跳变，从而一来改善图像的主观质量，二来减少预测误差。H.264中的Deblocking Filter还能够根据图像内容做出判断，只对由于块效应产生的像素值跳变进行平滑，而对图像中物体边缘处的像素值不连续给予保留，以免造成边缘模糊。与以往的Deblocking Filter不同的是，经过滤波后的图像将根据需要放在缓存中用于帧间预测，而不是仅仅在输出重建图像时用来改善主观质量，也就是说该滤波器位于解码环中而非解码环的输出外，因而它又称作Loop Filter。需要注意的是，对于帧内预测，使用的是未经过滤波的重建图像。</p>
<p>3.整数变换</p>
<p>&nbsp;&nbsp;&nbsp; H.264对帧内或帧间预测的残差（residual）进行DCT变换编码。为了克服浮点运算带来的硬件设计复杂，更重要的是舍入误差造成的编码器和解码器之间不匹配（mismatch）的问题，新标准对DCT的定义做了修改，使得变换仅用整数加减法和移位操作即可实现，这样在不考虑量化影响的情况下，解码端的输出可以准确地恢复编码端的输入。当然这样做的代价是压缩性能的略微下降。此外，该变换是针对4&times;4块进行的，这也有助于减少块效应。</p>
<p>&nbsp;&nbsp;&nbsp; 为了进一步利用图像的空间相关性，在对chroma的预测残差和16&times;16帧内预测的预测残差进行上述整数DCT变换之后，标准还将每个4&times;4变换系数块中的DC系数组成2&times;2或4&times;4大小的块，进一步做哈达玛（Hadamard）变换。</p>
<p>4.熵编码</p>
<p>&nbsp;&nbsp;&nbsp; 如果是Slice层预测残差，H.264有两种熵编码的方式：基于上下文的自适应变长码（Context-based Adaptive Variable Length Coding，CAVLC）和基于上下文的自适应二进制算术编码（Context-based Adaptive Binary Arithmetic Coding，CABAC）；如果不是预测残差，H.264采用Exp-Golomb码或CABAC编码，视编码器的设置而定。</p>
<p>（1）CAVLC</p>
<p>&nbsp;&nbsp;&nbsp; VLC的基本思想就是对出现频率大的符号使用较短的码字，而出现频率小的符号采用较长的码字。这样可以使得平均码长最小。</p>
<p>&nbsp;&nbsp;&nbsp; 在CAVLC中，H.264采用若干VLC码表，不同的码表对应不同的概率模型。编码器能够根据上下文，如周围块的非零系数或系数的绝对值大小，在这些码表中自动地选择，最大可能地与当前数据的概率模型匹配，从而实现了上下文自适应的功能。</p>
<p>（2）CABAC</p>
<p>&nbsp;&nbsp;&nbsp; 算术编码是一种高效的熵编码方案，其每个符号所对应的码长被认为是分数。由于对每一个符号的编码都与以前编码的结果有关，所以它考虑的是信源符号序列整体的概率特性，而不是单个符号的概率特性，因而它能够更大程度地逼近信源的极限熵 ，降低码率。</p>
<p>&nbsp;&nbsp;&nbsp; 为了绕开算术编码中无限精度小数的表示问题以及对信源符号概率进行估计，现代的算术编码多以有限状态机的方式实现，H.264的CABAC便是一个例子，其他的例子还有JPEG2000。在CABAC中，每编码一个二进制符号，编码器就会自动调整对信源概率模型（用一个&ldquo;状态&rdquo;来表示）的估计，随后的二进制符号就在这个更新了的概率模型基础上进行编码。这样的编码器不需要信源统计特性的先验知识，而是在编码过程中自适应地估计。显然，与CAVLC编码中预先设定好若干概率模型的方法比较起来，CABAC有更大的灵活性，可以获得更好的编码性能&mdash;&mdash;大约10％码率的降低。</p>
<p>&nbsp;&nbsp;&nbsp; 以上介绍的特点都是用来提高H.264的编码性能的，此外H.264还具有很好的错误恢复能力（error resilience）和网络适应性（network adaptability），下面介绍其中的一些特点。</p>
<p>5. SP Slice</p>
<p>&nbsp;&nbsp;&nbsp; SP Slice的主要目的是用于不同码流的切换（switch），此外也可用于码流的随机访问、快进快退和错误恢复。这里所说的不同码流是指在不同比特率限制下对同一信源进行编码所产生的码流。设切换前传输码流中的最后一帧为Al，切换后的目标码流第一帧为B2（假设是P帧），由于B2的参考帧不存在，所以直接切换显然会导致很大的失真，而且这种失真会向后传递。一种简单的解决方法就是传输帧内编码的B2，但是一般I帧的数据量很大，这种方法会造成传输码率的陡然增加。根据前面的假设，由于是对同一信源进行编码，尽管比特率不同，但切换前后的两帧必然有很多相关性，所以编码器可以将Al作为B2的参考帧，对B2进行帧间预测，预测误差就是SP Slice，然后通过传递SP Slice完成码流的切换。与常规P帧不同的是，生成SP Slice所进行的预测是在Al和B2的变换域中进行的。SP Slice要求切换后B2的图像应和直接传送目标码流时一样。显然，如果切换的目标是毫不相关的另一码流，SP Slice就不适用了。</p>
<p>6.灵活的宏块排序</p>
<p>&nbsp;&nbsp;&nbsp; 灵活的宏块排序（flexible macroblock ordering，FMO），是指将一幅图像中的宏块分成几个组，分别独立编码，某一个组中的宏块不一定是在常规的扫描顺序下前后连续，而可能是随机地分散在图像中的各个不同位置。这样在传输时如果发生错误，某个组中的某些宏块不能正确解码时，解码器仍然可以根据图像的空间相关性依靠其周围正确译码的像素对其进行恢复。</p>
<p>三、H.264的具体内容</p>
<p>&nbsp;&nbsp;&nbsp; 通过上面的介绍，毋庸置疑，H.264在压缩性能上要比其他标准优越，甚至包括MPEG-4（2）（MPEG-4第2部分）。众所周知，MPEG-4（2）最大的特点就是面向对象的编码，对象概念的提出是具有先进性的，在对象已经提取出来的条件下确实能够获得很高的压缩比，但是如何提取对象成为摆在人们面前的一大难题。一个真正的对象提取算法应该是像人一样具有智能，能够像人一样进行思维并且是能够学习的，而目前的技术根本达不到这点，虽然有大量的文献介绍对象提取的方法，但我认为这些只是权宜之计，充其量只是往正确的方向上迈出的一小步。正因为如此，MPEG-4（2）面向对象编码的思想过于超前。ITU-T的VCEG放弃了对象这一不现实的概念，与目前科学技术的发展水平相适应，提出了H.264（10）（MPEG-4第10部分）（H.26L）视频编码标准，这是难能可贵的，更重要的是它同样实现了MPEG-4（2）面向对象编码的目标之一&mdash;&mdash;高压缩比。</p>
<p>&nbsp;&nbsp;&nbsp; 视频信号的数据量是很大的，为了达到高效的压缩，必须充分利用各种冗余，一般来讲，视频序列里的冗余包括两类，一类是统计冗余，它包含：（1）频谱冗余，指色彩分量之间的相关性；（2）空间冗余；（3）时间冗余，这是视频压缩区别于静止图像压缩的根本点，视频压缩主要利用时间冗余来实现大的压缩比。第二类是视觉生理冗余，这是由于人类的视觉系统（HVS）特性造成的，比如人眼对色彩分量的高频分量没有对亮度分量的高频分量敏感，对图像高频（即细节）处的噪声不敏感等。</p>
<p>&nbsp;&nbsp;&nbsp; 针对这些冗余，视频压缩算法采用了不同的方法加以利用，但主要的考虑集中在空间冗余和时间冗余上。与以前的标准类似，H.264也采用了所谓的混合（hybrid）结构，即对空间冗余和时间冗余分别进行处理。对空间冗余，标准通过变换及量化达到消除的目的，这样编码的帧叫做I帧；而时间冗余则是通过帧间预测，即运动估计和补偿来去除的，这样编码的帧叫做P帧或B帧。</p>
<p>&nbsp;&nbsp;&nbsp; 与以前的标准不同的是，H.264在编码I帧时，采用了帧内预测，然后对预测误差进行编码。这样就充分利用了空间相关性，提高了编码效率。H.264的帧内编码框图(详图请参见《中国多媒体视讯》第七期)所示。 H.264帧内预测以16&times;16的宏块为基本单位。首先，编码器将与当前宏块同一帧的邻近像素作为参考，产生对当前宏块的预测值，然后对预测残差进行变换与量化，再对变换与量化后的结果做熵编码。熵编码的结果就可以形成码流了。由于在解码器端能够得到的参考数据都是经过反变换与反量化后的重建图像，所以为了使编解码一致，编码器端用于预测的参考数据就和解码器端一样，也是经过反变换与反量化后的重建图像。需要注意的一点是，用于帧内预测的这些参考数据不需要经过Deblocking Filter滤波，这与帧间编码的参考图像是不同的。</p>
<p>1、帧内预测</p>
<p>亮度Intra--16&times;16帧内预测模式如图(详图请参见《中国多媒体视讯》第七期)所示。</p>
<p>亮度Intra--16&times;16帧内预测模式</p>
<p>色差分量的8&times;8 4种帧内预测模式如图(详图请参见《中国多媒体视讯》第七期)所示。</p>
<p>色差分量的8&times;8 4种帧内预测模式</p>
<p>亮度分量的4&times;4 8种方向帧内预测模式。</p>
<p>图5亮度分量的4&times;4 8种方向帧内预测模式</p>
<p>2、 变换与量化</p>
<p>&nbsp;&nbsp;&nbsp; 将图像的当前像素值与预测值相减，就形成了预测残差。残差内仍然含有空间冗余，为了消除这种冗余，通常采用变换编码，即变换&mdash;&mdash;量化&mdash;&mdash;熵编码三步。变换并不压缩数据，它只是消除数据中的相关性，或者说将数据中的冗余（或相关性）以一种便于随后进行熵编码的方式表现出来。压缩是在量化和熵编码步骤中完成的。此外为了进一步减少数据量，编码器还对变换后的系数进行量化，它的实质是减少数据的取值范围以减少每一个符号的熵。它会造成信息的损失，是有损编码的一个重要步骤，它也是控制图像率失真（R-D）特性的一个主要手段。在H.264中，变换与量化两个步骤紧密相连。</p>
<p>整数DCT正变换的公式 </p>
<p>H．264的反DCT变换公式 </p>
<p>&nbsp;&nbsp;&nbsp; 图像编码中常用的变换是DCT，因为它在某种条件下近似于理论上最优的K-L变换。但是如果直接采用DCT的定义进行变换，会带来两个问题：一个是需要进行浮点数操作，从而造成系统设计上的复杂性；第二，由于变换核都是无理数，而有限精度的浮点数不可能精确地表示无理数，再加上浮点数的运算可能会引入舍入误差，这就使得在具体实现时会导致编解码的不一致（mismatch），即反变换的输出结果和正变换的输入不一样。为了克服这些问题，H．264采用整数DCT变换，使得变换操作仅用整数加减和移位操作就可以完成，这样既降低