DreamBlooms/HansPub-15000-to-45000 huggingface dataset:
system: [SYSTEM]

user: 1. 引言 二维层状纳米材料由于具有独特的结构而拥有巨大的理论和实际应用价值[ 1 ] ，近年来被广泛应用于电子器件[ 2 ] -[ 4 ] 、传感器[ 5 ] 、能量存储装置 [ 6 ] 和催化剂载体 [ 7 ] 等方面。2004年英国曼彻斯特大学的Geim和Novoselov [ 8 ] 首次从块体石墨上成功分离出石墨烯，其突出的性能迅速激发了科学家们浓厚的兴趣，掀起了一股研究的热潮 [ 9 ] - [ 12 ] 。 在继石墨烯之后，各种二维层状材料也陆续涌现出来[ 13 ] -[ 15 ] 。而日益严重的能源短缺和环境恶化的形势，对二维层状材料的性能提出了更多的要求。石墨烯虽然拥有众多优异特性，但是零能带间隙限制了其在催化等方面的应用。2009年福州大学的王心晨教授课题组 [ 16 ] 证实石墨相氮化碳在可见光下可以催化水产生氢气，这无疑又为能源、环境等问题的解决开辟了一条新的道路。因此，大量的科研工作者纷纷投入到其中，随后也取得了一定的成果 [ 17 ] [ 18 ] 。 石墨相氮化碳可能存在两种稳定结构，分别以三嗪环(C 3 N 3 )和七嗪环(C 6 N 7 )为基本结构单元无限延伸形成网状结构g 1 -C 3 N 4 和g 2 -C 3 N 4 (图1)，层与层之间依靠弱的范得瓦尔斯键结合，层间距为0.326 nm。在这两种结构中，C、N原子均以sp 2 杂化方式，通过p z 轨道上的孤对电子形成高度离域的π共轭体系 [ 16 ] [ 19 ] 。Kroke等 [ 20 ] 经过计算，发现g 2 -C 3 N 4 比前者更稳定。不过在实际反应中，g-C 3 N 4 的结构会受到制备方法、反应前驱物等诸多因素的影响。 与石墨烯零能带隙不同，g-C 3 N 4 体材料、多层和单层都具有禁带宽度，是一种新型的非金属有机半导体。体相g-C 3 N 4 的能带结构如图2(a)所示 [ 16 ] ，其最高占据分子轨道(HOMO)由N p z 轨道组成，最低未占据分子轨道(LUMO)由C p z 轨道组成，它们之间存在约为2.7 eV的禁带宽度，因此g-C 3 N 4 可以吸收太阳光谱中波长小于475 nm的蓝紫光 [ 16 ] [ 21 ] 。相比只能在紫外光驱动下发生光催化反应的传统光催化剂TiO 2 ，g-C 3 N 4 拓宽了对太阳光谱的利用，有效实现了对可见光的响应和吸收。并且可以通过和金属元素复合形成稳定界面，从而提高光载流子的分离效率，有效地改善可见光的利用率。 正是g-C 3 N 4 独特的电子结构和优异的化学稳定性使其成为二维材料中的新秀，而g-C 3 N 4 纳米片更是因其庞大的比表面积、较多的活性位点以及快速的电子-空穴分离速率(图2(b)) [ 22 ] 而在催化、传感、能量存储和有机反应合成等方面表现出更为优异的性能，从而吸引了较多关注的目光。 材料制备、结构、性能及应用相互关联和影响，本文试图对g-C 3 N 4 纳米片的制备方法，相应的结构及其光电性质进行评述，并对g-C 3 N 4 纳米片在储能材料、传感器和可见光催化剂等方面的应用作了简要介绍，最后展望g-C 3 N 4 纳米片研究的发展趋势。 图1. g-C 3 N 4 两种可能的化学结构(a)基于C 3 N 3 的g 1 -C 3 N 4 和(b)基于C 6 N 7 的g 2 -C 3 N 4 图2. (a) 体相g-C 3 N 4 和(b) g-C 3 N 4 纳米片的能带结构
system: [SYSTEM]

user: 2. g-C 3 N 4 纳米片的制备方法 目前，g-C 3 N 4 纳米片的制备方法主要包括化学氧化法、液相剥离法和气体疏松法等。这些方法虽然都能制备出g-C 3 N 4 纳米片，但是也各自存在着一定的不足之处，无法同时满足尺寸大、结晶度好、纳米片层数可控、操作简单、周期短、成本低等要求，和实际的工业合成还有一定的差距，因此g-C 3 N 4 纳米片的制备仍然是今后研究的重点。 2.1. 化学氧化法 化学氧化法是指层状材料在与其他物质作用时发生氧化，使得层与层之间的作用力减弱而层间结构不会被破坏，从而达到减小材料厚度的目的。 Niu课题组 [ 23 ] 以双氰胺为前驱体，将其加热到550℃保温4 h，制备出g-C 3 N 4 体材料。然后将所得的体相g-C 3 N 4 在空气中焙烧2 h，冷却后即可得到厚度约为2 nm的g-C 3 N 4 纳米片。在空气中加热时，体相g-C 3 N 4 材料层与层之间的分子作用力减弱甚至消失，因而C-N原子层会逐渐从块状g-C 3 N 4 上脱离，使其越来越薄从而得到纳米片(图3)。当然g-C 3 N 4 层内的基本结构单元之间的共价键也会受到一定的影响而有少许发生断裂。而Chen等人 [ 24 ] 同样是预先制备好体相g-C 3 N 4 ，紧接着将其与硝酸溶液混合，旋转振荡24 h后离心并用流水反复清洗直至溶液呈中性，接着在低压下蒸发得到粘稠悬浮液，最后将悬浮液转移到玻璃等基体上在空气中烘干得到半透明的g-C 3 N 4 薄膜，这种薄膜在各种环境下表现出相当高的稳定性。虽然在化学处理前后g-C 3 N 4 的结构依然保持不变，但是粒子大小却发生了很大变化 [ 25 ] 。 化学氧化法对设备要求低、产量高，但所得到的g-C 3 N 4 纳米片结晶度不高、尺寸小而且纳米片厚度不易控制，因此只能用来合成质量不高的g-C 3 N 4 纳米片。 2.2. 液相剥离法 自从石墨烯通过微机械剥离法从石墨上被成功剥离后 [ 8 ] ，科学家们深受启发，对层状材料的剥离法进行了大量的研究 [ 26 ] ，g-C 3 N 4 纳米片随后也被列入其中。 Zhang等人 [ 27 ] 将体相g-C 3 N 4 粉末放入适量水中，通过超声波分离10 h，反应原理如图4所示。在超声分离的过程中，充分利用了水分子的界面能破坏C-N原子层间的范得瓦尔斯键，接下来为便于收集纳米片，将超声分离后的悬浮液离心30 min后得到g-C 3 N 4 纳米片，借助原子力显微镜检测其平均厚度约为2.5 nm，相当于7层C-N原子层。 Zhao团队 [ 28 ] 根据化学氧化法将块状g-C 3 N 4 在空气中焙烧3 h，在得到厚度为2.5 nm的纳米片后再将其溶入异丙醇溶液中，超声分离8 h，经过离心干燥后发现纳米片厚度为超声分离前的五分之一，即0.5 nm，仅相当于一层g-C 3 N 4 的厚度(图5)。 考虑到溶剂分子对分离体相材料的重要性(图6) [ 29 ] ，Lin等人[ 22 ] 分别用乙醇、异丙醇及二甲基甲酰胺和水混合来溶解g-C 3 N 4 体材料。作者发现将上述醇类和水以不同的体积比混合可以调节g-C 3 N 4 的浓度。以乙醇为例，当乙醇体积分数为25%时，g-C 3 N 4 悬浮液的浓度达到饱和，此时所需的剥离能最低[ 26 ] [ 30 ] 。将饱和悬浮液用超声波振荡10 h后得到厚度仅为0.38 nm的g-C 3 N 4 纳米片，成功地分离出了单原子层的纳米片，而且所制得的纳米片保持了体相材料完整的结构。 不同于石墨的是，g-C 3 N 4 在自然界中并不存在，因此采用液相分离法制备g-C 3 N 4 纳米片时，需要预先合成块状g-C 3 N 4 ，另外，后续的超声分离及离心收集等步骤比较耗时。虽然所制得的纳米片厚度小，而且保持了体相材料完整的晶体结构和相同的化学组成，但是液相分离法存在操作繁琐、制备周期长、成本高等缺点。因此这种方法不适用于工业上大批量生产g-C 3 N 4 纳米片，只能用于实验室合成。 2.3. 气体疏松法 气体疏松法是利用反应物在反应过程中持续不断产生的大量气体使体相材料变得松软同时产生多孔结构的一种方法。 Dong课题组[ 31 ] 将尿素放在加盖的坩埚中，然后在马弗炉中对坩埚加热，加热温度分别400℃、450℃、500℃、550℃、575℃、600℃，保温2 h冷却后用扫描电子显微镜和透射电子显微镜观察发现，加热温度为400℃时不能制得g-C 3 N 4 ，当温度升高到450℃时样品出现了与g-C 3 N 4 相吻合的成分。而当继续升温至575℃时所得样品为理想的松软层片状，似银耳一般有着不太规则的形状，而且，在纳米片上布满了小孔。另外，经过进一步的检测，发现大面积的纳米片厚度在20 nm左右。不过有关尿素聚合成g-C 3 N 4 纳米片的机理尚不是很明确，需要更进一步的研究。 图3. g-C 3 N 4 在空气中的热氧化刻蚀过程 图4. 液相剥离法制备g-C 3 N 4 纳米片 图5. 单原子层g-C 3 N 4 的(a) 扫描电子显微镜图；(b) 透射电子显微镜图；(c) 原子力显微镜图 图6. 液相分离法制备g-C 3 N 4 纳米片时溶剂的影响机理 在此基础之上，Lu等人[ 32 ] 利用双氰胺作为反应前躯体，在其中加入氯化铵粉末，充分混合后放入坩埚，在马弗炉中加热至550℃保温4 h，冷却后得到厚度为3.1 nm的g-C 3 N 4 纳米片，有关合成过程如图7所示。作者强调将双氰胺和氯化铵充分混合是成功制得纳米片的关键。这是因为将二者充分混合能够使氯化铵在受热过程中分解产生的NH 3 和HCl气体充分发挥气体模板的作用，促使双氰胺在聚合的过程中不聚集成块状而是形成比较松散的g-C 3 N 4 纳米片。作者认为氯化铵在整个反应过程中只是作为动态模板，并没有参与合成反应，但是具体的反应过程还有待探索。 与上述两种方法相比，气体疏松法不需要预先制备好体相g-C 3 N 4 ，因此操作过程简单、制备周期短，而且适用于大批量生产，但是这种方法还不是太成熟，只能在一定程度上减小材料的厚度，难以得到比较薄和厚度可控的纳米片。
system: [SYSTEM]

