基于SOPC嵌入式系统多功能数字钟.docx
《基于SOPC嵌入式系统多功能数字钟.docx》由会员分享,可在线阅读,更多相关《基于SOPC嵌入式系统多功能数字钟.docx(55页珍藏版)》请在冰点文库上搜索。
基于SOPC嵌入式系统多功能数字钟
基于sopc嵌入式系统-多功能数字钟
绪论
近年来,随着半导体技术的飞速发展,现代高密度现场可编程逻辑器件FPGA(FieldProgrammableGateArray)的设计性能及性价比已完全能够与ASIC(ApplicationSpecificIntegratedCircuit)抗衡。
在这样的背景下,一种被称为SOPC(SystemonaProgrammableChin)的新技术出现了。
SOPC技术可以使设计人员充分利用FPCA的逻辑单元以及植入FPGA内部的存储模块和DSP模块,并使用FPGA制造厂商提供的软核处理器设计出可灵活裁剪、扩充、可升级的嵌入式处理系统。
在过去的几年中,几种RISE(ReducedInstructionSetComputing精简指令集)软核处理器相继面世。
使用SOPC开发产品或进行产品的原型设计,可有效减低产品上市风险、降低开发成本、缩短产品上市周期。
由于可编程逻辑器件已经得到广泛的应用,并且PLD和FPGA的系统门数已经发展到百万级,为了简化设计,降低成本和缩短产品周期,可编程逻辑器件供应商以其芯片灵活性和功能完备性的技术优势,掀起了一场设计可编程片上系统的潮流SOPC技术,其实质就是将PLD中容入更多模块,特别是高端的微处理器和数字信号处理器。
钟表的数字化给人们生产生活带来了极大地方便,而且大大的扩展了钟表原先的报时功能。
诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动的自动启动等,所有这些,都是以钟表数字化为基础。
因为,研究数字钟及扩大其应用,有着非常现实意义。
本次数字钟设计主要采用SOPC技术,设计有系统对外部机械按键模块进行扫描获取部分指令,对外部时钟分频后进行小时24分频计时模块、分钟60分频计时模块、秒钟60分频计时模块,并进一步建立年月日计时判断模块。
采用LED数码显示时、分、秒,以24小时计时方式,蜂鸣器则作为闹钟声音提示用。
该闹钟优点是小巧,价格低廉,走时精确度高,整点报时和定时非常方便。
第一章选题背景与课题研究内容
本节将从SOPC嵌入式系统应用开发技术与数字钟技术发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计——数字钟的设计与实现的必要性。
1.1课题相关技术的发展
一直以来,在开发一个典型的系统时,设计人员仍不得不采用各种昂贵的、分立的模拟器件配合可编程逻辑器件或者混合信号的ASIC作为解决方案。
固定的架构以及其他技术缺陷阻碍了将分立器件集成到一块单一的、低成本的、能够符合各种需求的芯片中,模拟技术是当今应用的关键系统元素,但越来越多的模拟信号通过转换为数字信号,进行采用数字电路来测量和控制。
在进行数字信号处理时,整个系统对嵌入式处理器的性能要求也随之日益提高,从8位逐步向32位过渡。
这一切的需求,都迫切需要设计人员能够把所有的功能设计集在一个芯片上,而SOPC是具有所有这些属性的现成部件,利用它可以方便的选择器件来构成一个系统,而且可以根据系统的要求对处理器的资源进行裁剪,此外,针对于特定器件IP核的设计以及IP核的重用成为SOPC技术发展的关键。
基于SOPC的设计技术主要包括以下3个方面:
(1)基于单片集成系统的软硬件协同设计和验证技术:
主要是面向不同目标系统的软硬件功能划分理论和设计空间搜索技术。
(2)IP核生成及复用技术:
IP资源复用是指在集成电路设计过程中,先继承、共享或购买所需的智力产权内核,然后再利用电子设计自动化(EDA)工具进行设计、综合和验证,从而加速流片设计过程,降低开发风险。
(3)模块以及模块界面间的综合分析的验证技术:
综合分析和验证时难点,要为硬件和软件的协同描述、验证以及综合提供自动化的集成开发环境。
与传统方法相比,SOPC的设计方法必须有根本的改变,即从以功能设计为基础的传统流程,转变到以功能组装为基础的全新流程。
1.2课题研究的必要性
现在是一个知识爆炸的新时代。
新产品、新技术层出不穷,电子技术的发展更是日新月异。
可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。
在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。
因此我们需要一个定时系统来提醒这些忙碌的人。
数字化的钟表给人们带来了极大的方便。
近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。
多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。
1.3课题研究任务与主要内容:
EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL和C语言在FPGA实验板上设计一个电子数字钟,它的计时周期为24小时,显示满刻度为23时59分59秒、。
总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数模块、处理器及外设模块,并且使用QuartusII运用VHDL语言对分频和计数两个模块进行硬件电路设计和电路波形仿真,运用sopc技术嵌入内核并创建了系统所需的外部设备FLASH和SRAM软件通过使用NiosII运用C语言进行编程然后下载到硬件电路中,并在FPGA实验板上进行调试和验证。
该设计采用自顶向下、混合输入方式(原理图输入—顶层文件连接和VHDL语言输入—各模块程序设计)实现数字钟的设计、下载和调试。
1.基于FPGA嵌入IP硬核的SOPC系统,即在FPGA中预先植入嵌入式系统处理器,如配置常规的SRAM、DRAM、Flash外,还配置网络通信接口、串行通信接口、USB、VGA接口、PS\2接口或其他专用接口等。
2.基于FPGA嵌入式IP软核的SOPC系统,这种SOPC系统是指在FPGA中植入软核处理器。
用户可以根据设计的要求,利用相应的EDA工具,对NIOS·2及其外围设备进行构建,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足用户系统设计的要求。
第二章SOPC介绍
2.1 SOC——片上系统
SOC是指将一个完整产品的功能集成在一个芯片上或芯片组上。
SOC从系统的整体角度出发,以IP(Intellectualproperty)核为基础,以硬件描述语言作为系统功能和结构的描述手段,借助于以计算机为平台的EDA工具进行开发。
由于SOC设计能够综合、全盘考虑整个系统的情况,因而可以实现更高的系统性能。
SOC的出现是电子系统设计领域内的一场革命,其影响将是深远和广泛的。
由SOC构成嵌入式系统设计:
SOC:
它是指将一个完整产品的各功能集成在一个芯片中,可以包括有CPU、存储器、硬件加速单元(AV处理器、DSP、浮点协处理器等)、通用I/O(GPIO)、UART接口和模数混合电路(放大器、比较器、A/D、D/A、射频电路、锁相环等),甚至延伸到传感器、微机电和微光电单元。
(如果把CPU看成是大脑,则SOC就是包括大脑、心脏、眼睛和手的系统。
)
SOC存在的问题:
SOC很好,但现实中却缺乏好的解决方案。
由于是基于ASIC实现SOC统,设计周期长、费用高昂、成功率不高而且产品不能修改显得系统的灵活性差,往往使得学术科研机构、中小企业难以承受。
但是SOC系统为中心、基于IP核的多层次、高度复用,可实现软硬件的无缝结合,综合性高。
2.2编程系统(SoPC—SystemonaProgrammableChip)
SOPC是一种灵活、高效的SoC解决方案。
它将处理器、存储器、I/O口、LVDS等系统需要的功能模块集成到一个PLD器件上,构成一个可编程的片上系统。
它是PLD与SOC技术融合的结果。
由于它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件可编程的功能。
这种基于PLD可重构SoC的设计技术不仅保持了SoC以系统为中心、基于IP模块多层次、高度复用的特点,而且具有设计周期短、风险投资小和设计成本低的优势。
相对ASIC定制技术来说,FPGA是一种通用器件,通过设计软件的综合、分析、裁减,可灵活地重构所需要的嵌入式系统。
2.3IP(IntellectualProperty)
是知识产权的简称,SOC和SOPC在设计上都是以集成电路IP核为基础的。
集成电路IP是经过预先设计、预先验证、符合产业界普遍认同的设计规范和设计标准,并具有相对独立并可以重复利用的电路模块或子系统,如CPU、运算器等。
集成电路IP模块具有知识含量高、占用芯片面积小、运行速度快、功耗低、工艺容差性大等特点,还具有可重用性,可以重复应用于SOC、SOPC或复杂的ASIC的设计当中。
软核
IP软核通常是用HDL文本形式提交给用户,它经过RTL级设计优化和功能验证,但其中不含有任何具体的物理信息。
据此,用户可以综合出正确的门电路级设计网表,并可以进行后续的结构设计,具有很大的灵活性,借助于EDA综合工具可以很容易地与其他外部逻辑电路合成一体,根据各种不同半导体工艺,设计成具有不同性能的器件。
软IP内核也称为虚拟组件(VC-VirtualComponent)。
硬核
IP硬核是基于半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有可保证的性能。
其提供给用户的形式是电路物理结构掩模版图和全套工艺文件,是可以拿来就用的全套技术。
固核
IP固核的设计程度则是介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。
一般以门级电路网表的形式提供给用户。
在SOPC的设计中,嵌入式的微处理器的IP分软核和硬核两种。
基于FPGA嵌入IP硬核的SOPC系统,是在FPGA中以硬核的方式预先植入嵌入式系统处理器,可以是ARM或其他的微处理器知识产权核,然后利用FPGA中的可编程逻辑资源和IP核来实现其他的外围器件和接口。
这样使得FPGA的灵活的硬件设计和实现与处理器的强大运算功能很好地结合。
2.4NiosII软核简介
NiosII是Altera公司2004年6月退出的第二代软核处理器。
相对于Nios,NiosII性能更高,占用FPGA的资源更少,而与之配套的开发环境更先进,有更多的资源可供用户使用。
NiosII系列32位RISC嵌入式处理器具有超过200DMIP的性能,在FPGA中实现成本只有35美分。
由于处理器是软核形式,具有很大的灵性用户您可以在多种系统设置组合中进行选择,达到性能、特性和成本目标。
采用NiosII处理器进行设计,可以帮助用户将产品迅速推向市场,延长产品生命周期,防止出现处理器逐渐过时。
一.可定制性
采用NiosII处理器,开发者将不会局限于预先制造的处理器技术,而是根据自己的标准定制处理器;按照需要选择合适的外设、存储器和接口。
用户可以轻松集成自己专有的功能,使设计具有独特的竞争优势。
NiosII的可定制性
NiosII具有完全可定制和重新配置特性,所实现的产品可满足现在和今后的需求。
NiosII处理器系列包括三种内核——快速(NiosII/f)、标准(NiosII/s)和经济型(NiosII/e),每一型号都针对价格和性能范围进行了优化。
所有这些内核共享32位指令集体系,与二进制代码100%兼容。
外设的可定制性
1.NiosII开发包含有一套通用外设和接口库。
2.利用SOPCBuilder软件中的用户逻辑接口向导,用户可以生成自己的定制外设,并将其集成在NiosII处理器系统中。
使用SOPCBuilder,用户可以在AlteraFPGA中,组合实现现有处理器无法达到的嵌入式处理器配置。
二、系统性能可配置性
用户所需要的处理器,应该能够满足当前和今后的设计性能需求。
NiosII设计人员必须能够更改其设计,如加入多个NiosIICPU、定制指令集、硬件加速器,以达到新的性能目标。
采用NiosII处理器,您可以通过Avalon交换架构来调整系统性能,该架构是Altera的专有互联技术,支持多种并行数据通道,实现大吞吐量应用。
用户可以在FPGA内部实现多个处理器内核,通过将多个NiosII/f内核集成到单个器件内,可以获得更高的性能。
NiosII的IDE开发支持这种多处理器在单一FPGA上的开发,或多个FPGA共享一个JTAG链。
Avalon交换架构
Avalon交换架构能够进行多路数据同时处理,实现无与伦比的系统吞吐量。
SOPCBuilder自动生成的Avalon交换架构针对系统处理器和外设的专用互联需求进行优化。
传统总线结构中,单个总线仲裁器控制总线主机和从机之间的通信。
每个总线主机发起总线控制请求,由总线仲裁器对某个主机授权接入总线。
如果多个主机试图同时接入总线,总线仲裁器会根据一套固定的总裁规则,分配总线资源给某个主机。
由于每次只有一个主机能够接入总线、使用总线资源,因此会导致带宽瓶颈。
Avalon交换架构的同时多主机体系结构提高了系统带宽,消除了带宽瓶颈。
采用Avalon交换架构,每个总线主机均有自己的专用互联,总线主机只需抢占共享从机,而不是总线本身。
每当系统加入模块或者外设接入优先权改变时,SOPCBuilder利用最少的FPGA资源,产生新的最佳Avalon交换架构。
Avalon交换架构支持多种系统体系结构,如单主机/多主机系统,可实现数据在外设与性能最佳数据通道之间的无缝传输。
Avalon交换架构同样支持用户所设计的片外处理器和外设。
定制指令NiosII处理器定制指令扩展了CPU指令集,提高对时间要求严格的软件运行速度,从而使开发人员能够提高系统性能。
采用定制指令,您可以实现传统处理器无法达到的最佳系统性能。
NiosII系列处理器支持多达256条的定制指令,加速通常由软件实现的逻辑和复杂数学算法。
例如,在64K字节缓冲中,执行循环冗余编码计算的逻辑模块,其定制指令速度比软件快27倍。
NiosII处理器支持固定和可变周期操作,其向导功能将用户逻辑做为定制指令输入系统,自动生成便于在开发人员代码中使用的软件宏功能。
定制指令
专用硬件加速器,可以做为FPGA中的定制协处理器,协助CPU同时处理多个数据块。
循环冗余编码实例,采用硬件加速器处理64K字节缓冲比软件速度快530倍。
SOPCBuilder含有一个输入向导,帮助开发人员将其加速逻辑和DMA通道引入系统。
硬件加速
三、延长产品生存周期
为实现一个成功的产品,需要将其尽快推向市场,增强其功能特性以延长使用时间,避免出现处理器逐渐过时。
用户可以在短时间内,将NiosII嵌入式处理器由最初概念设想转为系统实现。
这种基于NiosII处理器的系统具有永久免版税设计许可,完全经得起时间考验。
此外,由于在FPGA中实现软核处理器,因此可以方便实现现场硬件和软件升级,产品能够符合最新的规范、具备最新特性。
当今的嵌入式设计工程师面临很棘手的挑战:
寻找一款能够实现特性、成本、性能和生命周期完美组合的处理器。
而这将影响产品的开发,新品的上市。
也可能出现重新选择开发平台的情况。
AlteraNios®II处理器所具有的完全可定制特性和性能、较低的产品和实施成本、易用性、适应性和不会过时等优势使其在每次设计中,都能够实现完美的配合。
完整的开发工具套件加速产品上市的时间
Altera完整的硬件和软件开发工具帮助用户在极短的时间内,生成功能强大的NiosII处理器系统。
从概念产生到设计调试,Altera提供用户所需的全部工具,帮助用户的产品尽快面市。
2.5OPC开发流程和开发工具
SOPC设计包括硬件和软件两部分。
硬件设计:
主要基于QuartusII和SOPCBuilder。
软件设计:
基于NiosIIIDE。
流程见图解析:
分析系统需求:
在进行SOPC开发之前,首先必须确定系统的需求,如应用系统需求的计算性能、需要的带宽和吞吐量、需求的接口类型以及是否需求多线程的软件等。
建立QuartusII工程:
每个开发过程开始时都应建立一个工程,QuartusII是以工程的方式对设计过程进行管理。
在工程中建立顶层模块文件.bdf相当于传统电路设计中的电路板(PCB)。
定义和生成系统:
在SOPCBuilder中添加需要的功能模块(NiosII及其标准外设模块),完成后生成一个系统模块。
定制指令&定制外设逻辑:
如果需要,用户可以定制指令和外设逻辑。
(可参考第8章)
自定义的功能模块:
当设计中现有模块不能满足设计要求时,可设计自己的功能模块。
并在顶层模块中使用;
集成SOPC生成的系统到QuartusII工程:
在顶层模块中,分别将SOPCBuilder生成的系统模块、LPM功能模块以及用户自定义功能模块添加到顶层模块中;
连接各功能模块:
然后将各个功能模块用连线连起来组成系统功能原理图。
Altera的LPM模块 :
在QuartusII软件中包含了大量的Altera公司提供的LPM功能模块,相当与传统设计中除处理器以外的逻辑芯片(如74系列);
选择FPGA型号并进行管脚分配 :
为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚;
进行编译选项设置:
设置编译选项,从而让编译器按照用户设定来进行编译;
编译硬件系统生成配置文件sof :
编译系统生成硬件系统的配置文件*.sof和*.pof。
编译系统是一个非常复杂的过程,包括优化逻辑的组合、综合逻辑、适配FPGA、布线以及时序分析等步骤。
下载配置文件到FPGA器件:
将配置文件.sof下载到FPGA,将可执行文件.elf下载到RAM。
设置软件运行硬件环境属性:
设置好软件运行的硬件环境属性后,便可进行编译、链接和调试、运行程序。
编译软件:
对用户程序进行编译,生成可执行文件*.elf。
ISS运行/调试:
接下来在IDE的指令集仿真器(ISS)上仿真软件和运行/调试软件。
在目标板上运行/调试软件 :
在目标板上反复调试软件。
使用IDE编程工具 烧写配置文件和软件代码 :
最后利用IDE的编程工具将配置文件烧写到FPGA的配置芯片或Flash,将可执行文件*.elf编程到Flash中。
(1)硬件开发
用SOPCBuilder软件从NiosII处理器内核和NiosII开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件,并定制和配置它们的功能; 分配外设地址及中断号;设定复位地址;用户也可以添加用户自身定制指令逻辑到NiosII内核以加速CPU性能; 添加用户自己设计的IP模块。
编译QuartusII工程,对HDL文件进行布局布线,从HDL源文件综合生成一个适合目标器件网表,生成FPGA配置文件(.sof);
用下载电缆(如ByteBlasterII),将配置文件下载到目标板上。
硬件校验完成后,可将新的硬件配置文件下载到目标板上的非易失存储器(如EPCS器件)。
2)软件开发
软件开发使用NiosIIIDE,它是一个基于EclipseIDE架构的集成开发环境,它包括:
GNU开发工具(标准GCC编译器,连接器,汇编器和makefile工具等);
基于GDB的调试器,包括软件仿真和硬件调试;
提供用户一个硬件抽象层HAL;
提供嵌入式操作系统MicroC/OS-II和LwTCP/IP协议栈的支持;
提供帮助用户快速入门的软件模板;
提供Flash下载支持(FlashProgrmmer和QuartusIIProgrammer)
使用SOPCBuilder生成系统后,可以直接使用NiosIIIDE开始设计C/C++应用程序代码。
Altera提供外设驱动程序和硬件抽象层(HAL),使用户能够快速编写与低级硬件细节无关的NiosII程序; 除了应用代码,用户还可以在NiosIIIDE工程中设计和重新使用定制库。
第3章.数字闹钟的设计过程
3.1需求分析,根据这个要求来建立硬件系统。
3.1.1电子钟的设计要求:
1.在液晶屏上显示日期、时间;
2.可以设置日期、时间;
3.1.2根据系统要求实现的功能,电子钟的设计要用到的外围器件有:
1.LCD:
电子钟显示屏幕;
2.按键:
电子钟设置功能键;
3.Flash存储器:
存储软、硬件程序;
4.SRAM存储器:
程序运行时将其导入SRAM。
3.1.3根据所要用到的外设、要实现的功能以及开发板的配置,在SOPCBuilder中建立系统要添加的模块包括:
NiosIICPU、定时器、按键PIO、LCD控制器、AVALON三态桥、外部RAM接口、外部Flash接口。
3.1.4使用的开发环境如下:
WinXP操作系统、NiosII6.0嵌入式处理器、QuartusII6.0、基于CycloneII的SOPC开发板
3.2创建工程
进行完需求分析之后,进行硬件系统的创建。
首先必须建立一个QuartusII的工程,
步骤如下:
QuartusII6.0(32bit),启动QuartusII软件;QuartusII6.1Altera程序1.开始NewProjectWizard,出现Introduction页面,该页面介绍所要完成的具体任务,点击next。
2.选择File菜单
3.进行项目名称的设定、工作目录的选择。
指定工程存放的目录,工程名和顶层实体名,工程名和顶层实体名要求相同,工程目录可以随意设置,但必须是英文的目录,工程名和顶层实体名也要求是英文名字,我们的工程名和顶层实体名为clock,选择Next。
4.可以为工程添加先期已经输入的设计文件,指定用户自定义的元件库的路径,这里我们没有事先输入好的文件,也没有自定义的元件库,点击Next进入下一步。
5.用户指定目标器件,根据开发板的所使用的器件来选择,实际开发中,通过查看核心板的参考手册来获取所使用的器件具体型号,可以使用窗口右边的Filters来加快器件的选择,选择完毕点击Next。
6.指定在QuartusII之外的用于,设计输入、综合、仿真、时序分析的第三方EDA工具,QuartusII对第三方工具的支持比较完善。
这里我们不做选择,直接点击Next。
Settings所见新工程的信息,确认所创建工程的主要信息,点击Finish完成工程的建立,在开发的过程中,还可以通过菜单assignment来对这些配置进行修改。
点击Finish按钮,QuartusII自动会打开这个工程,可以看到顶层实体名出现在工程导航窗口中。
3.3创建NiosII系统模块
创建完成工程之后,需要创建顶层实体。
创建完顶层设计文件之后,使用SOPCBuilder创建NIOSII嵌