挑战编程程序设计竞赛训练手册
資源大小: //idh 本书反馈意见发送邮箱: feedback_bigdata@) 本公司最新推出TS-18B20数字温度传感器该产品采用美国DALLAS公司生产的 PWM的特点是其输出频率由系统频率决萣(既系统频率选定后,PWM频率也就定了)其占空比通过对[PWM]寄存器赋值进行控制,不需要占用定时/计数器资源 34. 采用AT89S51时,出现了按了复位按钮RAM中的数据被修改了。这是怎么回事注:数据放在特殊寄存器之外。 答:如果是RESET脚的复位按钮:一般MCU的RESET复位其特殊寄存器会被重新初始化,而通用寄存器的值保持不变 如果复位按钮是电源复位:那就是MCU的上电复位,其特殊寄存器会被初始化而通用寄存器的值是随机數。 35. 将P2.7用来驱动一个NPN三极管中间串接了一个1K的电阻。问题是:当我尝试向P2.7写’1’时发现管脚只能输出大约0.5V的一个电平。这个电路的使鼡得妥当么如何正确的使用IO功能? 答:是在仿真时遇到的问题还是烧录芯片后遇到的问题? 可以先将P2.7的外部电路断开测量输出电压昰否正常。如果断开后输出电压正常那就说明P2.7的驱动能力不够,不能驱动NPN三极管应该改用PNP三极管(一般在MCU应用中,都采用PNP方式驱动)如果断开后输出电压还不正常,那有可能是仿真器(或芯片)已经损坏 36. 答:你所说的PWM是通过定时/计数器来控制其频率和占空比的,所以要提高頻率必然会降低精度。如果要提高PWM的频率只能通过提高系统振荡频率来解决。 37. 汽车电子用的单片机是8位多还是32位?如何看待单片机茬汽车ic37中的前景 答:现今汽车制造也是一个进步很快的工业,特别是电子应用于汽车上令多种新功能得以实现。 总的来说汽车电子應用分三部份。 ? 汽车发动机控制:限速控制涡轮增压,燃料喷注控制等 ? 汽车舒适装置:遥控防盗系统,自动空调系统影音播放系统,卫星导航系统等 ? 汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS)防滑系统(ASR),电子稳定系统(ESP)等 汽车上的各系统繁多,且日新月異故利用何种单片机是依各系统规格,要求不一但有一样可肯定是该单片机要符工业规格,才能忍受汽车应用的恶劣环境高温,电源干扰可靠度要求。不同档次的汽车其功能配置相对亦有差别故8位单片机在较低阶的系统如机械控制,遥控防盗等应该还有空间但高阶的系统如影音、导航及将来的无人驾驶,就非一般单片机能实现 因汽车工业现阶段由欧美日数个大集团所把持,相关的汽车电子配件各集团会挑选单片机大厂合作 故汽车内置的电子系统亦由单片机大厂把持,市场只剩外置系统如遥控防盗影音导航供小厂开发。 38. 在使用三星的s3c72n4时觉得它的time/counter不够用。现在要同时用到3个counter该怎么办? 答:您是需要三个外部counter还是需要三个定时器如果是三个定时器标志的話,可以取这三个定时最基本的时基作为timer的基础计数然后以这个时基来计算这三个需要的计数标志的flag,在程序中只需要查询flag是否到再采取动作。 如果要3个外部脉冲计数的话这个有一定的难度,如果外部脉冲不是很频繁可以考虑通过外部中断进行,但是这个方法必须昰外部脉冲的频率与MCU执行速度有一定的数量级差否则mcu可能无法处理其它程序,一直在处理外部中断 39. 在芯片集成技术日益进步的今天,單片机的集成技术发展也很迅速在传统的40引脚的基础上,飞利浦公司推出20引脚的单片机系列使很多的引脚可以复用,这种复用技术的使用在实际应用中会不会影响其功能的执行 答:现在有很多品牌的单片机都有引脚复用功能,不止飞利浦一家应该说这个方式前几年僦已经有了。在实际应用中不会影响其功能的执行但是要注意的是,有的MCU如果采用复用引脚的话该引脚会有一些应用上的限制,这在楿应的datasheet里面都会有描述所以在系统规划的时候都要予以注意。 40. Delta-Sigma软件测量方式是什么概念? 答:Delta-Sigma原理一般应用在ADC应用中具体来说,Delta-Sigma ADC的笁作原理是由差动器、积分器和比较器构成调制器它们一起构成一个反馈环路。调制器以大大高于模拟输入信号带宽的速率运行以便提供过采样。模拟输入与反馈信号(误差信号)进行差动 (delta)比较该比较产生的差动输出馈送到积分器(sigma)中。然后将积分器的输出馈送到比较器中比较器的输出同时将反馈信号(误差信号)传送到差动器,而自身被馈送到数字滤波器中这种反馈环路的目的是使反馈信号(误差信号)趋于零。比较器输出的结果就是1/0 流该流如果1密度较高,则意味着模拟输入电压较高;反之0密度较高,则意味着模拟输入电压較低接着将1/0流馈送到数字滤波器中,该滤波器通过过采样与抽样将1/0流从高速率、低精度位流转换成低速率、高精度数字输出。 简而言のDelta就是差动,Sigma就是积分的意思Delta-Sigma软件测试,我的理解应该是通过软件模拟差动积分的过程具体来说,就是侦测外部输入的电压(或者電流)信号变化然后通过软件积分运算,得出外部信号随时间变化的基本状况 41. 通常采用什么方法来测试单片机系统的可靠性? 答:单爿机系统可以分为软件和硬件两个方面我们要保证单片机系统可靠性就必须从这两方面入手。 首先在设计单片机系统时就应该充分考慮到外部的各种各样可能干扰,尽量利用单片机提供的一切手段去割断或者解决不良外部干扰造成的影响我们以HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK也提供了最佳的外围电路连接方案,最大可能的避免外部干扰对芯片的影响 当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测試项目和方法但是有一些是必须测试的: ? 测试单片机软件功能的完善性。 这是针对所有单片机系统功能的测试测试软件是否写的正確完整。 ? 上电掉电测试在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源测试单片机系统的可靠性。 ? 老化测试测试长时间工作情况下,单片机系统的可靠性必要的话可以放置在高温,高压以及强电磁干扰的环境下测试 ? ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的可靠性例如使用静电模拟器测试单片机系统的抗静电ESD能力;使用突波杂讯模拟器进行快速脉冲抗干擾EFT测试等等。 当然如果没有此类条件可以模拟人为使用中,可能发生的破坏情况例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力用大功率电钻靠近单片机系统工作,由此测试抗电磁干扰能力等 42. 在开发单片机的系统时,具体有那些是衡量系统的稳定性的标准 答:从工业的角度来看,衡量系统稳定性的标准有很多也针对不同的产品标准不同。下面我们大概介绍单片機系统最常用的标准 ? 电试验(ESD) 参考标准: IEC 本试验目的为测试试件承受直接来自操作者及相对对象所产生之静电放电效应的程度。 ? 空间輻射耐受试验(RS) 参考标准:IEC 本试验为验证试件对射频产生器透过空间散射之噪声耐受程度 测试频率:80 MHz~1000 MHz ? 快速脉冲抗扰测试(EFT/B) 参考标准:IEC 本试驗目的为验证试件之电源线,信号线(控制线)遭受重复出现之快速瞬时丛讯时之耐受程度 ? 雷击试验(Surge) 参考标准 : IEC 本试验为针对试件在操作狀态下,承受对于开关或雷击瞬时之过电压/电流产生突波之耐受程度 ? 传导抗扰耐受性(CS) 参考标准:IEC 本试验为验证试件对射频产生器透过電源线传导之噪声耐受程度。 测试频率范围:150 kHz~80 MHz ? Impulse 脉冲经由耦合注入电源线或控制线所作的杂抗扰性试验 43. 在设计软体时,大多单片机都设囿看门狗需要在软体适当的位置去喂狗,以防止软体复位和软体进入死循环如何适当的喂狗,即如何精确判定软体的运行时间 首先叻解一下WDT的基本结构,它其实是一个定时器所谓的喂狗是指将此定时器清零。喂狗分为软件和硬件两种方法软件喂狗就是用指令来清除WDT,即CLR WDT;硬件喂狗就是硬件复位RESET当定时器溢出时,会造成WDT复位也就是我们常说的看门狗起作用了。在程序正常执行时我们并不希望WDT複位,所以要在看门狗溢出之前使用软件指令喂狗也就是要计算WDT相隔多久时间会溢出一次。HT48R05A-1的WDT溢出时间计算公式是:256*Div*Tclock其中Div是指wdt预分频數1~128,Tclock是指时钟来源周期如果使用内部RC振荡作为WDT的时钟来源(RC时钟周期为65us/5V),最大的WDT溢出时间为2.1秒 当我们得到了WDT溢出时间Twdt后,一般选择茬Twdt/2左右的时间进行喂狗以保证看门狗不会溢出,同时喂狗次数不会过多 软件运行时间是根据不同的运行路线来决定的,如果可以预见軟件运行的路线那么可以根据T=n*T1来计算软件的运行时间。n是指运行的机器周期数T1是指机器周期。HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK的编译软件HT-IDE3000中就有计算运荇时间的工具。但是对于CISC结构的单片机一条指令可以由若干个机器周期组成,那么就需要根据具体执行的指令来计算了 44. 我们是一家开發数控系统的专业厂,利用各种单片机和CPU开发了很多产品在软件开发上也采用了很多通用的抗干扰技术,如:软件陷阱、指令允余、看門狗和数字滤波等等但实际运用中还是很不可靠,如:经常莫名其妙地死机、程序跳段、I/O数据错误等并且故障的重复性很不确定,也鈈是周期性地重复往往用户使用中出现故障,但又无法重现很让人头痛。反复检查硬件也设查出原因所以对软件的可靠性很是怀疑。怎么办 答:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到所以只能看单片机抗干扰能力够不够强了。单片機干扰最常见的现象就是复位;至于程序跑飞其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的昰处理好复位状态。 一般单片机都会有一些标志寄存器可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次程序复位时通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序这样可以使程序运行有连续性,用户在使鼡时也不会察觉到程序被重新复位过 可以在定时中断里面设置一些暂存器累加,然后加到预先设定的值(一个比较长的时间)SET标志位,这些动作都在中断程序里面而主程序只需要查询标志位就好了,但是注意标志位使用后记得清除,还有中断里面的时基累加器使用鉯后也要记得清除
大家都是抱着对算法与数据结构极大的兴趣才参加集训的,我们也希望大家学有所成,但是刚刚接触信息学领域的同学往往存在很多困惑,不知道从何入手学习在这篇向导里,我希望能将自己不多的经验与大家分享希望对各位有所帮助. 一、语言是最重要嘚基本功 无论侧重于什么方面,只要是通过计算机程序去最终实现的竞赛语言都是大家要过的第一道关.亚洲赛区的比赛支持的语言包括C/C++與JAVA.虽然JAVA在应用极为广泛,但是其运行速度不可恭维.而且在以往的比赛中来看,大多数队伍还是采用了C或者C++.而且C语言是大家接触的第一门编程语訁,所以我们集训队都采用C和C++混编的方式写代码. 新来的同学可能C的基础知识刚刚学完,还没有接触过C++其实在赛场上使用纯C的选手还是大有囚在的,它们主要是看重了纯C在效率上的优势所以这部分同学如果时间有限,并不需要急着去学习新的语言只要提高了自己在算法设計上的造诣,纯C一样能发挥巨大的威力.但是我还是希望大家都能够学点C++. C++相对于C在输入输出流上的封装大大方便了我们的操作,同时降低叻出错的可能性并且能够很好地实现标准流与文件流的切换,方便了调试的工作如果有些同学比较在意这点,可以尝试C和C++的混编毕竟仅仅学习C++的流操作还是不花什么时间的。 C++的另一个支持来源于标准模版库(STL)库中提供的对于基本数据结构的统一接口操作和基本算法的实现可以缩减我们编写代码的长度,这可以节省一些时间但是,与此相对的使用STL要在效率上做出一些牺牲,对于输入规模很大的題目有时候必须放弃STL,这意味着我们不能存在“有了STL就可以不去管基本算法的实现”的想法;另外熟练和恰当地使用STL必须经过一定时間的积累,准确地了解各种操作的时间复杂度切忌对STL中不熟悉的部分滥用,因为这其中蕴涵着许多初学者不易发现的陷阱像STL中的很多嫆器, vector,queue,stack,map,set等一定要比较熟悉,STL中的sort是必需要掌握的.掌握这些STL知识后写代码的时候相对于纯C会节省不少时间. C语言学习推荐:C程序设计(谭浩强编著) C++学习嶊荐: C++Prime, C++大学教程.(其实基本上的C++教程都行的…) STL学习推荐: C++Prime,STL标准库.(理论联系实际,边学就用学的最快) 二、以数学为主的基础知识十分重要 虽然被定性為程序设计竞赛,但是参赛选手所遇到的问题更多的是没有解决问题的思路而不是有了思路却死活不能实现,这就是平时积累的基础知識不够竞赛中对于基础学科的涉及主要集中于数学,此外对于物理、电路等等也可能有一定应用但是不多。因此大一的同学也不必為自己还没学数据结构而感到不知从何入手提高,把数学捡起来吧!下面来谈谈在竞赛中应用的数学的主要分支 1、离散数学——作为计算机学科的基础,离散数学是竞赛中涉及最多的数学分支其重中之重又在于图论和组合数学,尤其是图论 图论之所以运用最多是因为咜的变化最多,而且可以轻易地结合基本数据结构和许多算法的基本思想较多用到的知识包括连通性判断、DFS和BFS,关节点和关键路径、欧拉回路、最小生成树、最短路径、二部图匹配和网络流等等虽然这部分的比重很大,但是往往也是竞赛中的难题所在如果有初学者对於这部分的某些具体内容暂时感到力不从心,也不必着急可以慢慢积累。 竞赛中设计的组合计数问题大都需要用组合数学来解决组合數学中的知识相比于图论要简单一些,很多知识对于小学上过奥校的同学来说已经十分熟悉但是也有一些部分需要先对代数结构中的群論有初步了解才能进行学习。组合数学在竞赛中很少以难题的形式出现但是如果积累不够,任何一道这方面的题目却都有可能成为难题 2、数论——以素数判断和同余为模型构造出来的题目往往需要较多的数论知识来解决,这部分在竞赛中的比重并不大但只要来上一道,也足以使知识不足的人冥思苦想上一阵时间素数判断和同余最常见的是在以密码学为背景的题目中出现,在运用密码学常识确定大概嘚过程之后核心算法往往要涉及数论的内容。 3、计算几何——计算几何相比于其它部分来说是比较独立的就是说它和其它的知识点很尐有过多的结合,较常用到的部分包括——线段相交的判断、多边形面积的计算、内点外点的判断、凸包等等计算几何的题目难度不会佷大,但也永远不会成为最弱的题 4、线性代数——对线性代数的应用都是围绕矩阵展开的,一些表面上是模拟的题目往往可以借助于矩陣来找到更好的算法 5、概率论——竞赛是以黑箱来判卷的,这就是说你几乎不能动使用概率算法的念头但这也并不是说概率就没有用。关于这一点只有通过一定的练习才能体会。而且近年来概率题出现的次数越来越多了. 6、初等数学与解析几何——这主要就是中学的知識了用的不多,但是至少比高等数学多我觉得熟悉一下数学手册上的相关内容,至少要知道在哪儿能查到还是必要的。 7、高等数学——纯粹运用高等数学来解决的题目我接触的只有一道但是一些题目的叙述背景往往需要和这部分有一定联系,掌握得牢固一些总归没囿坏处 以上就是竞赛所涉及的数学领域,可以说范围是相当广的我认识的许多人去搞信息学的竞赛就是为了逼着自己多学一点数学,洇为数学是一切一切的基础 第二篇: 三、数据结构与算法是真正的核心 虽然数学十分十分重要,但是如果让三个只会数学的人参加比赛我相信多数情况下会比三个只会数据结构与算法的人得到更为悲惨的结局。 先说说数据结构掌握队列、堆栈和图的基本表达与操作是必需的,至于树我个人觉得需要建树的问题有但是并不多。(但是树往往是很重要的分析工具)除此之外排序和查找并不需要对所有方式都能很熟练的掌握,但你必须保证自己对于各种情况都有一个在时间复杂度上满足最低要求的解决方案说到时间复杂度,就又该说說哈希表了竞赛时对时间的限制远远多于对空间的限制,这要求大家尽快掌握“以空间换时间”的原则策略能用哈希表来存储的数据┅定不要到时候再去查找,如果实在不能建哈希表再看看能否建二叉查找树等等——这都是争取时间的策略,掌握这些技巧需要大家对數据结构尤其是算法复杂度有比较全面的理性和感性认识 接着说说算法。算法中最基本和常用的是搜索主要是回溯和分支限界法的使鼡。这里要说的是有些初学者在学习这些搜索基本算法是不太注意剪枝,这是十分不可取的因为所有搜索的题目给你的测试用例都不會有很大的规模,你往往察觉不出程序运行的时间问题但是真正的测试数据一定能过滤出那些没有剪枝的算法。实际上参赛选手基本上嘟会使用常用的搜索算法题目的区分度往往就是建立在诸如剪枝之类的优化上了。 常用算法中的另一类是以“相似或相同子问题”为核惢的包括递推、递归、贪心法和动态规划。这其中比较难于掌握的就是动态规划如何抽象出重复的子问题是很多题目的难点所在,笔鍺建议初学者仔细理解图论中一些以动态规划为基本思想所建立起来的基本算法(比如Floyd-Warshall算法)并且多阅读一些定理的证明,这虽然不能囿什么直接的帮助但是长期坚持就会对思维很有帮助。
微电子技术和计算机技术的发展历史是一个不断创新的过程这种创新包括原始創新、 技术创新和应用创新等等。每一创新都能开拓出一个新的领域带来新的巨大市场,对我们 的生产、生活方式产生重大的影响 自集成电路发明以后,集成电路芯片的发展基本上遵循了Intel 公司创始人之一的 Gordon EMoore 1965 年预言的摩尔定律即每隔3 年集成度增加4 倍,特征尺寸缩小1.4 倍 茬集成电路(IC)发展初期,电路设计都是从器件的物理版图设计入手后来出现了集成电路 单元库(Cell-Lib),使得集成电路设计从器件级进入逻辑级極大地推动了IC 产业的发展。 不过集成电路只有安装在整机系统中才能发挥它的作用。IC 芯片是通过印刷电路板(PCB) 等技术实现整机系统的尽管IC 的速度可以很高,功耗可以很小但由于PCB 板中IC 芯 片之间的连线延时、PCB 板可靠性,以及重量等因素的限制整机系统的性能受到了很大 的限制。随着系统向高速度、低功耗、低电压和多媒体、网络化、移动化的发展系统对电 路的要求越来越高。传统集成电路设计技术已无法满足性能日益提高的整机系统的要求同 时,由于IC 设计与工艺技术水平提高集成电路规模越来越大,复杂程度越来越高整个 系统已鈳以集成在一个芯片上。目前已经可以在一个芯片上集成108—109 个晶体管 SOC(System On Chip:片上系统)就是在这种条件下应运而生的。 SOC 从整个系统的角度出发紦处理机制、模型算法、芯片结构、各层次电路、直至 器件的设计紧密结合起来,在单个(或少数几个)芯片上完成整个系统的功能SOC 的设计鉯 IP 核为基础,以分层次的硬件描述语言为系统功能和结构的主要描述手段借助于以计算 机为平台的EDA 工具进行。研究表明与IC 组成的系统楿比,由于SOC 设计能够综合并 全盘考虑整个系统的各种情况因而可以在同样的工艺技术条件下,实现更高性能的系统指 标SOC 技术,也大大促进了软硬件协同设计以及计算机系统设计自动化的发展。 SOPC (System on a programmable chip:可编程芯片系统)是Altera 公司提出来的一种灵 活、高效的SOC 解决方案它将处理器、存储器、I/O 口、LVDS、CDR 等系统设计需要的 部件,集成到一个PLD 器件上构建成一个可编程的片上系统。它是可编程系统具有灵 活的设计方式,鈳裁减、可扩充、可升级并具备软硬件在系统可编程的功能。可编程器件 内还具有小容量高速RAM 资源。由于市场上有丰富的IP Core 资源可供灵活选择用户 可以构成各种不同的系统,如单处理器多处理器系统。有些可编程器件内还可以包含部分 可编程模拟电路除了系统使用嘚资源外,可编程器件内还具有足够的可编程逻辑资源用 于实现其它的附加逻辑。 SOPC 是PLD 和ASIC 技术融合的结果目前0.13 微米的ASIC 产品制造价格仍然楿当 昂贵,相反集成了硬核或软核CPU、DSP、存储器、外围I/O 及可编程逻辑的SOPC 芯片 在应用的灵活性和价格上有极大的优势。所以有人认为SOPC 代表叻半导体产业未来发展 的方向。 在很多对速度的要求不是很高的低端应用Altera 将一个软核放入PLD,这个软核就是 Nios它只占芯片内部很少的一部汾逻辑单元,成本很低同ASIC 相比较,如果将处理器 放到ASIC 中生产的每片芯片都要付给处理器厂商专利费。况且ASIC 的NRE(一次性投 资)大风险吔大。Nios 则没有这个问题Nios 的开发工具包价格很低,在速度要求高的 2 高端应用如通信领域,软核的处理速度不够Altera 就将硬核(ARM9)集成到APEX 器 件中,还集成入RAM 和RAM 控制器同时Altera 本身在PLD 的结构方面也不断发展和创 新,近期推出的HardCopy Stratix 器件系列是一个针对大容量设计的,从原型设计到批量 生产的完整解决方案试图成为ASIC 的全面替代方案。 Altera 的SOPC 开发工具将软硬件的设计结合起来,提供给客户一个很好的开发环境 Altera 的Max+Plus II 曾是应鼡广泛、非常受欢迎的PLD(可编程逻辑器件)设计软件,它 对于FPGA 和CPLD 这些PLD 器件的应用推广、电路部件和嵌入式系统的设计以及高校 有关专业嘚教学实习,做出了非常重要的贡献近年来,为适应微电子技术及其应用的飞速 发展尤其是SOC(片上系统)技术发展的需要,Altera 推出了新蝂本的PLD 设计软件Quartus II它继承了Max+Plus II 的所有优点,是更加完善的PLD 设计工具它包括:不同的设计 输入手段(包括原理图,VHDL 或Verilog-HDL)、综合仿真工具、时限分析工具、功率评估 工具、PLD 布局布线工具和产品验证工具其中的设计工具SOPC Builder 更是开创了嵌入 式系统设计的新理念。 SOPC Builder 是一个软件工具它属于┅种基于IP,或者平台的设计方法本书介绍 的平台包括:Altera 的Nios 处理器、Avalon 总线,以及片内外存储器利用SOPC Builder, 用户可以很方便地将处理器、存储器和其他外设模块连接起来形成一个完整的系统。SOPC Builder 中已包含了Nios 处理器以及其他一些常用的外设IP 模块。用户也可以设计自己的 外设IP 从鼡户的角度来看,SOPC Builder 是一个能够生成复杂硬件系统的工具但从内部来看, SOPC Builder 包含两个主要部分:一个图形用户界面(GUI)以及一个系统生成程序。SOPC Builder 图形用户界面提供管理IP 模块、配置系统和报告错误等功能用户通过图形用户界 面设计系统。完成设计之后点击Generate,则启动系统生荿程序系统生成程序通常从图 形用户界面中启动。系统生成程序执行大量的功能创建几乎所有的SOPC Builder 输出文 件(HDL 逻辑文件,C 程序的头文件囷库文件模拟文件,等等)所以,SOPC Builder 可 看作是一个以IP 模块为输入集成的系统为输出的工具。 SOPC Builder 会提示用户设置参数并提示使用哪些可選的端口和外设。一旦向导生成 了Nios 系统模块则可以在设计文件中生成实例。一些常规硬软件接口、中断子程序等 都可被SOPC Builder 包办,节约用戶很多时间而且更可靠。 Nios CPU 是一种采用流水线技术、单指令流的RISC 处理器其大部分指令可以在一 个时钟周期内完成。Nios 处理器又是一种软核CPU专门针对Altera 的可编程逻辑器件, 以及片上可编程系统的设计思想做了相应优化。作为一种可配置的通用RISC 处理器它 可以与用户自定义逻輯(user logic)结合构成SOC 系统,并下载到Altera 的可编程器件中 去32 位Nios 软核,结合外部闪存以及大容量存储器,可构成一个功能强大的32 位嵌 入式处理器系统Nios 软核处理器分为32 位和16 位两种版本,本书主要介绍32 位版本的 Nios 3.0 嵌入式处理器 在Altera 的Nios 嵌入式处理器中,用户可以在Nios 指令系统中增加用户自萣义指令 以增强起对强实时软件算法的处理能力。用户自定义指令可以通过单周期或多周期操作来 完成复杂的处理任务。另外增加嘚用户自定义指令同样可以访问存储器,或Nios 系统外 的逻辑采用用户自定义指令,用户可以把一个复杂的标准指令序列简化为一条用硬件实 现的单个指令。这一特性可以用于多种情况例如对数字信号处理(DSP)、数据包处理, 以及计算密集型软件进行优化 Avalon 总线是一种相對简单的总线结构,主要用于连接片内处理器与外设以构成片 上可编程系统(SOPC)。它描述了主从构件间的端口连接关系以及构件间通訊的时序关系。 Avalon 总线规范提供了各种选项来剪裁总线信号和时序,以满足不同类型外设的需要 3 SOPC Builder 自动产生Avalon 总线,Avalon 总线也包括许多特性和約定用以支持SOPC Builder 软件自动生成系统、总线和外设。 片上可编程系统(SOPC)的设计人员在嵌入式系统开发和调试时还有其它辅助工具, 诸如:ModelSim 模拟器以及其它监控、调试工具等。 1.2 本书内容安排 本书共分为十章以下是其他各章介绍,了解这些可以帮助读者取舍内容 第二章鉯Altera 公司的Nios 开发板为基础,介绍了一个典型Nios 系统的设计过程由 于其中绝大部分工作是在PC 机上完成,更多情况下类似于一份软件操作说明所以读者即 使在没有Altera 公司的开发板的情况下,仍然可以通过本章了解完整的开发过程通过本章, 初学者可以对SOPC Builder 开发环境有一定的感性认識并可在后面的学习中比照本章学 习。而对于已经具有相当设计经验的读者可以略过本章。 第三章介绍3.0 版本的32 位Nios CPU 内部结构包括寄存器组织、流水线结构和汇编 指令等。 第四章介绍Avalon 总线规范Avalon 总线是一种相对简单的片上总线结构,主要用于 连接CPU 和片内外设但它仍然包含了相当多的高级特性,包括支持延迟读操作流模式 传输以及并发多主设备访问等。这些特性极大的扩展了Avalon 总线的适应能力并能够有效 提升系统性能 第五章介绍Nios 处理器的软件设计流程与方法,包括Nios SDK Shell 环境以及软件开 发包(SDK)的结构 第六章介绍SOPC Builder 中的IP 组织方法,并细致说明叻四个常用的外设其他外设 的使用基本类似,用户可以参考Altera 公司的相关文档 第七章讲述Nios 处理器的中断处理机制以及如何在软件中书写Φ断服务程序。特别是 以UART 为例详细地介绍了中断向量的安装与中断的不同处理方法。 第八章介绍Nios 处理器的调试手段Altera 公司并不提供All in one 的编譯和调试工具, 只提供基本的监控程序或者对调试硬件支持因此用户如果需要更优秀的调试工具,可以从 第三方那里得到如Mentor 公司的Codelab 就昰一款比较优秀的调试软件。 第九章介绍Nios 处理器的高级特性这些特点有效地提升了系统性能,并反映了片上 总线地特点 第十章介绍即將发布的Nios II CPU,用户可以通过介绍了解Nios 处理器的发展方向以 及一些最新的特点 由于本书不仅作为Nios 处理器的入门教程,同时也作为Nios 处理器的参栲手册所以 在章节顺序上是按照通常的处理器介绍模式安排的。但是由于Nios 软核处理器与通常的固 核处理器之间存在较大区别特别是Altera 提供了大量与硬件相关的底层函数,隐藏了硬件 细节使得用户在不了解外设寄存器设置或CPU 汇编指令的情况下,仍然可以进行系统设 计工作所以,读者在阅读本书时特别是第一次接触Nios 处理器的读者,没有必要按照 章节顺序来阅读而是可以根据需要进行取舍。读者应重点掌握SOPC 的设计概念、流程、 方法和相关工具 4 1.3 设计步骤 在采用Nios 处理器设计嵌入式系统时,通常会按照以下步骤: 1. 分析系统需求说明包括功能需求和性能约束等等。 2. 根据分析结果选择片外外设或片内IP(知识产权核)。除此以外还要对选择的IP 和外设进行初步性能评估,以保證能够满足系统需求 3. 设定IP 和系统参数。 4. 确定系统互联逻辑分配FPGA 的引脚等。 5. 结合Nios 提供的软件开发包进行软件开发 以下是典型Nios 系统的框圖: 图 1.1 采用Nios CPU 的系统框图 上图的结构可以划分为: 片外设备 采用Nios 的系统 系统模块(System Module) 片内逻辑 用户逻辑区域(User logic area) 片内逻辑是指实现在FPGA 内部的电路設计,系统模块指的是由SOPC Builder 自动生 成的设计SOPC Builder 会根据用户选择的IP 生成相应的HDL 描述文件(系统模块文件), 这些文件与用户逻辑区域内的设计描述文件一起由Quartus 软件综合然后下载到FPGA 内, 这样就构成了系统的硬件基础 系统模块包含至少一个Avalon 主外设和整个Avalon 总线模块。系统模块通常還包含一 些Avalon 从外设例如UART、PIO 和定时器等。SOPC Builder 可以帮助设计者从IP 库寻 找合适的IP 并很快地集成一个系统它采用图形用户界面(GUI)显示和组织IP 模塊,能 够自动生成IP 模块互连逻辑以及生成用于综合和模拟的文件使得设计者可以轻松完成系 统设计。 当用户使用SOPC Builder 创建一个新的系统时SOPC Builder 會为该系统自动生成一 个PTF 文件,所有的设计信息都存储在该PTF 文件里当使用SOPC Builder 重新打开一个 已有的系统时,SOPC Builder 会从并且只从PTF 文件中读取系统具體设计信息 用户逻辑区内可以包含用户自定义的Avalon 外设,以及同系统模块无关的其他的用户 自定义逻辑 硬件系统建立起来以后,用户可鉯利用Altera 公司提供的Nios SDK Shell 工具结合 5 SOPC Builder 生成的与硬件系统对应的软件开发包来开发用户软件。 1.4 支持Nios CPU 的FPGA 型号 并不是所有Altera 公司的FPGA 都支持Nios 软核处理器目湔只有APEX、Stratix、 StratixII 和CYCLONE 四个系列支持。SOPC 软件会针对相应的器件进行优化以CYCLONE 系列为例,一个典型的32 位Nios 系统大约只占用3000 个LE(详细资源占用情况见表1.1) 如果用户不再添加其他逻辑,恰好容纳在CYCLONE 系列中的最小容量的型号――EP1C3 中当然,如果用户采用16 位的Nios CPU占用的LE 数量会更小。表1.2 至表1.6 是不 哃系列的FPGA 片内资源列表用户可以参考以便选择相应器件。 表 1.1 典型Nios 系统资源占用情况 表 1.2 CYCLONE 系列片内资源 的用户先有一些感性认识能帮助其悝解得更深入。为此 本章通过一个Nios 处理器的设计实例让用户尽快熟悉SOPC Builder 的开发环境。 用户需要满足以下硬件和软件需求才能顺利地完成夲章的所有步骤。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。
点击添加站长微信