user: 3. g-C 3 N 4 纳米片的光电性质 在近年来涌现出的众多层状材料中，g-C 3 N 4 因其独特的电子结构和能带特征而表现出优异的热、光、电等性质。g-C 3 N 4 纳米片已经被证实具有良好的热化学稳定、气体传感、光致发光、可见光催化以及电学性能，为其在各领域的应用奠定了良好的基础。尤其是g-C 3 N 4 纳米片的光电性质决定了其最具潜力的可见光催化性能，因此研究其光电性质具有重要意义。 3.1. 光学性质 g-C 3 N 4 可以吸收太阳光谱中波长小于475 nm的光[ 16 ] [ 21 ] ，在紫外光的照射下可以发出蓝紫光。当纳米片层数减少时，其价带和导带边界会向相反方向偏移，产生量子限域效应 [ 33 ] ，使得纳米片本征吸收带发生蓝移现象，这与宽而强的光致发光现象相吻合 [ 22 ] [ 34 ] ，表明g-C 3 N 4 纳米片的厚度减小时，会表现出更强的光吸收和光响应性，有利于提高g-C 3 N 4 纳米片的光催化性能。 3.2. 电学性质 传统的g-C 3 N 4 体材料是不导电的，而Niu等 [ 23 ] 在单个g-C 3 N 4 纳米片中却检测到明显的电流。这是因为在化学氧化后残余的聚合单元在大量存在的氢键作用下连接成平面结构，为电荷传输提供了必要通道，这也证明了其中的Pt 4+ 被还原成金属Pt的事实。同时，当g-C 3 N 4 厚度变薄时，由于电荷运动阻力的减小和传输速度的提高 [ 35 ] ，延长了电荷的寿命 [ 23 ] ，从而有效地抑制了光生电子-空穴对的复合，而且还会缩短电荷运动到表面的垂直距离 [ 36 ] ，将电荷限定在纳米片表面的边缘位置，大大提高了量子效率，可以很好地改善g-C 3 N 4 的催化性能。
system: [SYSTEM]

