毕业设计(论文)NiosII软核处理器设计研究基于NiosII的数字频率测量电路系统设计

上传人:仙*** 文档编号:33278845 上传时间:2021-10-16 格式:DOC 页数:42 大小:1.64MB
返回 下载 相关 举报
毕业设计(论文)NiosII软核处理器设计研究基于NiosII的数字频率测量电路系统设计_第1页
第1页 / 共42页
毕业设计(论文)NiosII软核处理器设计研究基于NiosII的数字频率测量电路系统设计_第2页
第2页 / 共42页
毕业设计(论文)NiosII软核处理器设计研究基于NiosII的数字频率测量电路系统设计_第3页
第3页 / 共42页
点击查看更多>>
资源描述
毕业设计(论文)论文题目:NiosII软核处理器设计研究基于NiosII的数字频率测量电路系统设计频率测量电路系统设计姓 名:学 号:学 院:机电与信息工程学院专 业:电子信息科学与技术年 级:2007级指导教师:目 录摘 要IAbstractI一、绪论1二、Nios软核处理器的理论知识介绍1(一)Nios软核处理器的概述1(二)Nios软核处理器系统结构2(三)Nios软核处理器的三种内核的比较2(四)使用Nios软核处理器的优势31.提供合理的性能32.提升系统的性能33.延长产品的生命周期4三、频率测量原理与电路设计要求4四、频率测量电路的系统设计5五、频率测量电路的单元电路设计6(一)计数器电路61.计数器电路的VHDL语言62.计数器电路的模拟测试8(二)计数器控制电路91.计数器控制电路的VHDL语言描述92.计数器控制电路的模拟测试10六、Nios软核处理器系统11(一)Nios软核处理器系统硬件电路111.新建Nios工程112.添加存储器ROM和RAM123.添加并配置NiosCPU Core134.配置并行输入/输出(PIO)内核135.自动分配地址和中断优先级设置146.生成系统147.完成Nios软核处理器系统电路原理图15(二)频率测量电路的系统集成15(三)Nios软核处理器系统软件开发171.创建一个NiosIDE工程172.新建源文件,编写代码183.编译设置18(1)软件工程的编译设置18(2)系统工程的编译设置194.编译工程205.调试程序216.NiosIDE程序运行21七、设计总结22参考文献24附 录25(一)计数器电路的VHDL语言代码25(二)计数器控制电路的VHDL语言代码25(三)频率测量电路控制程序清单27谢 辞32 摘 要随着电子技术的不断发展,电子产品向体积越来越小、设计时间越来越短、集成度越来越精密、产品周期越来越短、成本越来越低、功能越来越强大等方向发展。Nios嵌入式系统是一种面向用户的、可以灵活定制的通用RISC(精简指令集架构)嵌入式CPU。使用Nios处理器的用户可以根据需要调嵌入式系统的特性、性能以及成本,快速使得产品推向市场,扩展产品的生命周期,并且避免处理器的更新换代。本设计结合Quatrtus、SOPC Builder、NiosIDE和ModelSim等多种技术实现基于Nios的数字电路频率测量电路系统的设计。本设计包含三部分电路设计:计数器电路、计数器控制电路、Nios软核处理器系统电路,其核心和难点是Nios软核处理器系统的硬件电路设计、NiosIDE软件开发及系统集成。本设计完成了单元电路的设计、系统集成、Nios软核处理器系统的软硬件开发及用ModelSim仿真波形。关 键 词 SOPC Builder NiosIDE ModelSim Nios 频率测量 AbstractWith the continuous development of electronic technology, electronic products of size is getting smaller and smaller, shorter and shorter design time, more and more sophisticated integration, product life cycle is becoming shorter and shorter, more and more low-cost, more and more powerful features, and so on. The use of Nios processor users can base on their need to transfer the characteristics of embedded systems, performance and cost of making products to market quickly, and expand the products life cycle and to avoid the replacement of the processor. Niosembedded system is an user-orientated and can be flexibly customized common-use embedded cpu with RISC(Reduced Instruction Set Computer). This design combines the technology of Quartus2 with SOPC Builder and NiosIDE and ModelSim to achieve the designment of the digital circuit frequency measurement system based on Nios.And it contains three circuit layout:The counter circuit,the counter control circuit and the Niossoft core processor circuit,the key parts and difficulties of which are the hardware design of Niossoft core processor circuit and the software development of NiosIDE and the system integration. The design completes the designments of all the element circuits ,the integration of the whole system , the development of hardware and software of the Niossystem,including the waveforms simulation of the system.Key WordsSOPC Builder,NiosIDE,ModelSim,Nios,frequency measurementIII一、 绪论 随着微电子技术的发展,促使集成电路向高速、高集成度、低工耗的系统集成方向发展,SOPC(System On a Programmable Chip、片上可编程系统)是现代电子技术和电子系统设计的汇聚点和发展方向。它将传统的EDA技术、计算机系统、嵌入式系统、数字信号处理技术、数字通讯系统以及自动控制系统等融为一体,在结构上凝为一片。SOPC综合了SOPC和PLD、FPGA各自的优点,集成了硬核和软核CPU、DSP、存储器、外围I/O可编程模块,用户可以利用SOPC平台自行设计高速、高性能的DSP处理器或特定功能的CPU处理器,从而是电子系统设计进入一个全新的模式。当前嵌入式系统迅速发展起来,基于Nios II的嵌入式系统以其自己的优点被广泛应用。 Nios符合工业技术的发展潮流,即硬件设计软件化。采用Nios II能有效地降低人力和物力成本,提高产品竞争力;硬件设计软件化还能方便对硬件进行仿真、验证,整个系统结构的数字逻辑设计使得验证工作可以通过仿真软件顺利地实现,可以掌握详细、清楚的信息;减少硬件设计的错误,使得对硬件接口不是很熟悉的人也可以进行系统平台的集成。Nios的价值在于它为FPGA的应用拓展了新的方向,真正在FPGA上实现了SOPC。本设计基于Nios II的嵌入式系统设计,利用SOPC Builder技术在FPGA芯片上实现系统设计,完成数字信号频率测量电路的系统设计。首先对Nios进行简单介绍,然后介绍频率测量原理及电路设计要求及系统设计的总体思路,之后是本设计的核心部分,频率测量电路的单元设计和Nios软核处理器系统的设计。在本设计过程中,Nios软核处理器系统采用SOPC嵌入式设计方法,分嵌入式硬件和软件两部分进行设计。设计的两个部分分别在SOPC Builder和Nios II IDE中进行,在SOPC Builder添加组件构建系统,系统生成后在Quartus II中进行例化,由于没有开发板,只做到仿真。在Nios II IDE中编写程序,实现功能控制,编译并运行。本设计的仿真工作是在ModelSim软件下进行的,其专业仿真软件比Quartus本身自带的波形仿真效果要好。 本设计是基于Nios II的嵌入式系统设计,设计灵活,是电子设计的新方向。二、 Nios软核处理器的理论知识介绍(一) Nios软核处理器的概述 Nios软核处理器是一种32位RISC嵌入式处理器,具有超过200DMIP的性能,它是一种软核、可配置的系统。软核表示处理器的目标器件、可编程逻辑器件,只有在下载设计文件后才具有处理器的功能;可配置意味着处理器系统的组成和性能可以根据要求进行调整。一个Nios软核处理器系统是一个包含了一个可配置CPU软内核、FPGA偏少存储器和片外存储器、外设及外设接口等的一个片上可编程系统,它可以工作在Altera 公司的Stratix、Stratix、Cyclone、Cyclone等系列的可编程逻辑器件上。(二) NIOS软核处理器系统结构 图2-1 Nios处理器系统 如图2-1所示,为一个典型的Nios处理器系统。在图2-1中,整个Nios处理器系统包括Nios处理器内核(调试模块)、Avalon总线和系统外设。系统中的外设,如SDRAM控制器、片内RAM、三态桥、UTART、定时器、LED显示驱动电路、通用I/O、Compact Flash等都是由FPGA内部的逻辑和RAM资源实现的。(三) Nios软核处理器的三种内核的比较 Nios软核处理器具有三种内核可供用户选择,用来满足不同的设计要求。它们分别是快速性、经济型和标准型。快速型NiosII内核具有最高的性能,经济型NiosII内核具有最低的资源占用,而标准型在性能和面积之间做了一个平衡。 Nios的3种类型内核的比较如表2-1所示:表2-1 Nios3种类型内核的比较特性Nios/eNios/sNios/f目标最小核较小核最快的执行速度DMIPS/MHz0.150.741.16Max. DMIPS31127218Max.f/MHz200165185面积/LE70014001800流水线1级5级6级外部地址空间/GB222指令Cache无512B-64KB静态分支预测512B-64KB静态分支预测数据Cache无无512B-64KBALU只能移位操作、无硬件乘法、除法硬件乘法、除法和移位操作硬件乘法、除法和移位操作(四) 使用Nios软核处理器的优势1. 提供合理的性能基于处理器进行应用系统设计时,设计者很难在众多的处理器芯片中选择到合适的芯片,因为处理器芯片的功能和技术指标是确定的。为了满足某一些性能和技术指标,常常不得不选择一种还具有多余功能的处理器芯片,这就导致了产品成本的提高。若为了满足产品成本的要求,常常又会使设计达不到理想的性能和技术指标。采用Nios软核处理器系统,设计者能够根据自己的想法来配置处理器系统,包括选择合适的处理器内核、希望的外部设备,以及处理器与外部设备之间的接口。设计者还能过在Nios软核处理器系统中集成自己专有的逻辑功能,如浮点算术运算电路、数字信号处理(DSP)电路等。2. 提升系统的性能设计者不仅可以采用快速型内核“Nios/f”,并添加硬件电路来提升Nios软核处理器系统的性能,还可以通过在一个系统中添加多个处理器内核来提高系统的性能。Altera公司现在提供多个系列的可编程逻辑器件,既有包含大量逻辑资源的芯片,又有经济、价廉的芯片。例如,高性能的Stratix系列的EP2S180芯片,一个Nios软核处理器只占用这种芯片的1%的逻辑资源,这使得在一个可编程逻辑器件中能够实现多个Nios软核处理器,这样提高了应用系统的性能。3. 延长产品的生命周期使用Nios软核处理器进行应用系统设计可以从以下几个方面延长产品的生命周期。首先,在硬件方面,Nios软核处理器的目标器件为可编程逻辑器件,它的可编程特性避免了专用集成电路设计制作周期长的缺点;在软件方面,Altera公司提供了完整的开发软件、大量的设计参考和调试电路。其次,Nios软核处理器系统的软核、可配置特点使得用户能够容易地对应用系统的硬件电路部分进行升级。即使产品已经交给了用户,仍然可以方便地进行升级。最后,Nios软核处理器系统可以方便地移植到新的可编程逻辑器件中。例如,当一个设计被确定,并且准备大批量生产时,可以选择将它移植到Altera公司的HardCopy(一种结构化的专用集成电路)上,使成本降低。三、 频率测量原理与电路设计要求频率的概念与时间的概念直接相关,信号频率的另一种描述就是信号的周期。频率与周期的关系式为:f=1/T,式中,f为频率,单位为Hz(赫兹);T为周期,单位为s(秒)。实现数字信号频率测量的核心电路是计数器,利用计数器实现数字信号频率测量的方法有两种:计数法和定时法。采用计数法可以直接获得待测数字信号的频率。这时计数器的计数触发信号为待测信号,另外还需要一个计数控制信号。如果计数器控制信号的有效时间固定,如1s,则在计数控制信号的有效时间内到来的待测数字信号的个数就是其频率值。采用定时法可以直接获得待测数字信号的周期,这时计数器的计数触发信号为一个频率一定的信号,计数控制信号为待测数字信号。这样由一个待测数字信号周期内到来的固定频率计数触发信号个数就可以获得待测数字信号的周期。如果希望有较高的测量精度,同时有一个较快的测量速度这时需要在测量电路中根据不同情况采用不同方法。在待测数字信号频率较高时,适合采用计数法;反之则适合采用定时法。这是因为如果待测数字信号的频率较低,采用计数法就需要计数控制信号的有效时间较长,从而使得测量需要的时间较长;如果待测数字信号的频率较高,即待测数字信号的周期较小,采用定时法在一个待测数字信号周期中到来的计数触发信号个数较少,从而使得测量精度较小。在待测信号的频率范围较宽的情况下,联合使用以上两种测量方法既可以保证测量精度,又可以加快测量速度。作为一种设计方法的学习和Nios软核处理器及FPGA器件的应用学习,本设计完成的频率测量系统测量信号的频率范围为测量结果用频率、周期两种显示方式,测量结果使用7个数码管显示。当频率数据较大时用科学计数法表示,前四位4个显示测量数据的有效数位;后两位显示以10为底的幂的符号,最后一位显示幂次方。当频率/周期数值在四位及以下时候,测量结果用前四位显示,后三位清零。频率的单位为Hz(赫兹),周期的单位为s(秒)。四、 频率测量电路的系统设计实现数字信号频率/周期测量的计数器的工作很简单,每来一个计数信号它的内容就加1。计数器需要较高的计数速度,速度的快慢不仅影响采用计数法时的最高测量频率,而且也影响采用定时法时的周期测量精度,因此计数器模块采用可编程逻辑器件,使用硬件描述语言来设计。Nios软核处理器系统虽然提供定时器内核,但是它的计数信号只能是系统时钟,这样只能实现定时法,不能实现计数法,当待测信号频率很高时将影响测量精度。采用定时法,在计数触发信号采用50MHz的Nios软核处理器系统的时钟时,如果要求测量数据具有4位有效数字那么这时用做计数控制信号的待测信号的最小周期为20us,对应待测信号的最高频率为50kHz。提高计数触发信号频率可以扩展测量范围。采用计数法,在待测信号频率为50kHz时,如果同样要求测量数据具有4位有效数字,那么这时用做计数控制信号的有效时间至少为20ms。如果待测信号频率降低,在保证测量数据具有的有效数字不变的情况下,必须加大计数控制信号的有效时间,这将使得系统的测量速度下降。联合采用定时法和计数法来完成数字信号的频率测量,在待测信号频率较低时采用定时法,在待测信号频率较高时采用计数法。由于采用不同的方法,实现数字信号频率/周期测量队计数器的技术触发信号和计数控制信号的来源不同,因此需要一个计数器控制模块进行信号的分配。计数器控制模块的输入信号包括待测信号、频率固定的Nios软核处理器系统的系统时钟信号和该模块自己的控制信号,输入信号包括计数触发信号和计数控制信号。计数控制信号模块实现的是信号分配,不涉及算术运算,因此这里也将采用可编程逻辑器件,使用硬件描述语言来设计。由于所设计的系统要求能够显示待测量数字信号的频率和周期,由信号频率和信号周期的关系式可知,计数其中的测量数据从一种格式转换为另一种格式将需要进行除法运算。利用Nios软核处理器系统处理这些数据将是合适的选择。在Nios软核处理器系统中,计数器中的测量数据可以在一个由开关输入信息的控制下,获得需要的显示数据格式,并通过显示模块显示。由于在待测信号频率较低时适合采用定时法,在待测频率较高时适合采用计数法,因此Nios软核处理器系统还需要根据测量结果自行选择测量方式,并产生合适的控制信号送到计数器控制模块。综上所述,本设计的频率测量电路的组成方框图4-1所示:Nios软核处理器系统系统时钟(sys_clk)计数器控制模块测量控制信号显示模块测量数据准备好信号计数触发信号计数使能信号 显示格式计数器模块 控制开关 测量数据图4-1频率测量电路的组成方框图频率测量电路的工作是在Nios软核处理器控制下进行的。待测信号的频率/周期测量是连续、循环进行的,这样不仅能测量信号的频率/周期,而且能在一定程度上跟踪信号的频率/周期变化。每个测量循环从Nios软核处理器系统向计数器控制模块发出启动计数法测量控制信号开始。计数器控制模块将待测信号作为计数触发信号,以系统时钟为时间基准产生20ms宽的计数使能信号送往计数器模块。在20ms宽的计数使能信号结束之后,计数器控制模块向Nios软核处理器系统发送测量数据准备好信号。Nios软核处理器系统接到测量数据准备好信号以后,从计数器模块读取测量数据。接着对数据进行判断,如果测量数据具有4为有效数字,Nios软核处理器系统则对其进行处理,否则再次向计数器控制模块发出启动定时法测量控制信号。计数器控制模块这时将系统时钟信号作为计数触发信号,以一个完整待测信号周期产生的计数使能信号送往计数模块。在计数使能信号结束之后,计数控制模块再次向Nios软核处理器系统发送测量数据准备好信号,后者再次从计数器模块中读取测量数据。Nios软核处理器系统则对测量数据进行处理,工作包括产生满足格式要求的待测信号的频率和周期数据,完成处理的数据根据显示要求送到显示模块进行显示,接着进行下一个测量循环。五、 频率测量电路的单元电路设计(一) 计数器电路1. 计数器电路的VHDL语言 计数器的工作不仅需要计数使能信号和计数触发信号,在开始每次计数工作之前还需要对计数器内容进行清零。计数器的每个计数循环从计数器内容进行清零开始,接着计数使能信号有效,使得计数器在计数触发信号的控制下从0开始计数。在计数使能信号有效时间过后,计数器停止计数,保持本次技术循环的技术数据等待Nios软核处理器系统读取,然后等待下一个计数循环的开始。计数器具有的数据位数也需要仔细选择,既要满足设计要求,又要尽可能地节省器件资源。如果在这里多考虑其他模块的工作,则可以降低整个系统的设计难度。如果考虑系统4位测量精度的要求,则计数器具有15位数据位数即可满足要求,但在计数器控制模块中还需要具有量程自动切换电路,因此需要扩展计数器的数据位数,使得在整个测量范围内计数器不会发生溢出,这是将不需要量程自动切换电路。在使用定时法测量时,如果用做计数触发信号的系统时钟频率为50MHz,这样在待测信号达到1Hz的最小频率,即1s内的最大周期时,计数器的最大计数数据为,这时计数器需要27为数据位数。在使用计数法测量时,如果采用20ms宽的固定计数使能信号,则在待测信号达到9.999106Hz的最高频率时,计数器的最大计数数据为1.9998105,这时计数器需要19位数据位数。综上所述,这里计数器选择27位数据位数。其VHDL语言代码见附录一所示。计数器需要较高的计数速度,在Quartus2窗口中,由菜单“Assignments-Settings-Analysis & Synthesis Settings”打开分析、综合设置对话框,在优化技术选择栏“Optimization Technique”中选择速度优先“Speed”。图5-1 计数器电路的编译报告如图5-1所示,在选用EP2C35F672C6作为目标芯片的情况下,对上面的数据电路的VHDL语言代码进行编译。编译报告显示电路占用芯片逻辑单元为55,仅占不到整个芯片33216个逻辑单元的1%。电路所支持的最高计数触发信号频率为253MHz,满足在使用定时法测量时输入50MHz计数触发信号的要求。2. 计数器电路的模拟测试 图5-2 计数器电路的RTL Viewer级电路 图5-3 计数器电路模拟结果如图5-3所示为所设计的计数器电路的ModelSim模拟仿真结果。ModelSim是Mentor公司的生产的一款业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。模拟的计数时钟信号(counter_clk)采用50MHz的实际应用最高频率。计数器清零信号(counter_clean)为低电平有效,当它有效时,计数器(counter)的内容被清零。计数器使能信号(counter_en)也是低电平有效,当它有效时,每来一个计数时钟信号(counter_clk),计数器(输出端口)(counter_data)的内容加1。输出端口(counter_data)的数据在计数器使能信号有效期间跟随计数器的内容变化,因此在该端口上的数据必须要等测量完成之后才能读取。计数器电路需要的所有输入信号来自计数器控制电路,同时计数器控制电路还需要在测量完成之后,即计数器使能信号有效期间结束之后,产生一个测量数据准备好信号触发Nios软核处理器系统读取测量数据。(二) 计数器控制电路1. 计数器控制电路的VHDL语言描述计数控制电路的输入信号包括待测量的数字信号、系统时钟信号,以及从Nios软核处理器系统来控制信号。计数器控制电路的输出信号包括送到计数器的计数器清零信号(counter_clean)、计数时钟信号(counter_clk)、计数使能信号(counter_en),以及送到Nios软核处理器系统的测量数据准备好信号。计数器控制电路的VHDL代码采用有限状态机(Finite State Machine,FSM)模型进行编写。有限状态机是一种为进行时序逻辑电路设计而创建的专门模型,这种模型对设计任务顺序明确的数字控制系统非常有用。由电路的状态转换表或电路的状态转换图,利用VHDL可以设计出不同应用特点的状态机,而且这些状态机都具有相对固定的语句及表达方式。在从Nios软核处理器系统来的启动控制信号的控制下,利用有限状态机模型写出的控制代码很容易实现一个周期的控制时序结束以后自动等待,因此实现一个完整的测量循环很容易。其VHDL语言代码如附录二所示。图5-4 计数器控制电路的编译报告如图5-4所示,在选用EP2C35F672C6作为目标芯片,选择速度优先“Speed”优化技术的情况下,对上面的计数器控制电路的VHDL语言代码进行编译。编译报告显示电路占用芯片逻辑单元为37,与计数器电路类似,仍然只占了不到整个芯片33216个逻辑单元的1%。2. 计数器控制电路的模拟测试图5-5 计数器控制电路在Quartus中的模拟结果图5-6 计数器控制电路用ModelSim仿真的波形图如图5-5、图5-6所示,为所设计的计数器控制电路的模拟结果,模拟结果的前面为采用计数法进行待测信号的频率测量,这时Nios软核处理器先输出“00”,计数器的计数时钟为待测信号,产生计数器清零信号,接着输出“01”的控制信号,在系统时钟信号的控制下产生计数器使能信号。计数使能信号结束以后,输出数据准备好信号。模拟结果的后面为采用定时法进行待测信号的周期测量,计数器的计数时钟信号为系统时钟信号,这时计数器使能信号的宽度为一个待测信号周期。六、 Nios软核处理器系统(一) Nios软核处理器系统硬件电路 由于完成从测量的频率数据转换为周期数据,或者从测量的周期数据转换为频率数据需要进行除法运算,利用硬件实现除法运算具有速度快、节省程序存储器的优点,因此这里选择Nios/s(标准)内核,并选择硬件乘法器(Embedded Multipliers)和硬件除法器。由于测量信号的频率范围较宽,控制程序中的相关数据将采用浮点数据类型,因此这里添加浮点专用指令,并选择添加浮点硬件除法器。存储器有FPGA芯片内部的嵌入式存储单元实现,配置32KB程序存储器(ROM)、4096B数据存储器(RAM)。处理器复位地址(Reset Vector)位于程序存储器(ROM),异常中断地址(Exception Vector)位于数据存储器(RAM),地址偏移量采用默认值。Nios软核处理器系统包含3个用于输入信号的并行输入/输出(PIO)内核。它们分别是具有27位端口宽度的用来输入计数器计数值的并行输入/输出(PIO)内核“counter_data”、具有1位端口宽度的用来输入频率/周期显示选择信号的并行输入/输出(PIO)内核“fc_select”和具有1位端口宽度的用来输入测量数据准备好信号的并行输入/输出(PIO)内核“data_ready”。系统还包含8个用于输出信号的并行输入/输出(PIO)内核,其中一个为具有2位端口宽度的用来向计数器控制模块输出控制信号的并行输入/输出(PIO)内核“control_nios”,其余7个是具有7个位端口宽度,分别用来向7个数码管输出控制信号的并行输入/输出(PIO)内核。1. 新建Nios工程 打开Quartus软件,新建工程fre_nios,然后选择Tools|SOPC Builder进入SOPC Builder。在Create New System对话框中为这个Nios最小系统命名为fre_nios_cpu,选择VHDL硬件描述语言,如图6-1、图6-2所示:图6-1 在Quartus中新建工程fre_nios图6-2 SOPC Builder中新建系统之后,点击OK将clk_0改为clk,如图6-3所示:图6-3 改变clk_0名称2. 添加存储器ROM和RAM添加存储器ROM和RAM,并把ROM程序存储器更名为program.把RAM数据存取器更名为data。如图6-4所示: 图5-4 添加ROM和RAM3. 添加并配置NiosCPU Core在Component Library下Processors项双击Nios processor,打开Nios处理器软核,选择经济型,Resect Vector选择program(ROM),Exception Vector选择data(RAM),偏移地址选择默认,配置图6-5所示:图6-5 Nios软核处理器内核4. 配置并行输入/输出(PIO)内核本设计的Nios软核处理器系统一共需要配置11个并行输入/输出(PIO)内核,图6-6所示为要配置的27位宽的输入端口counter_data,同理完成其它输入/输出(PIO)的配置。图6-6 配置27位宽的输入端口counter_data5. 自动分配地址和中断优先级设置点击菜单栏的System- Auto-Assign Base Addresses 选项,自动分配处理器和各个外设的地址,或者用户也可以直接点击地址栏进行更改,这里我们进行自动分配。同理点击菜单栏的System- Auto-Assign IRQs 选项,自动分配各个外设间的中断优先级,这里我们采用自动分配。6. 生成系统图6-7 配置的Nios软核处理器系统互联架构如图6-7所示为所配置的Nios软核处理器系统互联架构的结构,点击下面的Generate按钮,如图6-8所示:图6-8需要等几分钟,如图6-9所示,在System Generation的info中出现Generation was Successful时,则系统生产了。图6-9生成系统7. 完成Nios软核处理器系统电路原理图 在Quartus开发环境原理图输入文件编辑窗口中放置生成的Nios软核处理器系统符号“fre_nios_cpu”,并添加相应引脚:完成的Nios软核处理器系统电路原理图如图6-10所示:图6-10 Nios软核处理器系统电路原理图在Quartus2窗口中,选择速度优先“Speed”优化技术的情况下,在选择EP2C35F672C6作为目标芯片的情况下,对上图所示的原理图输入文件进行编辑,结果如图6-11所示:图6-11 Nios软核处理器系统电路编译结果(二) 频率测量电路的系统集成 把一个应用系统分解成一系列功能模块可以降低设计难度,也容易实现多人合作。在完成各个功能模块的设计、制作和调试之后,需要把这些功能模块集成在一起以实现应用系统的设计要求。利用Quartus开发软件提供的原理图输入方式可以很容易地实现把各个模块集成在一起的功能。首先将计数器电路的VHDL代码输入文件fre_counter.vhd和计数器控制电路的VHDL代码输入文件fre_controller.vhd复制到放置Nios软核处理器系统的文件夹fre_nios之中。然后在Quartus窗口中,由菜单“File CreateUpdateCreate Symbol Files for current files”分别产生它们可以在原理图输入方式中调用的符号。 图6-12为已经在Nios软核处理器系统的原理图输入文件中添加了计数器电路和计数器控制电路的电路符号,并添加了相应的引脚且完成了相应连接的频率测量系统的电路原理图。图6-12 频率测量电路原理图在Quartus窗口中,由菜单“AssignmentSettingsAnalysis&Synthesis Settings”打开分析、综合设置对话框。在优化技术选择栏“Optimization Technique”中选择速度优先“Speed”。由菜单“AssignmentDeviceDevice and Pin Options”打开芯片和引脚配置“Device and Pin Options”,在未使用引脚选项卡“Unused Pins”中,在所有未使用引脚状态“Reserve all unused pins”下拉菜单中选择三态输入状态“As input tri-stated”,使它们全部呈高阻状态。在选用EP2C35F672C6作为目标芯片的情况下,对上述原理图输入文件进行编译,结果如图6-13所示:图6-13 频率测量电路原理图编译结果 如图6-13所示,编译结果显示,在选用EP2C35F672C6作为目标芯片的情况下,所设计的频率测量电路仅占用了FPGA芯片三分之一的逻辑单元,消耗的84%的FPGA芯片内部的嵌入式存储单元出去一部分用于产生Nios软核处理器外,其余都用来生产32KB程序存储器和4096B数据存储器了。在图6-13所示,频率测量电路还使用了EP2C35F672C6芯片的11个嵌入式乘法器,这些嵌入式乘法器用来支持在Nios软核处理器中添加的浮点专用指令。利用硬件乘法器和硬件除法器不仅可以加快对应的算术运算速度,而且可以减少对程序存储器的使用。在使用FPGA芯片内部嵌入式存储单元实现系统的存储器时,设法降低对程序存储器的要求需要给予较大的关注。(三) Nios软核处理器系统软件开发Nios软核处理器的软件开发是在Nios集成开发环境(IDE)环境下进行的,NiosIDE是Nios系列嵌入式处理器的基本软件开发工具,所有的软件开发任务都可以在Nios下完成,包括程序的编辑、编译、调试和下载运行。NiosIDE提供了一个统一的开发平台,用于所有Nios处理器系统。仅仅通过一台PC机、一片Altera的FPGA以及一根JTAG下载电缆,软件开发人员就能够往Nios处理器系统写入程序以及和Nios处理器系统进行通信。NiosIDE为软件开发提供了四个主要的功能:工程管理器,编辑器和编译器,调试器,闪存编程器。以下为本设计的Nios软核处理器系统的软件开发过程:1. 创建一个NiosIDE工程 打开NiosIDE新建工程,工程名为Fre_Nios,并选择已生成的目标硬件电路fre_nios_cpu.ptf,如图6-14所示:图6-14 新建Blank Project工程模板2. 新建源文件,编写代码图6-15 新建源文件Nios.c图6-16在Nios.c中编写代码图6-15、图6-16为新建源文件nios.c并进行代码编写。3. 编译设置编译之前,我们先对项目进行一些设置,以优化程序,使编译器编译出更高效、占用内存空间更小的代码。(1) 软件工程的编译设置 右键点击Fre_Nios工程名称,在弹出的菜单中选择“Properties”,点击后打开工程属性(Properties for Fre_Nios)对话框,在c/c+ Builder的“Configuration Settings”选项中,点击“General”页面,在“Optimization Level”中选择“Optimize size (-Os)”,如图6-17所示:图6-17 软件工程设置(2) 系统工程的编译设置右键点击Fre_Nios_syslibFre_nios_cpu工程名称,在弹出的菜单中选择“Properties”,点击后打开工程属性(Properties for Fre_Nios_syslib)对话框,在c/c+Builder的“Configuration Settings”选项中,点击“General”页面,在“Optimization Level”中选择“Optimize size(-Os)”。然后,点击该对话框的“System Library”打开System library 属性页面,不清除“Clean exit (flush buffers)”,清除“Link with profiling library”,选上“Reduced device drivers”和“Small C library”,Program memory (.text)选择program,其它不变,如图6-18所示。点击OK 完成设置,并保存工程。图6-18 Fre_nios_syslib工程设置4. 编译工程右键点击“Fre_Nios2”,在弹出的菜单中选择“Build Project”,进行工程的编译,如图6-19所示:图6-19 工程的编译图6-20 工程编译成功如图6-20所示,工程编译成功,说明软件工程产生代码10004字节,32KB总存储量中剩余2104字节可用。如果不做前面的代码消减优化,产生的代码量要比这大好几倍,甚至超过甚至超出32KB 使得编译无法通过。因为,默认情况下系统会将底层用户用到的用不到的所有相关驱动程序都编译进生成的代码里。优化的目的就是删除一些不使用的驱动程序从而减小代码量。5. 调试程序 图6-21 在调试窗口观察变量的值的变化图6-22 观察寄存器变量的值6. NiosIDE程序运行在工程编译调试之后,就可以运行程序了。有三种运行方式:NiosHardware、NiosInstruction Set Simulator和NiosModelSim,分别是目标板运行、指令集仿真器运行和使用ModelSim进行RTL级系统仿真运行。 由于没有开发板,不能采用目标板运行,所以采用指令集仿真运行和使用ModelSim进行RTL级系统仿真运行。如图6-23所示,采用指令集仿真运行时候出现错误,一直没有得到很好的的解决。使用ModelSim进行系统仿真时,需要在SOPC Builder中设置ModelSim的路径和使能Simulation,PIO在SOPC Builder中设置仿真选项。在NiosIDE中System Library属性打开“ModelSim only,no hardware support”按钮,这样在编译软件时才会生成代码相关的存储器初始化文件,以加速仿真。图6-23 Nios指令集仿真图6-24 NiosModelSim仿真如图6-24所示为NiosModelSim仿真中数码管seg7a的数据变化,其余6个数码管的数据仿真变化与图6-24中的类似,这里不再列举。用ModelSim做Nios的仿真时,只能看到波形的变化,不能显示具体的字符,仿真效果不能像硬件电路仿真一样明显。七、 设计总结 这里基于Altera公司的FPGA芯片EP2335F672C6完成了一个单芯片的频率测量系统,频率测量范围为(1.000-9.999)106Hz,以频率/周期两种显示方式显示。设计的频率测量系统包括3个模块:计数器模块、计数器控制模块,以及测量数据处理模块。前两者使用VHDL语言进行设计,后者使用Nios软核处理器系统实现。在一个系统中采用两种方法设计是因为它们有各自的明显特点,即使用硬件描述语言设计的电路工作速度快,而处理器具有强大的算术运算能力。计数器的计数速度决定了最高测量频率,因此采用硬件描述语言完成设计。对测量数据的处理,以及由此产生的系统工作状态需要算术运算和逻辑运算的支持,因此使用Nios软核处理器实现。系统中的计数器控制模块使用上述两种方法都可以,但是采用硬件描述语言完成设计消耗的逻辑资源较少,同时测量精度较高。频率测量系统的设计使我从中学会了如何把Nios软核处理器用于应用系统的方法, Nios软核处理器系统设计的完整过程,即创建Quartus工程、创建原理图输入文件、利用SOPC Builder工具配置Nios软核处理器系统、在Quartus环境下通过编译产生支持C语言文件的硬件电路基础、创建NiosIDE工程、创建C语言程序文件、在NiosIDE环境下编译C语言文件产生用于程序存储器初始化的可执行代码、再次在Quartus环境下通过编译获得初始化程序存储器的文件、配置FPGA芯片。通过本次毕业设计,真正使我学会了,如何去运用自己的所学知识去实际做点东西。提高了自己的动手能力,更主要的是学习能力。在实际做的过程中遇到了很多的困难,还有好多东西都不会,Nios软核处理器系统还只是有了个大致的了解,以后还要更加系统深入地去学习。用ModelSim仿真的时候也仔细学习了好长时间,才能够用ModelSim进行简单的波形仿真,对于比较复杂的波形仿真,还处在学习、研究阶段。本设计还存在很多不足以及需要改进的地方,如频率/周期显示的方式需要改进。还应该能做出实物,在FPGA上运行,测试所设计的电路是否正确,系统是否合理等。由于自身能力有限,以后还需要更加努力!真正的动手实际去做了,才知道自己所学的知识真是太有限了,以后会更加主动的去学习,理论联系实践。很快就要去另外一个学习学习了,以后一定会更加努力地去学习,提高自己的动手实践能力,将来给老师们和学校增光添彩!参考文献1郑亚民,董晓舟.VHDL与VerilogHDL比较学习及建模指导M.北京:国防工业出版社,2008.2潘松,黄继业.EDA技术使用教程(第二版).M.北京:科学出版社,20053郝建国,倪德克,郑燕.基于Nios内核的FPGA电路系统设计M.北京:电子工业出版社,2010.4周立功.SOPC嵌入式系统实验教程(一)M.北京:北京航空航天大学出版社,2006.5Altera Corporation. NiosProcessor Reference Handbook:NII5V1-6.0,2006.6李宏伟,袁斯华.基于Quartus的FPGA/CPLD设计M.北京:电子工业出版社,2006. 7李兰英. SOPC设计原理及应用:Nios嵌入式软核M.北京:北京航空航天大学出版社,2006.8孙凯,程世恒.Nios系统开发设计与应用实例M.北京:北京航空航天大学出版社,2007.9蔡伟刚.Nios软件架构解析M.西安:西安电子科技大学出版社,2007.10刘明章.基于FPGA的嵌入式系统设计M.北京:国防工业出版社,2007.附 录(一) 计数器电路的VHDL语言代码library ieee; -打开 ieee 库use ieee.std_logic_1164.all; -使用标准逻辑数据类型use ieee.std_logic_unsigned.all;-支持标准逻辑数据类型的算术运算entity fre_counter is -定义实体 port( counter_clk: in std_logic;-定义计数时钟信号输入端口 counter_clean: in std_logic;-定义计数清零信号输入端口 counter_en: in std_logic;-定义计数使能信号输入端口 counter_data: out std_logic_vector(26 downto 0) -定义计数数据出处端口 ); end fre_counter; -实体结束语句architecture fre_counter of fre_counter is -定义结构体 begin -开始电路描述 process(counter_clk,counter_clean,counter_en)计数进程 variable counter:std_logic_vector(26 downto 0);-定义27位计数器 begin -开始进程 if(counter_clean=0)then -判断计数器清零信号是否有效 counter:=000000000000000000000000000;-计数器清零 elsif(counter_en=0)then 判断计数器使能信号是否有效 if(counter_clkevent and counter_clk=1)then -判断计数器时钟信号是否有效 counter:=counter+1; -计数器内容加1 counter_data=counter;-将计数器内容送计数数据输出端口 end if;-条件语句结束 end if; -条件语句结束 end process; -进程语句结束end fre_counter; -结构体语句结束(二) 计数器控制电路的VHDL语言代码library ieee; -打开 ieee 库use ieee.std_logic_1164.all; -使用标准逻辑数据类型use ieee.std_logic_unsigned.all; -支持标准逻辑数据类型的算术运算entity fre_controller is- -定义实体 port(sys_clk,pulse: in std_logic;-定义系统时钟和待测信号输入端口 control_nios: in std_logic_vector(1 downto 0); -定义控制信号输入端口 counter_clk,counter_clean,counter_en,data_ready:out std_logic -定义产生计数器控制信号输出端口 );end fre_controller; -实体结束语句architecture fre_controller of fre_controller is -定义结构体 signa
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!