user: 4. g-C 3 N 4 纳米片的应用 g-C 3 N 4 纳米片因其优异的稳定性以及特殊的光电性能而在被广泛用于催化剂载体、储能材料、传感 图7. 块状g-C 3 N 4 和g-C 3 N 4 纳米片的合成过程示意图 器和可见光催化剂等方面。早在2008年Deifallah等[ 37 ] 通过理论计算就预言了层状材料g-C 3 N 4 纳米片将具有广阔的应用前景。 4.1. 载体和储能材料 g-C 3 N 4 纳米片由于具有良好的化学稳定性和较高的比表面积而在各种载体和储能材料方面具有较大潜力。 Singh等 [ 38 ] 在g-C 3 N 4 表面负载金，将制得的Au/g-C 3 N 4 用于实现CO的氧化。Deng等 [ 39 ] 将钴原卟啉IX负载到g-C 3 N 4 纳米片上研究对过氧化氢的还原能力，发现其能提供很大的催化动力，同时表现出相当高的催化活性。而Lin等 [ 40 ] 在g-C 3 N 4 纳米片上负载抗癌药物阿霉素并成功将其传输到癌细胞中，其负载容量可达18，200 mg∙g −1 。Park团队 [ 41 ] 则利用硬模板法制备的多孔g-C 3 N 4 纳米片来储存氢气，由于具有较大的比表面积，g-C 3 N 4 纳米片对氢气表现出较好的储存效果。 4.2. 传感器 g-C 3 N 4 纳米片由于表面含有大量的-NH、-NH 2 等基团和良好的光致发光性能，近年来在被广泛应用在气体和生物等各种传感器中。 Mane等[ 42 ] 将多孔g-C 3 N 4 纳米片与天平组装设计成气体传感器，对大气中的有机气体进行检测，结果表明传感器对甲酸气体的灵敏度最高。Zhang团队 [ 27 ] 用液相剥离法制备得到水溶性的g-C 3 N 4 纳米片，其光致发光量子效率高达19.6%，而且对pH的变化表现出自发的光致发光强度变化响应。同时，g-C 3 N 4 纳米片还表现出良好的生物相容性，可用于生物成像。在此基础之上，Lin等 [ 40 ] 利用g-C 3 N 4 纳米片对pH的响应成功对抗癌药物实现了可控吸附和释放，极大地推动了g-C 3 N 4 纳米片在生物医药领域的应用。 4.3. 可见光催化剂 g-C 3 N 4 纳米片因其独特的能带结构在可见光下可以催化水产氢、分解有机污染物甚至能分解病菌，被作为一种新型的不含金属组分的可见光催化剂广泛地应用于光催化领域。 Yang等 [ 43 ] 在液相剥离法的基础上制备出了厚度为2 nm的g-C 3 N 4 纳米片，在波长为420 nm的可见光照射下，g-C 3 N 4 纳米片催化水分解产生氢气的速率为93 μmol∙h −1 ，而且催化活性在很长时间内都没有明显衰减。其产氢速率和入射光的波长也密切相关，参照Zou等 [ 44 ] 的方法可测量出催化剂的产氢量子效率为3.75%。Martain等 [ 45 ] 以尿素为前驱体合成出的g-C 3 N 4 纳米片光催化分解水其产氢量高达20，000 μmol∙h −1 ∙g −1 ，在可见光下产氢量子效率为26.5%，比目前几乎所有的光催化剂要高得多 [ 46 ] [ 47 ] 。作者还对催化强化机理进行了详细研究，他们发现含氧的前驱物有助于降低质子化状态，提高聚合度，从而使得催化效果得到明显提高。在此之后，Cao等 [ 48 ] 则将g-C 3 N 4 纳米片与CdS复合，发现用所制备的二元复合物来光催化分解水时，其产生氢气的速率大大提高，最高可达到未复合前的115倍。 g-C 3 N 4 纳米片除了能用于光催化分解水产氢外，还由于其在可见光下可以产生超氧自由基用于分解有机污染物而在环境污染问题中具有较大的前景。 Lin等 [ 22 ] 用液相分离法制备的单原子层的g-C 3 N 4 纳米片来选择性氧化苯甲醇，发现随着温度的升高，催化剂活性也明显提高，在温度为353 K时对苯甲醇表现出极高的选择性，其转化率达到19.4%。另外，作者将其用来分解有机物罗丹明也表现出了较好的催化效果。这是源于单层结构有利于反应分子的接触，从而促进了表面催化剂与基体的氧化还原反应[ 49 ] 。在此基础上，Zhang等 [ 50 ] 用同样的方法合成了g-C 3 N 4 纳米片，在可见光照射下利用其分解罗丹明等有机物，发现在60 min内即可将罗丹明分解93.1%，是用SnS 2 纳米片分解罗丹明速度的1.2倍。作者还将g-C 3 N 4 纳米片与SnS 2 纳米片复合制得催化效果更好的催化剂，在20 min内可以分解掉全部的罗丹明。g-C 3 N 4 纳米片不仅能分解有机物，对无机物同样起作用。Wang等 [ 51 ] 还用单层g-C 3 N 4 纳米片来光催化氧化氨水，相比于中性或酸性环境，其催化活性在碱性溶液中最高。 g-C 3 N 4 纳米片在可见光照射下还可用来分解某些生物细菌。Zhao等 [ 28 ] 用可见光照射单原子层厚度的g-C 3 N 4 纳米片，发现在4 h内g-C 3 N 4 纳米片可将2 × 10 7 cfu∙mL −1 大肠杆菌全部分解并且自身催化活性仍然保持不变(图8)。同时，作者还对反应机制作了进一步研究。他们在大肠杆菌中分别加入碘化钾、异丙醇和铬来检测活性氧化基团 [ 52 ] ，结果表明氢离子在分解大肠杆菌的过程中起了主要作用。这一研究有效地推动了g-C 3 N 4 纳米片在生物领域的应用。 图8. 大肠杆菌在光催化分解前后的透射电子显微镜图(a)照射前和照射后(b) 4 h (c) 8 h (d) 12 h
system: [SYSTEM]

user: 5. 结论与展望 g-C 3 N 4 纳米片因其独特的电子结构和优异的化学稳定性以及较大的比表面积和更快的电子-空穴分离速率而引起了科学家们浓厚的兴趣。目前制备g-C 3 N 4 纳米片有化学氧化法、液相剥离法和气体疏松法等多种方法，其中，液相剥离法由于可以制备出单原子层的g-C 3 N 4 纳米片，因而一直备受青睐，成为实验室合成g-C 3 N 4 纳米片的主要方法。g-C 3 N 4 纳米片在作为各种催化剂载体和储能材料、传感器材料，应用在光催化水、分解各种有机物甚至是生物细菌等方面表现出极大的潜力，具有非常广阔的应用前景。 材料制备、结构、性能及应用相互关联和影响，是材料科学研究的关键问题。在纳米尺度下结构的微小变化可以极大地影响材料的性能，这个问题显得尤为重要。进一步探究反应的物理化学机理，将目光聚焦在纳米片的可控制备上来，建立起材料结构和性能的关联性。另外，可以将g-C 3 N 4 纳米片与其他材料复合来改变其化学组成和能带结构。而在g-C 3 N 4 纳米片的应用方面，面对严峻的能源短缺和环境污染形势，研究工作者们将会重点关注g-C 3 N 4 纳米片在储能材料、光催化、药物载体以及生物灭菌等方面的研究，尤其是需要进一步提高g-C 3 N 4 纳米片在可见光下的催化性能，使其成功地运用于工业生产中。
system: [SYSTEM]

user: 摘 要 纳米结构氧化锌作为一种新型的半导体材料，在光电和压电器件方面具有广阔的应用前景。本文针对化学气相沉积的工艺方法，评述了不同的氧化锌纳米结构的相关制备方法，结构形貌及其独特性能，力求详细地概述氧化锌纳米结构研究的最新进展。针对氧化锌纳米结构的研究现状以及存在问题，展望了未来ZnO纳米材料的研究趋势。 关键词 :ZnO，CVD，纳米结构，压电器件
system: [SYSTEM]

user: 1. 引言 氧化锌(ZnO)是一种典型的直接带隙宽禁带半导体材料，常温下的禁带宽度是3.37 eV，与GaN的禁带宽度相似。同时它的激子结合能高达60 meV，远大于ZnSe (22 meV)和GaN (25 meV)，因此在光电和压电器件方面具备很好的应用潜力，利用其良好的光电性能使其成为一种场发射平面显示器材料和紫外光二极管激光器等光电器件的应用，同时也可以实现以压电效应为基础的压力传感器和纳米发电机等压电器件的应用。 ZnO纳米结构具有多种多样的形貌特征，不同的形貌特征又具有许多不同于块体材料的特殊性质，研究纳米ZnO的不同形貌与性质对探索纳米ZnO的实际应用具有重要的意义。纳米ZnO获得了广泛的关注，从而涌现出多种制备方法，例如固相法，液相法，气相法。其中，化学气相沉积(chemical vapor deposition，CVD)是一种颇受青睐的制备方法。化学气相法可控性强、使用范围广、产物单一，更重要的是产物的晶体质量高，而对生长气氛的调节又使得掺杂、异质结和超晶格纳米线的制备成为可能。本文主要关注化学气相沉积法制备ZnO纳米结构，综述不同的CVD工艺所制备ZnO形貌，以及结构和性能的关系。
system: [SYSTEM]

user: 2. CVD法制备纳米氧化锌 材料科学的研究主要涉及材料的制备工艺、微观结构、宏观物性和应用四个方面，其中结构和性能的关系是核心，而制备工艺是前提和关键。纳米材料的研究也是如此，纳米材料的制备在当前材料科学研究中占据极为重要的位置，对纳米材料的微观结构和性能具有重要的影响[ 1 ] 。 纳米ZnO的众多制备方法中，CVD法可实现分子和原子水平上的均匀混合，通过工艺参数的改变，可获得不同形貌与性能的纳米材料，而且产物颗粒均匀、分散性好。运用CVD法制备纳米ZnO时，通常使用水平管式炉，通过精确控制反应温度、反应气氛的类型、分压以及流量、沉积温度、催化剂种类及状态、衬底类型及放置位置和方式等工艺参数，制备不同结构和尺寸的ZnO纳米材料，如纳米线、纳米带、纳米棒等。 2.1. 热蒸发反应沉积 所谓热蒸发制备纳米ZnO就是通过加热原料，在热蒸发过程中发生一系列化学反应，生成气态ZnO，之后再沉积成固态ZnO纳米材料。其中，原料可以是Zn粉或者其他含Zn的反应物。通过纯金属Zn粉为原料进行蒸发和氧化，或者对含Zn化合物进行氧化或分解，气态ZnO直接固化沉积成纳米线等纳米材料，不存在液态相变过程。调节各个工艺参数，可以制备出不同形貌的纳米ZnO。 采用金属Zn粉蒸发且不用催化剂的情况下制备ZnO纳米棒阵列 [ 2 ] [ 3 ] ，当制备温度700℃，Ar气和O 2 的总流量约为250 cm 3 /min，O 2 比例约为3%时，可以得到六棱柱ZnO纳米棒阵列，所获样品形状规则，顶端及六个柱面平整光滑；而当制备温度大于700℃时，随温度的升高，阵列尺寸增大。这时所得样品为锥形阵列，底部直径约为500 nm，尖端几十纳米，高度几十微米；当Ar气和O 2 的总流量约为280 cm 3 /min，O 2 比例约为3%，制备温度650℃时，可以得到针状阵列。随反应沉积时间的升高，阵列高度增大。底部为直径较大的圆柱，生长到一定高度后，直径锐减，从几百纳米到几十纳米，针状部分开始生长。 除此之外，在910℃分解ZnC 2 O 4 ，经气固转变生成ZnO纳米棒 [ 4 ] 。工业黄铜片(含Zn 30%~40%)为蒸发源制备ZnO纳米带 [ 5 ] 。以ZnCu 2 合金为Zn源，以0.1 mm直径的ZnCu 2 合金丝为衬底，通过Zn蒸气和水蒸气反应制备不同形貌的ZnO纳米带 [ 6 ] 。 2.2. 碳热还原反应沉积 利用碳热还原反应(carbothermal reduction)制备ZnO纳米材料时，是以ZnO粉和碳粉的混合粉末为原料，在一定温度和气氛下，ZnO和C发生还原反应生成气态Zn蒸气，再经催化、氧化成液态，最后成为固态，或者直接沉积为固态。催化剂通常是Au、Sn、Cu、CuO等物质的颗粒或薄膜，可以事先沉积在基片上，也可以混合在原料中使用。 Yang于2001年利用此法成功制备出ZnO纳米线，在制备过程中，在Si片上事先沉积Au纳米颗粒作为催化剂 [ 1 ] [ 7 ] [ 8 ] 。Tseng等在900℃下蒸发原料，在表面沉积有Cu催化剂的Si片上制备出ZnO纳米棒 [ 9 ] ，催化剂一般通过蒸镀或溅射到基片上。 另外，也可以运用此法不使用催化剂制备ZnO纳米材料。Wang等以质量比2:1的ZnO粉和C粉的混合物为原料，在1000℃下蒸发，在预先处理过的Si片上获得三角钉状的ZnO纳米结构 [ 10 ] ；在1050℃下蒸发原料，在预先处理过的Si片上获得铅笔状的ZnO纳米结构 [ 11 ] 。两个实验过程中，Si片均事先经过Cr(NO 3 ) 3 溶液处理，结果证明，此溶液并未起到催化剂的作用，但对ZnO纳米结构的形貌起到重要作用。 除此之外，利用碳热还原反应也可以制备掺杂的ZnO纳米材料。Zhou等 [ 12 ] 以20:20:1的质量比混合ZnO、石墨和Ga 2 O 3 ，采用内置单通小管的方式在1100℃下蒸发原料，最后在ITO衬底上获得Ga掺杂的ZnO纳米线阵列。Mohanta等 [ 13 ] 在900℃下蒸发ZnO粉、石墨和铝粉的混合粉末，预先在蓝宝石衬底上沉积一层ZnO种子层，由此制备出Al掺杂的ZnO纳米线阵列。 2.3. 金属有机化合物化学气相沉积 金属有机化合物化学气相沉积(metalorganic chemical vapor deposition，MOCVD)是以金属有机化合物为原料，经化学反应制备纳米材料的重要方法之一。这种方法的特点是原料的蒸发分解温度较低，可大大降低制备温度。原料一般为有机锌化合物，主要包括四乙酰丙酮络锌(zinc acetylacetonate hydrate，Zn(C 5 H 7 O 2 ) 2 )、二乙基锌(diethylzinc，DEZn，Zn(C 2 H 5 ) 2 )等。 Zn(C 5 H 7 O 2 ) 2 是MOCVD法中常用的一种原料。Wu等 [ 14 ] 在135℃蒸发带有结晶水的Zn(C 5 H 7 O 2 ) 2 获得ZnO纳米棒。Lee [ 15 ] 等以Zn(C 5 H 7 O 2 ) 2 和Al(C 5 H 7 O 2 ) 3 为原料于275℃下在钠钙玻璃衬底上制备出Al掺杂的ZnO薄膜材料。 Zn(C 2 H 5 ) 2 是MOCVD法中另一种常用的原料，其常温下为气态，可与反应气体和载气按比例导入反应室。Kim等 [ 16 ] 以Zn(C 2 H 5 ) 2 为原料，采用MOCVD法在400℃~500℃制备出多种形状可控的ZnO纳米材料，在其过程中，在SiO 2 /Si衬底上事先沉积一层Au纳米颗粒作催化剂。通过调节Au纳米颗粒的密度和生长温度实现形貌的可控。Biswas等 [ 17 ] 以Zn(C 2 H 5 ) 2 为原料，采用MOCVD法于400℃下在蓝宝石衬底上沉积出ZnO纳米尖阵列结构，在制备过程中，蓝宝石衬底先用3:1的硫酸和磷酸混合溶液清洗干净，然后于350℃下在其上制备一层ZnO种子层。Yi等 [ 18 ] [ 19 ] 也是以Zn(C 2 H 5 ) 2 为原料，在沉积有ZnO过渡层的氧化铝衬底上制备出ZnO纳米棒。其中，ZnO过渡层并未起到催化的作用，而是辅助形核生长。 MOCVD与其他化学气相沉积法相类似，通过改变反应温度、催化剂、气体流量等参数来改变产物的形貌和晶体质量 [ 20 ] [ 21 ] 。 2.4. 等离子体化学气相沉积 等离子体化学气相沉积(plasma-enhanced chemical vapor deposition， PECVD)又称等离子体增强化学气相沉积，它是将辉光放电的物理过程与化学气相沉积相结合，利用输入射频功率源产生的等离子体裂解反应前驱体。其沉积温度低，可精确控制化学计量比，实现原位掺杂，综合了CVD和PVD两方面的优点。 近年来，由于微波等离子体化学气相沉积技术的开发与应用，PECVD除了可以制备各种纳米粉体外，还可以制备各种金属膜、碳氮氧化物膜和金刚石薄膜。Sanchez等 [ 22 ] 利用PECVD技术，以二乙基锌为锌前驱体，通过控制等离子气体中H 2 /O 2 的比例优化沉积条件，制备出透明有孔隙的ZnO薄膜。Bekermann等 [ 23 ] 利用PECVD的方法系统地研究了不同沉积温度下制备ZnO纳米棒的机制，实验中不采用任何催化剂，所得样品在场发射方面具有很大潜在应用。
system: [SYSTEM]

user: 5. 结语 作为一种新型的半导体材料，ZnO纳米结构因其独特的光电、压电等性质在众多材料中脱颖而出，应用前景非常广阔。本文概述CVD方法制备ZnO纳米结构的形貌和结构，及其在光电和压电器件方面的应用。探索运用CVD技术实现ZnO纳米结构的可控生长、构建新型纳米器件仍是今后研究的重点。
system: [SYSTEM]

user: 摘 要 由于信号稀疏表示的优良特性，已被用于信号处理很多领域，但计算复杂成为其实际应用中一大障碍。框架理论是一个新的研究方向，框架可以更为灵活的表示信号。本文结合稀疏信号和框架的特点，提出一种基于等角紧框架(Equiangular Tight Frames， ETF)的稀疏信号重构算法，并通过相应仿真验证。 关键词 :信号处理，稀疏信号，等角紧框架
system: [SYSTEM]

user: 1. 引言 在1993年，Mallat和Zhang在研究了小波分析后，提出将信号在过完备原子库上进行分解，然后根据信号本身特点自适应的选取，从而得到信号的稀疏表示 [ 1 ] 。但与之发展起来的重构算法具有的高计算复杂度使其在实际应用中受到诸多限制。 为了突破瓶颈，框架应运而生。框架理论是在泛函分析、矩阵理论等相关领域研究基础上，结合实际应用中对“冗余”的需求逐渐发展而来的，是继小波分析后又一个新的研究方向，可看做是基的推广。因为框架不仅继承了正交基的良好性质，而且存在一定的冗余度，而正是这种具有冗余性的线性序列组成的框架，在表示信号时可以更为灵活。 本文在研究压缩采样稀疏信号和框架的基础上，结合两者特点，提出一种基于等角紧框架的稀疏信号重构算法，该方法利用等角紧框架来设计用于检测稀疏信号的测量矩阵，实现对信号更为快速的检测，减少计算量，最后通过仿真实验证明该方法的正确性。
system: [SYSTEM]

user: 2. 压缩采样理论 近几年，压缩采样(Compressive Sampling，CS)理论 [ 2 ] - [ 5 ] 成为信号处理中的一个研究热点，该理论指出，对于可压缩或者稀疏的信号，能在远低于奈奎斯特采样速率的情况下，在实现对信号进行采样的同时完成压缩，极大的减少了数据的采集量，节省了存储空间。CS理论表明，如果信号在某个变换域下表现出稀疏性或者可压缩性，那么就能通过一个与变换域不相关的测量矩阵，以远低于奈奎斯特定理所规定的采样率对信号进行采样，而且得到的少量采样值已包含了原信号的足够信息，利用相应的算法就可实现信号的复原。 稀疏分解 使用压缩采样方法的首要条件是信号在某个变换域下具有稀疏性或可压缩性。现假设有一个 维信号 ，并可被 维基向量 表示。那么由这些基向量构成的基矩阵则为 ， 也称为稀疏字典。信号 可线性表示为： 或 (1) 上式中的 是信号的时域表示形式， 称为稀疏矢量，并且 是信号在 域的等效表示形式。如果 中只有 个非零值，其余都是零，且 或者 中只有 个大系数，其余系数重新排列后按指数级迅速衰减至零，那么就认为信号 是稀疏的或可压缩的，稀疏度为 。 信号通过一个测量矩阵后对信号进行了降维，一个 维信号 经过一个 维的测量矩阵 后，将得到一个 维观测值 ， ，用公式表示如下： (2) 将式(1)代入上式可得： (3) 其中， ，是一个 的矩阵，称为恢复矩阵。从式(3)可以看出，信号 从原本的 维降到了 维，大大降低了信号采样点数量。 为了能从观测值 中高概率的重构出原始信号 或稀疏矢量 ，只要恢复矩阵 和稀疏矢量 满足Candes和Tao提出的约束等距性质(Restricted Isometry Property，RIP) [ 6 ] [ 7 ] ： (4) 那么就能依据测量值精确恢复出原始信号。
system: [SYSTEM]

user: 3. 框架 框架是Duffin和Schaeffer在研究非调和傅里叶级数中引入的，是冗余的向量集合，在众多的框架中，某些框架即使缺少部分向量，仍能表示空间中所有元素。若是用该类框架编码数据时，一旦有数据的丢失，不会影响后期数据的恢复，具有很好的鲁棒性。此外，在所有的框架中，紧框架的性能最优，因为该类框架能使编码过程中存在的量化误差达到最小[ 8 ] 。 对于希尔伯特空间 中的有序向量集合 ，对于任意的 ，若是存在正实数 ，满足等式： (5) 则称该向量集是空间 中的一个框架。其中， 和 表示该框架的上下限。当 时，则称为紧框架。如果 ，那么就称为标准紧框架。 现假设存在一个 的矩阵 ，如果矩阵 的列向量 满足： 1) 所有的列向量都存在单位范数，即 ， ； 2) 列向量之间满足等角关系，即 ，且 ，存在 ， 为某常数； 3) 列向量是一个紧框架，即 。 那么矩阵 或者 的列向量构成的集合就称为等角紧框架。而ETF具有比较完美的数学表达形式，性质优良，因此在信号处理方面有着很高的应用价值。
system: [SYSTEM]

user: 4. 基于ETF的稀疏信号重构算法 压缩采样选用的测量矩阵中，等角紧框架在前述意义下是最佳的。如果压缩采样中的恢复矩阵 具有相同的奇异值，那么它的列向量就是一个紧框架，因此构造一个恢复矩阵对应的矩阵来逼近等角紧框架 。 (6) 当采用逼近等角紧框架的矩阵作为测量矩阵时，稀疏信号 的重构在小稀疏度情况下具有非常简洁快速的过程，具体可描述如下： 1) 根据观测值 计算 ，进一步 ； 2) 对于逼近的等角紧框架，有： (7) 根据矩阵 的表达式以及 可以得到列矢量 中的第 个元素 与 稀疏信号 中非零元素 及其位置索引 之间有如下关系： (8) 由于上式中存在正负号，则矢量 中的相应元素 有 种可能的取值。当小稀疏度时，可以采用统计方法求得元素 ，再根据式(7)得到对应稀疏信号 的零元素位置索引，进而确定出对应稀疏信号 的零元素位置；而对应原始稀疏信号中的非零元素位置，矢量 中的相应元素值则处于异类。 3) 根据得到的原始稀疏信号中非零元素位置索引，即可从重构字典中找出相应原子，以最小二乘法即可重构原始信号。
system: [SYSTEM]

user: 5. 仿真实验 我们设计了一个 的等角紧框架，把它写成矩阵形式为： 图2. 恢复后的跳频信号 Table 1 The comparison of BP， OMP and ETF algorithms’ computational efficiency and reconstructio 算法 稀疏度 (M，N) (6，16) (6，16) (12，16) (12，32) (12，128) (12，256) (12，1000) ETF √ √ √ √ √ √ √ Ignore Ignore 0.5s 0.5s 2s 4s 15s OMP √ × √ × × × × Ignore 0.5s 0.5s 2.5s 10s 22s 92s BP √ × √ × × × × 300s 370s 370s 390s 460s 500s 1060s 表1. BP算法、OMP算法和ETF稀疏重构方法的计算效率与重建性能对比 说明：符号(√)表示正确重建，符号(×)表示重建失败
system: [SYSTEM]

user: 6. 结束语 本文首先介绍了压缩采样原理及框架理论。利用等角紧框架具有的本身优点，并将其应用到稀疏信号的重构，在理论上证明了该方法的可行性，随后通过仿真实验，在定量上证明该方法的正确性。根据仿真结果可以看出，利用等角紧框架来重构稀疏信号计算将非常简洁、迅速，比传统的OMP算法有着高的多的计算效率，不需要像OMP算法那样进行复杂的内积运算。但存在的缺点也显而易见，由于该方法中对于零元素的位置是利用统计的方法计算得出，在面对大稀疏度时，计算也会变得复杂，耗时严重。因此，该方法在处理大稀疏度时，还需要更为深入的研究，但对于小稀疏度的信号重构有着明显的优势，同时在重构过程中还能一定程度的抑制干扰信号，有着很大的应用价值。
system: [SYSTEM]

user: 摘 要 在决策树算法中，属性取值种类的多少决定着决策树分支数量的多少。基于此，提出了一种新的属性取值优化的方法，实例证明该方法确实能优化生成决策树的分支数量，达到精简生成决策树结构的目的，且该方法对原C4.5算法的分类正确率没有影响。 关键词 :决策树，C4.5算法，属性取值，优化
system: [SYSTEM]

user: 1. 引言 决策树算法是一种最简单、最直接、最有效的文本分类算法。最早的决策树算法是ID3算法[ 1 ] ，于1986年由Quinlan提出，该算法是一种基于信息熵的决策树分类算法。由于该算法是以信息熵作为属性选择的标准，偏向于选择属性取值较多的属性，而属性取值较多的属性往往分类的贡献不大。因此，于1993年Quinlan在ID3算法的基础上又提出了一种改进算法，即C4.5算法 [ 2 ] 。该算法采用信息增益率作为属性选择的标准，继承了ID3算法的所有优点，克服了ID3算法中偏向于选择属性取值较多的属性作为测试属性的不足，同时还能对连续属性与未知属性进行处理，在剪枝方面也有很大的改进。 C4.5算法作为经典的决策树分类算法，已被广泛的应用到各个领域。但其仍然存在以下不足之处：1) 在计算信息增益的过程中(包括：分类所需信息量、信息熵、分割信息量)涉及的复杂的对数运算，计算机每一次计算都需要调用库函数，增大了生成决策树所需的时间开销；2) 生成决策树中分支数量过多，部分分支还能进行合并，进一步精简生成决策树的结构。 针对以上不足，已有很多学者提出了改进优化算法。文献 [ 3 ] ，作者通过引入高等数学中等价无穷的原理，对C4.5算法中的计算公式进行了改进，用简单的四则混合运算取代了复杂的对数运算，减少了生成决策树所需的时间开销。文献 [ 4 ] ，作者提出了一种对属性取值进行优化合并的方法，该方法通过将属性的不同取值分成多个样本子集，并计算各个样本子集的熵以及样本子集的平均熵值，并将熵值大于平均熵值的样本子集进行合并，并重新定义一个属性取值替代原数据表中的属性取值，实例证明该方法确实能起到精简生成决策树结构的作用。 本文针对生成决策树分支数量过多的不足，提出了一种新的属性取值优化方法，并用实例分析验证了该方法的有效性。
system: [SYSTEM]

user: 2. C4.5算法介绍 C4.5算法是一种基于信息熵的决策分类算法，该算法的核心思想是根据信息熵原理，选择样本集中信息增益率最大的属性作为分类属性，并根据该属性的不同取值构造决策树的分支，再对子集进行递归构造，直到完成决策树的构造 [ 5 ] 。 假设样本空间D中有正例集P个、反例集N个，且D = P + N，则一棵决策树能对待分类数据集做出正确类别判断所需的信息量为： (1) 如果以属性A作为决策树的根节点，且A具有V个值 ，它将H分为V个样本子集 ，设 中共有d个数据集，其中有p个正例和n个反例，则子集 的信息熵 可由下式计算： (2) 以属性A为根节点分类的信息熵为： (3) 则，以属性A为根节点的信息增益为： (4) 在C4.5算法中，是以信息增益率来选择分类属性的，而信息增益率等于信息增益与分割信息量的比值，其中分割信息量可由下式计算： (5) 其中， 表示属性A的所有取值中，任意样本子集占总样本集的比例。则，信息增益率可由下式计算： (6)
system: [SYSTEM]

user: 3. C4.5算法中属性取值的优化改进 3.1. 算法改进的基本思想 如何很好的选择测试属性决定着所构造决策树模型的质量，而所选测试属性的可能取值的数量与树的分支数量成正比。在C4.5算法中，一切计算的依据来源于信息论中的熵。因此，本文在信息熵的计算过程中，通过对测试属性的优化改进，以减少决策树的分支数量，提高决策树的质量。 根据信息熵的定义，熵值越大，对分类决策的贡献就越小。反之，熵值越小，对分类决策的贡献就越大，即能确定更多待分类对象所属类别。当信息熵为零时，对分类决策的贡献最大。当信息熵为零时，只存在两种情况，所有样本子集同属于正例集或者反例集(本文只研究只有两种决策属性的情况)。基于此，本节算法改进的基本思想为：对于给定的一组数据集，计算每个属性的信息增益率，选取信息增益最大的属性，将该属性按照属性取值的不同划分为多个样本子集，计算每一个样本子集的信息熵，取出信息熵为零的所有样本子集，并将其同属正例集或反例集的样本子集进行合并，定义新的属性取值，得到一个新的、复合的样本子集，并用该复合样本子集在测试集中替换构成该复合子集的样本子集。最后，再利用新的数据集来建立决策树。 3.2. 改进后算法的计算步骤 由上一节的分析，我们可以得到改进后算法的基本计算步骤，如下所示： 1) 根据给定的测试集，计算各个属性的信息增益率； 2) 选择信息增益率最大的属性，将该属性按照属性取值的不同划分为多个样本子集； 3) 计算各样本子集的信息熵； 4) 选取出所有信息熵为零的样本子集，并将其中同属于正例集或反例集的样本子集进行合并，自定义新的属性取值，得到一个新的、复合的样本子集； 5) 用新形成的复合样本子集取代原数据集中组成该复合样本子集的各个样本子集； 6) 利用新形成的数据集，计算信息增益率，其余部分与C4.5算法相同。
system: [SYSTEM]

user: 4. 实例分析 表1是对学生某次考试成绩的描述，已经过离散化处理，并按照分数段将各科目分为优、良、中、差，总评分为两类：合格与不合格，如表1所示。 4.1. 采用第3节中的改进算法对表1进行优化及决策树的生成过程 本文中对分类所需信息量、信息熵、信息增益、分割信息的计算采用文献 [ 6 ] 中改进的C4.5算法计算公式进行计算。与文献 [ 3 ] 类似，文献 [ 6 ] 也是通过引入高等数学中等价无穷小的理论，对C4.5算法计算公式中繁多的对数运算进行了优化。不同的是，二者优化后的计算公式略有不同，文献 [ 6 ] 优化后得到的计算公式更加简洁、直观，方便计算。因此，本文选用文献 [ 6 ] 中的优化结果来进行相关计算。 1) 计算各属性的信息增益率 2) 选取信息增益率最大的属性划分样本子集 由表1可得，我们可以将属性文综划分为： 、 、 、 四个样本子集。 3) 计算各样本子集的信息熵 属性文综各样本子集信息熵如下： 4) 合并信息熵为零且同属正例集或反例集的样本子集 在属性文综的各样本子集中，信息熵为零的有三个子集： 、 及 ，其中 和 同属合格，而 属于不合格，因此可以将 、 进行合并，并定义新的属性取值为：优良。 5) 合并后的新数据集如表2所示。 经属性优化合并后，属性文综的属性取值由原来的四个变为现在的三个，这样就能减少生成决策树的分支数量。 6) 决策树的生成 a) 以属性文综为根节点建立决策树如图1所示。 b) 将剩余属性计算其信息增益率如下： 由计算结果可得，属性英语的信息增益率最大，计算属性英语各个样本子集的信息熵，合并属性取值后得到表3。 选取属性英语作为第二层分类属性，生成的决策树如图2所示。 c) 将剩余属性调用1到5得到表4 到此，在剩余属性中，随便选择哪个都能确定分类。最终的决策树如图3所示。 4.2. 利用文献[ 6 ] 中改进的C4.5算法及表1生成决策树 由表1可知，决策属性为总评，共有20个属性值，其中正例值有17个，反例值有3个，分类所需信息量为： Table 1 Instantiation data tabl 序号 语文 数学 英语 文综 总评 1 中 良 差 中 合格 2 中 良 良 良 合格 3 良 中 中 良 合格 4 优 中 良 良 合格 5 中 中 中 中 合格 6 良 差 中 差 不合格 7 优 差 差 中 不合格 8 良 优 优 优 合格 9 中 中 优 良 合格 10 优 中 中 中 合格 11 差 良 良 差 不合格 12 良 中 良 良 合格 13 中 差 良 中 合格 14 中 中 优 良 合格 15 良 差 良 中 合格 16 优 中 优 良 合格 17 优 优 优 优 合格 18 良 差 良 中 合格 19 良 中 差 优 合格 20 中 中 中 中 合格 表1. 实例数据表 Table 2 After the first method processing and merging data tabl 序号 语文 数学 英语 文综 总评 1 中 良 差 中 合格 2 中 良 良 优良 合格 3 良 中 中 优良 合格 4 优 中 良 优良 合格 5 中 中 中 中 合格 6 良 差 中 差 不合格 7 优 差 差 中 不合格 8 良 优 优 优良 合格 9 中 中 优 优良 合格 10 优 中 中 中 合格 11 差 良 良 差 不合格 12 良 中 良 优良 合格 13 中 差 良 中 合格 14 中 中 优 优良 合格 15 良 差 良 中 合格 16 优 中 优 优良 合格 17 优 优 优 优良 合格 18 良 差 良 中 合格 19 良 中 差 优良 合格 20 中 中 中 中 合格 表2. 经方法一处理第一次合并后的数据表 Table 3 After the first method processing and second merging data tabl 序号 语文 数学 英语 总评 1 中 良 差 合格 5 中 中 中良 合格 7 优 差 差 不合格 10 优 中 中良 合格 13 中 差 中良 合格 15 良 差 中良 合格 18 良 差 中良 合格 20 中 中 中良 合格 表3. 经方法一处理第二次合并后的数据表 Table 4 After the first method processing and third merging data tabl 序号 语文 数学 总评 1 中 良 合格 7 优 差 不合格 表4. 经方法一处理第三次合并后的数据表 图1. 生成决策树第一步 图2. 生成决策树第二步 图3. 由本文改进算法最终生成的决策树图
system: [SYSTEM]

user: 摘 要 空间环境中，DSP等器件越来越频繁地发生单粒子软错误，严重影响了系统安全可靠地运行。针对DSP程序存储区的软错误，本文提出了一种基于完整性检查的控制流错误恢复方法。该方法在基于完整性检查的控制流错误检测方法的基础上，只需设置一个恢复指针和恢复存储区，即可在检测到控制流错误之后快速地恢复控制流错误。论文提出的方法对DSP的抗软错误加固设计与开发具有重要的指导意义。 关键词 :DSP，软错误，控制流错误，完整性检查，错误恢复
system: [SYSTEM]

user: 1. 引言 高性能DSP常用作空间飞行器信号处理系统的核心器件。当前，在深亚微米工艺下，集成电路的集成度不断增加、工艺尺寸越来越小、电路节点的临界电荷大大降低，使得DSP在空间环境中更容易发生单粒子软错误[ 1 ] 。软错误并没有对DSP造成永久性的损伤，但可能造成存储的程序或数据发生改变，影响程序正确的执行流程，导致输出错误[ 2 ] 。因此，必须采取相应的加固、容错或检错纠错等措施，增强其抗软错误能力。 DSP是一种典型的商用现成品(COTS，commercial-off-the-shelf) [ 3 ] 。COTS产品的体系结构在形成后就不能更改，这使得在DSP上不能应用一些传统的集成电路加固方法，如采用抗辐照材料对敏感器件进行屏蔽加固或进行模块冗余等 [ 4 ] 。因此，基于DSP的空间信号处理系统的容错方案多采用控制流错误检测和恢复方法。控制流错误是指程序偏离正确的执行流程，即在没有出现跳转指令的地方发生了跳转，在出现跳转指令的地方却不跳转或发生错误跳转 [ 5 ] 。 当前，控制流错误检测主要是采取签名监测的思想。即先将程序划分为若干个基本块的集合，在编译时为每个基本块分派一个静态签名，程序运行时再计算出基本块的动态签名，并通过比较静态签名与动态签名的一致性来判断程序是否发生控制流错误 [ 6 ] - [ 12 ] 。R. Vemu等人首次提出了控制流错误恢复算法及其实现，它本质上是在原程序中添加一个例程，该例程能够恢复原程序代码间的非法分支转移 [ 13 ] 。谭兰芳等人提出了一种类似的恢复算法CFEDR [ 14 ] [ 15 ] ，该方法能检测并恢复所有的基本块间的控制流错误并恢复绝大部分基本块内的控制流量错误。Hamid R. Zaradi等人提出了CDCC和MCP [ 16 ] 两种控制流恢复算法。CDCC主要根据数据依赖图，为全局变量赋值影子变量，当检测到错误时再将影子变量赋值给对应的全局变量，从而实现状态恢复。MCP则是通过将控制流恢复至全局变量赋初值的位置来实现错误的恢复。 为此，本文借鉴签名检测，提出了一种基于程序执行流程完整性检查的DSP软错误恢复方法ICBR (Integrity Checking Based Recovery)。该方法通过检查每个基本块的执行完整性来判断程序是否发生控制流错误；当检测出软错误后，引导程序控制流返回到出错的基本块处，重新开始执行。本文方法相对已有的控制流检测技术，移植性好、检测覆盖率高，且能以很小的存储开销来实现软错误的恢复。
system: [SYSTEM]

user: 2. 基于完整性检查的控制流错误恢复方法 2.1. 基于完整性检查的控制流错误检测 控制流错误是指程序偏离正确的执行流程，即在没有出现跳转指令的地方发生了跳转，在出现跳转指令的地方却不跳转或发生错误跳转。基于完整性检查的控制流错误检测通过检测每个基本块的执行完整性来判断程序是否发生控制流错误。 1) 基本块的划分 将程序划分为基本块的集合是实现任何控制流错误检测的基础。基本块是指一段顺序执行的代码，程序的执行只能从基本块的第一条语句进入并从基本块最后一条语句退出。实现基本块的完整性检查需要获得每个基本块的结构信息。 本文选择在汇编语言一级划分基本块。在汇编语言一级划分基本块就是在顺序扫描汇编程序的过程中，不断的寻找程序控制指令如函数调用指令、函数返回指令和跳转指令的位置来确定出每个基本块的边界。由此，基本块的划分规则是： a) 以跳转指令、函数调用指令和函数返回指令所在位置作为当前基本模块的出口； b) 当前跳转(调用、调用返回)的后一指令所在位置作为下一个基本模块的入口； c) 当前跳转(调用、调用返回)的目的指令所在位置作为另一个基本模块的入口。 2) 分块表的设计 分块表主要用于存储基本块的结构信息，这些信息是检查基本块完整性的重要依据。基本块的结构信息是指基本块入口(基本块第一条指令在程序中的地址)、基本块出口(基本块最后一条指令在程序中的地址)、块长度(基本块中包含的指令条数)、下一跳地址(是指跳转指令的目的地址或函数调用时，子函数的第一条指令所在的地址)。 由于在基于完整性检查的控制流错误检测采用了关键指令三模冗余技术 [ 14 ] 来提高控制流在基本块间的转移正确率。关键指令三模冗余是指将三条相同的指令执行一次，并对三条指令的执行结果做表决，将占优势的结果作为指令执行的正确结果来采用。为了实现关键指令三模冗余，需将每个基本块的最后一条指令在分块表中存储三份。为此，将分块表设计成一个链表，其中链表结点的结构如图1所示。 3) 检测点的设置 程序运行过程中，其控制流每进入一个基本块，就需在控制流退出这个基本块时对其进行完整性检查。因此，在基于完整性的检查的检测方案中，选择在每个基本块的出口处设置检测点。出于降低存储开销的考虑，将检测代码设计成一个独立的模块置于程序代码的最后，而在每个基本块的最后一条指令处设置检测点——即将每个基本块的最后一条指令替换为一条跳向检测模块的跳转指令。 这种检测点设置方式的优点是在每个检测点处复用检测代码，从而降低程序的存储开销。对于原来的基本块的最后一条指令，在划分基本块的时候已经将它的三个备份存储在分块表的相应结点中，这条指令将在检测模块的最后执行。 4) 检测模块的构建 检测模块是一个置于程序末尾的独立代码段，用于实现具体的控制流错误检测。所有基于软件实现的控制流错误检测都会“中断”原程序的执行，为了使被“中断”的程序控制流能正确返回。因此，在检测过程中开辟一个断点存储区，用于保存检测点处的程序断点信息。此处保存的断点信息除了用于程序控制流的正确返回，也将用于初始化下一个基本块的完整性检测。完成程序断点保护后，即可开始进行基本块的完整性检查。检测过程如图2所示。 图2中，计数器counter的值在控制流每进入一个基本块之前清零，此后每执行一条指令，counter的值加1直至在检测点处停止计数。 5) 基于完整性检查的控制流错误检测 在检测过程中，设定一个分块表工作指针，该指针始终指向下一个即将进行完整性检查的基本块的信息所在的结点。基于完整性检查的控制流错误检测执行流程如图3所示，算法描述如下。 图1. 分块表结点的结构示意图 图2. 检测模块内的执行流程图 图3. 执行完整性检测流程图 Step 1. 比较当前检测点处的地址与分块表工作指针所指的结点中的基本块出口信息是否一致。 Step 2. 比较counter的值是否与分块表工作指针所指的结点中的块长度信息是否一致。根据前两步的比较结果，形成以下三种结论： a) 若地址比较和counter值比较均一致，表明当前基本块被完整执行，程序没有发生控制流错误； b) 若地址比较结果不一致，表明程序发生基本块间的控制流错误跳转； c) 若地址比较结果一致而counter值比较不一致，表明程序发生基本块内的错误跳转。 Step 3. 如果检测到控制流错误，则报告控制流错误并执行恢复控制流错误操作。 Step 4. 如果没有检测到控制流错误，则将counter的值置零，并采用“预转移”方法将分块表工作指针移向下一个即将进行完整性检查的结点。 “预转移”是指在控制流返回原程序之前恢复程序断点信息并用上一个基本块中的最后一条指令执行三模冗余，再根据三模冗余的结果决定将工作指针指向下一个即将进行完整性检查结点。“预转移”只用于实现工作指针的移动，控制流并没有真正发生转移。完成上述步骤后，须再一次恢复之前保存的程序断点信息并执行三模冗余，才能使控制流真正转移回原程序。 2.2. ICBR的工作机制 控制流错误恢复就是指重新执行发生控制流错误的基本块。通过分块表工作指针的位置，可以准确定位出发生控制流错误的基本块。在上一个检测点处，控制流从检测模块的末尾跳向当前工作指针指向的结点所对应的基本块。为了重新执行发生控制流错误的基本块，可以再次执行上一次检测时，在检测模块末尾实现的控制流转移过程，再重新加载未受软错误影响的基本块代码并执行即可恢复之前发生的控制流错误。 为了实现上述控制流恢复方案，本文提出设立恢复指针和恢复存储区。其中，恢复指针始终指向上一次进行完整性检查的基本块所对应的分块表结点。在每次分块表工作指针转移前，将工作指针的值赋予恢复指针即可实现恢复指针的移动。恢复存储区则用于存储上一次检测时保存的程序断点信息，其大小与断点存储区的大小一致。即在系统中开辟出两个大小等于保存程序断点信息所需的存储区域，分别命名为存储区X和存储区Y，将两个存储区域交替作为断点存储区和恢复存储区使用。例如，在一次完整性检测时，存储区X作为恢复存储区保存着上一次完整性检测时的程序断点信息，则存储区Y就作为当前完整性检查的断点存储区；而在下一次完整性检查时，将存储区Y作为恢复存储区且其内的信息不变，同时将存储区X作为断点存储区使用。
system: [SYSTEM]

user: 3. 示例与性能分析 3.1. ICBR示例 为了验证本文方法的有效性，本节将通过一个示例来具体说明检测机制和恢复机制的工作过程。 某DSP汇编程序的局部控制流如图4所示。图4中矩形表示基本块，在基本块1、2和3中，标示出了检测点的位置；黑色箭头表示正确的控制流转移，红色虚线箭头表示错误的控制流转移。 若程序首先执行基本块1，在控制流进入基本块1之前，分块表工作指针已经指向基本块1所对应的分块表结点。在检测点1处，控制流跳向检测模块。在检测模块内，先将程序断点信息保存在存储区X中，接着对基本块1的完整性进行检查，检查结果表明基本块1内没有发生控制流错误。然后，将当前工作指针的值赋予恢复指针，即此时恢复指针指向基本块1所对应的分块表结点，并采用“预转移”方法将工作指针指向下一个即将执行的基本块所对应的结点。 假设在执行基本块1后，程序控制流会进入基本块2，则“预转移”的结果是将工作指针指向基本块2所对应的结点。在检测模块工作的最后，应用关键指令三模冗余技术将程序控制流转移到基本块2处继续执行。若基本块2内发生了一个基本块2内部到基本块3内部的控制流错误转移，则程序会错过检测点2。当程序执行到检测点3时，再次调用检测模块。 图4. 控制流错误检测和恢复示例 由于在前一次完整性检查中，将存储区X作为了断点存储区，则此时应将存储区X作为恢复存储区并维持其信息不变，而将存储区Y作为当前完整性检查的断点存储区。接着，对基本块2的完整性进行检查，即先将当前检测点的地址(检测3的地址)与分块表工作指针所指的结点中的基本块出口信息(检测点2的地址)比较，比较的结果为不一致。由此，检测模块判断在基本块2内发生了控制流错误。 检测出当前控制流错误后，则进行控制流错误恢复工作。控制流错误的恢复过程与检测模块最后的控制流转移过程类似，即将恢复存储区X内的程序断点信息恢复一次，然后执行恢复指针所指的结点中存储的三条指令，再一次用关键指令三模冗余技术实现了基本块1到基本块2的控制流转移。接着，程序重新执行基本块2，实现控制流错误恢复。 由此可以看出，在控制流错误检测的基础上，设置一个恢复指针和新开辟一个程序断点存储区，即可在检测到控制流错误后，快速地实现控制流错误恢复。在关键指令三模冗余技术的配合下，基于完整性检查的控制流错误检测方法能检测出所有类型的控制流错误。 上述示例中讨论了一种类型的控制流错误的恢复过程，其它类型的控制流错误的恢复过程与此完全一致。 3.2. 性能分析 目前，公开文献中提及的控制流错误恢复方法基本上都能对检测到的控制流错误进行适当的恢复，各种恢复方法之间的差异主要体现在性能开销上，性能开销一般由时间开销和存储开销来评价。值得注意的是，错误恢复方法的性能开销一般都是连同其控制流错误检测方法来分析的。ICBR所带来的存储开销比较衡定，其运行时间开销主要受源程序中循环结构的影响，例如在256个样本点的FFT程序中，多数循环结构的执行次数为256次，在128个样本点的FFT程序中，多数循环结果的执行次数为128次，这将导致前者的时间几乎为后者的两倍。但是，在ICBR中，循环结构处的检测点是可以优化的，此时，通过降低ICBR的错误检测和恢复能力，可以有效减少运行时间的增加。