基于NRF24L01的智能小车控制设计_第1页
基于NRF24L01的智能小车控制设计_第2页
基于NRF24L01的智能小车控制设计_第3页
基于NRF24L01的智能小车控制设计_第4页
基于NRF24L01的智能小车控制设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Nios II的数字钟设计 学生姓名: 学生学号: 院(系): 电气信息工程学院 年级专业: 电子信息工程 指导教师: 助理指导教师: 二一五年五月1 摘要摘 要传统的设计技术已经不足以满足系统化、网络化、高速度、低功耗、多媒体等实际需要。SOPC用可编程技术把整个系统放在单一的一个芯片上,因此具有灵活、高效、设计可重用等特性。在SOPC系统中,本来需要上几千行的HDL代码的复杂功能模块,经过嵌入IP核后,只需要几十行的C代码就可以简单的实现,由此可以让整个设计规模、功能、功耗、性能指标、开发成本等多个方面实现优化。本论文主要介绍基于NIOS II 的SOPC设计一个数字钟的方法和流程。在本设计中主要分为硬件设计部分和软件设计部分。本系统的硬件开发是根据我所用的FPGA黑金开发板实际器件搭建的,采用Quarters作为仿真平台。主芯片采用的是Altera 公司的cyclone VI 系列的EP4CE15F17C8N芯片,本设计的软件是用C语言写的,系统是一个数字时钟,因为本设计是通过6个数码管来显示时间的,所以只能显示小时、分钟和秒,满刻度时显示23时59分59秒。在每个设计部分中,都给出了详细的设计方法。通过本次设计可以了解SOPC的开发设计流程,体现FPGA在电子设计领域的广泛应用。关键词 数字钟,SOPC,Nios II,FPGAII ABSTRACTABSTRACTThe traditional design techniques have been insufficient to meet the actual needs systematic, network-based, high-speed, low-power, multimedia. SOPC programmable technology to the entire system on a single chip, it has a flexible, efficient design reuse and other features. In SOPC system, would have required the HDL code thousands of lines of complex modules, after embedded IP core, only a few dozen lines of C code can be simple to achieve, which can make the entire design size, function, power aspects of consumption, performance, optimize development costs. This paper describes the methods and processes based on the NIOS II SOPC design a digital clock. In this design it is divided into hardware design and software design. Hardware development of this system is based on an actual device FPGA development board black gold I used to build, using Quarters as the simulation platform. The main chip is Alteras cyclone VI series EP4CE15F17C8N chip, the design of the software is written in C language, the system is a digital clock, because of the design of digital control by 6 to display the time, we can only display hours, minutes and seconds display 23:59:59 full scale. In each design section, we are given detailed design. Through this design can understand SOPC development and design process, reflect FPGA widely used in electronics design.Key words Digital clock, SOPC, Nios II, FPGA 目录目 录摘 要IABSTRACTII1 绪论31.1 开发背景31.2 开发意义31.3数字钟的发展前景32 系统设计总体方案52.1 设计要求52.2 硬件规划52.3 数字钟的程序设计53 SOPC系统开发工具73.1 硬件开发工具 Quartus II73.1.1 Quartus II软件特点73.1.2 Quartus II的设计流程73.2 SOPC Builder 硬件开发工具功能83.3 NIOS II IDE开发软件93.3.1 NIOS II 简介93.3.2 NIOS II IDE 软件开发流程93.4 开发板芯片介绍103.4.1 开发板整体图片103.4.2 FPGA芯片介绍103.4.3 SDRAM芯片介绍113.4.4 EPCS介绍114 硬件设计部分124.1 创建工程124.2 创建Nios 系统模块144.3 添加CPU和外围器件144.3.1 添加NIOS II Processor144.3.2 添加SYSTEM ID164.3.3 添加SDRAM174.3.4 添加EPCS184.3.5 添加JTAG UART184.3.6 添加Timer184.3.7 添加连接数码管的PIO184.3.8 添加按键PIO194.4 配置Nios 系统模块204.5 建立锁相环PLL224.6 引脚分配244.7 工程设置295 软件设计部分315.1 创建工程315.2 添加程序315.3 程序分析325.4 将程序和硬件下载到外部Flash中33结论36参 考 文 献37附录:程序38致 谢4240 绪论1 绪论1.1 开发背景 基于FPGA的电子系统设计技术是二十一世纪电子应用工程师必备的基础技能之一,而基于FPGA的SOPC设计技术是当前电子系统设计领域最前沿的技术之一。SOPC技术是由美国公司Altera于2000年最先提出的,并且在同时推出了相对的开发软件。它是现代计算机辅助设计技术、EDA技术和大规模集成电路技术的高度发展的产物,SOPC是基于FPGA决解方案的SOC,相比于ASIC的SOC解决方案,SOPC系统及其开发功具有更多的优点和特色,SOPC技术是将电子系统尽可能的大而完整,包括处理器、接口系统、硬件系处理器或者加速系统、数字通信系统、存储电路等,集成到单一的一块FPGA芯片中,所以SOPC又可以称为可编程片上系统。 现在最为常用的嵌入式系统大部分采用了含有ARM的32位知识产权处理核的器件,尽管由这些器件构成的嵌入式系统有很强大的功能,但是为了使系统更加的灵活,功能更加的强大,能更好的适应对多任务的完成,一般为这些处理器配置很多器件才可以够构成一个完整的应用系统,这样的话会使整个系统的体积和功耗增加。但是如果把拥有ARM或者其它知识产权的核,以硬核的方式植入到FPGA中,利用FPGA中的可编程逻辑资源和IP软核,直接利用FPGA中的逻辑宏单元来构成嵌入式系统处理器的接口功能模块,就可以很好的决解上面所说的问题。对于这个问题Altera和Xilinx公司都陆续推出了关于方面的器件。比如,Altera的Excalibur系列的FPGA中就植入了ARM922T嵌入式系统处理器。1.2 开发意义 传统的设计技术已经不足以满足系统化、网络化、高速度、低功耗、多媒体等实际需要。SOPC可以将处理器、存储器、外设接口和多层次用户电路等多种系统设计需要的分模块集成到一块芯片上,因此具有灵活、高效、设计可重用等特性。在SOPC系统中,本来需要上几千行的HDL代码的复杂功能模块,经过嵌入IP核后,只需要几十行的C代码就可以简单的实现,由此可以让整个设计规模、功能、体积、功耗、性能指标、上市周期、可靠性、开发成本、产品维护、及硬件升级等多个方面实现优化。 SOPC已经成为了集成电路未来的发展方向,可以广泛的应用在军事、汽车、广播、航空航天、消费类电子、测试和测量、医疗、无线通信、有线通信等多个领域。1.3数字钟的发展前景现在是一个知识爆炸的新时代,新产品、新技术不停的出现,电子技术的发展更是一天一个样。可以毫不夸张的说,电子技术的应用在我们身边无处不在,我们的生活正在被电子技术不停地改变,改变着我们生活的世界。在这个快速发展的时代,时间对于我们来讲是越来越宝贵,在快节奏的生活中,人们经常忘记了时间,如果碰到很重要的事情但是忘记了时间,这将会造成很大很大的损失。因此我们需要一个定时系统来使这些忙碌的人得到提醒。数字化的钟表给我们带来了很大的方便。近年来,科技的发展和社会的进步,使得人们对数字钟的要求也变得越来越高,传统的时钟已经不能够满足人们的需求。数字钟不论是在性能还是在样式和性价比上都发生了质的变化,有了电子闹钟、数字闹钟等等。 系统设计总体方案2 系统设计总体方案2.1 设计要求(1) 具有正确的时,分,秒计时功能;(2) 计时结果要用数码管分别显示时、分、秒的十位和个位;(3) 当按下RESET按键时,时钟初始化,重新开始计数,当按下k1按键时,时钟处于调时状态,当按下k2时,时钟处于调分状态;2.2 硬件规划在硬件系统组织规划中系统需使用的外围器件包括: 1、数码管:数子钟显示屏幕; 2、按键:数子钟设置功能键; 3、Flash存储器:存储软、硬件程序;在SOPC Builder中建立系统要添加的模块包括: 1、Nios 32bits CPU; 2、Interval Timer; 3、按键PIO; 4、连接数码管的PIO; 5、SDRAM Controller; 6、System ID Peripheral; 7、JTAG UART Interface; 8、EPCS Serial Flash Controller。2.3 数字钟的程序设计用8段数码管显示时间(小时:分钟:秒)。设置部分的功能是设置小时和分钟。时间算法部分指时间累加,即秒数加到60变为0,然后分钟数加1。分钟数加到60变为0,小时数再加1,小时数加到24时,小时数变为0,不断循环。数字钟主程序流程图如下: 定时器初始化、中断初始化开始定时器计时是否有按键小时加1分钟加1时钟清零K1K2RESET时钟显示结束YN图2.1 数字钟主程序流程图在设计程序的时候,要注意按照硬件设计来设计,名称要与硬件部分相符合,不然会有错误;在添加头文件时,注意程序需要用到的头文件,不要少添加;实现功能所需要的硬件在程序也不要忘记定义;写中断服务函数的时候不要忘记在主函数中写中断注册函数;在编译有错误的情况下,参考错误提示来修改,这样修改速度回更快些。 SOPC系统开发工具 3 SOPC系统开发工具3.1 硬件开发工具 Quartus IIAltera Quartus II 设计软件能够提供完整的多平台设计环境,能够直接满足特定的设计需要,为片上可编程系统(SOPC)提供全面完善的设计环境,内含有FPGA和CPLD设计所有阶段的决解方案。3.1.1 Quartus II软件特点(1) 基于模块的设计方法,提高了工作效率。LogicLock基于模块的设计方法,便于用户独立设计和实施各种设计模块,并且在将模块集成到顶层工程时还可以维持各个功能的模块性能,可以明显的缩短设计和验证周期。 (2) 更快的集成IP核。Quartus II软件包括SOPC Builder 工具,可以自动化的完成IP核的添加、参数设计和连接功能。 (3) 在设计周期的早期就对I/O引脚进行分配和确认。Quartus II软件可以预先在顶层模块未能完成时对I/O引脚分配和确认,这样可以在整个设计流程中尽早开始印刷电路板的布线设计工作。 (4) 存储器编译器。Quartus II软件中提供存储器编译器功能对嵌入式存储器进行管理,针对FIFO和RAM读操作的基于现有设置的波形动态生成功能。 (5) 用全新的命令行和脚本功能自动设计化流程。用户可以使用Quartus II软件中的图形界面独立运行Quartus II中的综合、布局布线、时序分析及编程等模块。并且能够对设计后的性能和功耗进行准确的估算。3.1.2 Quartus II的设计流程Quartus II软件有着完整的设计平台,FPGA利用Quartus II的设计流程如下图:设计入口综合布线布局时序分析编程与重构调试改变工程管理定时终止图3.1 Quartus II的设计流程图(1) 设计入口:Quartus II 的设计入口包括模块编辑器、MegaWizard管理器、文本编辑器和EDA设计输入工具。利用这些工具可以建立我们需要的设计代码并生成Symbol图,生成我们需要的所有子模块。 (2) 综合:综合是将HDL语言、原理图、等设计输入翻译成有基本逻辑器件组成的电路,Quartus II提供综合工具的分析和综合模块分析文件,并建立工程数据库,输出网表和映射文件,供布局布线工具使用。 (3) 布局布线:Quartus II可以完成布局布线功能,主要包括配置编辑器、分析布局、分析布局布线结果。将工程的逻辑和时序与器件可用资源相匹配,使得每个逻辑器件被分配最佳逻辑单元,并进行布线和时序的分析,选定互连路径和引脚分配。 (4) 时序分析:Quartus II软件中的TimeQuest可以时序分析所有逻辑,并达到设计的时序要求。操作要根据设计建立波形文件,选择我们的I/O口加载,设置好输入时间,自动执行。 (5) 仿真:Quartus II提供Simulator仿真工具,或者我们可以用第三方仿真软件进行仿真。 (6) 编程与重构:Quartus II软件正确编译工程之后,就可以对FPGA器件进行编程或配置,编程有被动串行模式、主动串行模式(AS)、JTAG模式、插座内编程模式,被动串行和JTAG模式允许使用CDF和Altera编程硬件进行编程,主动串行编程模式使用EPCS1或者EPCS4等串行配置器件编程,插座编程模式与CDF和Altera编程硬件可以对单个CPLD或者配置器件编程。3.2 SOPC Builder 硬件开发工具功能SOPC Builder系统开发工具允许嵌入式系统设计着在很短的时间内创建一个片上可编程系统(SOPC)。SOPC Builder工具已经集成到了Quartus II 软件中,在Quartus II软件菜单中的Tools工具下我们可以找到 SOPC Builder。SOPC Builder配置流程如下:配置处理器选择并配置外设连接模块生成系统制定指令处理器IP核模块外设库图3.2 SOPC Builder配置流程图(1) 配置处理器,处理器系列包括了三种核心快速的内核(Nios II/f)具备高性能,经济的内核(Nios II/e)具备低成本和标准的内核(Nios II/s)用于性能和尺寸的平衡。根据需要我们可以选择自己的处理器。 (2) 选择并配置外设,根据我们的硬件电路板,选择我们需要的外设接口设备,如:SDRAM、Flash、显示、按键等,SOPC Builder的IP库提供和丰富的标准外设,我们根据需要添加。 (3) 连接模块。根据实际需要,选择我们的复位地址和代码开始执行地址,我可以用自动或手动分配器件的基地址和中断地址。在应用场合较高或者硬件资源非常有限的情况下我们任需要给器件手动分配基地址。 (4) 生成系统,启动SOPC Builder的Generate命令,SOPC Builder将根据我们选择的处理器和外设自动生成一个硬件系统。3.3 NIOS II IDE开发软件软件开发调试环境。开发环境还包括了GNU工具链、硬件抽象层(HAL)、实时操作系统(RTOS)、TCP/IP堆栈、指令集仿真器(ISS)。3.3.1 NIOS II 简介NIOS II 是一个用户可配置的软核处理器,NOIS II 处理器不像ARM那样是由固定的硬芯片来实现,而是由软件设计实现,然后用设计文件来配置FPGA芯片。因此具有很大的灵活性。NIOS II系统设计分两大类:标准外设和自定义外设。Altera公司提供了系列的标准外设,如SDRAM、定时器、串行通信接口、通用IO口等标准外设。加上第三方软件的支持使得标准外设的IP核越来越丰富。由于在有些环境中需要运行某个程序需要处理大量的数据,这样占据相当多的CPU资源。在这种情况下我们可以自己定义一个外设,并集成到NOIS II系统中,来进行大量的数据处理,从而改变两个方面的NIOS II系统的性能,一是用硬件方式代替软件代码,实现处理速度明显提升;二是节省了CPU资源。3.3.2 NIOS II IDE 软件开发流程NIOS II IDE开发流程有 : 创建工程 配置工程的系统属性 编译运行工程 调试模式 Flash Progrmmer下载(1) 在SOPC Builder下,在Nios II tools下点击Nios II IDE 启动我们的NIOS II IDE软件,创建一个C/C+工程,并选择好工程模板。每个模板都包含了一些列软件。 (2) 文件和工程配置。配置工程的系统属性,主要有代码优化级别、调试级别和System Library选项配置。(3) 编译运行工程,在编译工程完了之后会产生写系统的头文件,我们要尤为关注的是system.h这个文件下的两个参数,一个是器件的基地址一个是器件的中断信号。 (4) 调试模式,NIOS II IDE 包含了一个强大的GDB,其功能强大。我们将用USB-laster II把扩展名为(.sof)文件下载FPGA中,在Run/Debug AS/Nios II hardware就可以进入调试界面进行硬件调试。3.4 开发板芯片介绍3.4.1 开发板整体图片图3.3 开发板整体图3.4.2 FPGA芯片介绍Altera公司 和Xilinx公司的FPGA芯片是现在主要的常用芯片,Altera公司的常用芯片中能支持SOPC的FPGA芯片主要分为高端和低成本FPGA芯片,高端FPGA有Stratix 系列、Stratix II 系列和Stratix III 系列等,低成本的FPGA有Cyclone II系列、Cyclone III系列、Cyclone IV系列等,在本次设计中所用的芯片是低成本的Cyclone IV系列EP4CE15F17C8N芯片。Cyclone IV系列的EP4CE15F17C8N信息如下图所示:图3.4 EP4CE15F17C8的信息EP4CE15F17C8N芯片拥有15408个逻辑单元,用户使用引脚有166个,具有bits的嵌入式RAM,拥有4个内置的PLL,其IO口采用的是3.3V的LVTLL标准。3.4.3 SDRAM芯片介绍设计中所用FPGA芯片的SDRAM是外加HY57V2562GTR内存,HY57V2562GTR是容量为bit(4bank X 4M X 16bit 即4个可选页 地址宽度为13行9列,数据宽度为16位)的同步动态随机存储器(SDRAM),全部采用CMOS工艺制成,其所有的端口都支持LVTLL标准,读延迟时间为2到3个周期,刷新周期为15.625us。最为重要的是读写延迟20ns;2ns输入建立时间 ,输入采样保持时间为 1ns,输出高阻态时间 为6ns,输出保持时间 为3ns。其引脚功能图如下图所示图3.5 SDRAM引脚功能图3.4.4 EPCS介绍EPCS芯片是串行配置芯片,本设计中的用的是EPCS4,用于存放我们的Bootloader程序,在Nios II处理器的设计中,需要把处理器设置成从EPCS启动,在CPU模块的系统复位地址,将其设置成EPCS,再分配基地址的时候需要把EPCS的地址锁定,并且锁定为0x,这样系统复位后,NIOS II 处理器会首先执行EPCS内的BootLoader程序,在软件设计中其包括了两个文件ltera_avalon_epcs_flash_contrller.h和altera_avalon_epcs_flash_controller.c其集成到HAL系统的驱动代码,是不可修改的。 硬件设计部分 4 硬件设计部分4.1 创建工程打开Quartus II软件,建立一个工程File-New Project Wizard,出现工程向导对话框,点击Next,出现如下图所示的工程存储路径与工程名向导对话框。图4.1 工程向导对话框第一行为工程的存储路径,需要在开始前建立一个文件夹,用于存储各种工程文件,注意存储路径中一定不能有空格和中文,将工程存储在E:/szz文件夹下,在第二行输入工程名sz,然后,点击Next,出现如下所示工程文件添加对话框。图4.2 工程文件添加对话框这一页是工程文件添加对话框,由于是新建工程,没有要添加的工程,所以不需要修改,点击Next,如下图所示,Family选择CYCLONE IV E系列,芯片选择EP4CE15F17C8,说明一下EP4CE15F17C8N,N是代表无铅,与芯片型号没有关系;而EP4CE15F17C8L的L是低电压的意思,就是说这个是低电压版本。本设计使用的是正常的版本,即型号为EP4CE15F17C8。如下图红圈处。图4.3 器件选择对话框后面的不需要进行任何设置,可以点击Next,直到Finish,完成工程建立;也可以直接点击Finish,完成工程建立。下一步,我们需要建立一个原理图文件,作为顶层文件,点击File-New,如下图所示,然后双击Block Diagram/Schematic File,图4.4 原理图建立窗口建立好以后,弹出模块编辑窗口,如下图所示,记得将原理图文件保存到工程文件夹下。图4.5 模块编辑窗口4.2 创建Nios 系统模块原理图文件建好后,我们就要进入SOPC Builder中进行软核的设计了,创建的Nios II处理器软核和外设,是这个系统中最重要的模块,在完成后需要添加到刚才建立的顶层原理图中。点击Tools-SOPC Builder。由于ALTERA增加了Qsys的功能,所以将SOPC Builder放进了Tools下。进入SOPC Builder以后,如下图所示,将System Name命名为kernel,硬件描述语言选择Verilog,然后点击OK。图4.6 创建新系统对话框4.3 添加CPU和外围器件4.3.1 添加NIOS II Processor首先,我们来建立NIOS II Processor,如下图所示图4.7 系统元件窗口双击之后,将出现下图,这一步我们来选择软核的类型。NIOS II Processor给我们提供了三种类型,功能最多,占资源最多,速度最快的Nios II/f;功能比前者少了,占资源比前者少一些,速度也慢一些的Nios II/s;功能最简单,占用资源最少,速度最慢的Nios II/e。选择的时候要根据设计的需求和设计所用的芯片资源来决定。在这里,我选择Nios II/f,功能和速度都可以得到满足。下面的Exception Vector是异常情况时的Memory类型和偏移量,Reset Vector是复位后启动时的Memory类型和偏移量 。现在还不能配置,需要SDRAM和FLASH设置好以后才能修改这里,这两个地方很重要。 图4.8 Nios II处理器核的设置页面点击Next,如下图所示,将下图红圈处,Data Cache改为None。图4.9 Caches and Memory Interfaces设置页面接下来连续点击Next,一直到下图为止图4.10 JTAG Debug Moudule 设置页面这里设置JTAG Debug Module,即JTAG调试时所用到的功能模块。功能越多,需要的资源越多,这里,我们选择Level 1即可,不需要过多其他的功能。点击Finish,结束Nios II Processor的建立。4.3.2 添加SYSTEM ID在左侧的元件库中,双击System ID Peripheral,进入以后,如下图所示,这里面会有个警告,只要按照规定做就可以了,命名为sysid,然后点击Finish。图4.11 System ID Peripheral设置页面4.3.3 添加SDRAMSystem ID添加完后,接下来,我们来添加SDRAM模块,在左侧元件库中双击SDRAM Controller,进入SDRAM Controller配置界面,如下图所示,Presets处选择Custom;Data width处选择16bit;Row处填写13;Column处填写9。图4.12 SDRAM Controller设置页面选择Custom,是因为自带的里面没有我们所使用的SDRAM型号,所以自定义相关参数。相关参数,当然需要看相应芯片的datasheet,我们所使用的SDRAM有两种,K4SK或者HY57V2562GTR,他们是引脚兼容的两种芯片,因此可以相互替代。 我们所使用的,数据宽度Data width:16bit,ROW:13bit,Column:9bit。设置好以上参数,点击Finish完成SDRAM模块的添加。4.3.4 添加EPCSSDRAM Controller添加完后,接下来,我们来添加EPCS模块,在元件库中双击EPCS Serial Flash Controller,进入EPCS配置界面,这里不需要做任何更改,直接点击Finish,完成EPCS Serial Flash Controller的构建。4.3.5 添加JTAG UART EPCS Serial Flash Controller完成添加后,我们来构建JTAG UART,JTAG UART接口用于Nios II处理器与计算机通信,在左侧元件库中双击JTAG UART,进入JTAG UART设置界面以后,不需要进行修改,点击Finish,完成构建。4.3.6 添加TimerJTAG UART添加完成后,接下来,我们来构建Timer,在元件库中双击interval Timer,进入后出现interval Timer设置界面图4.13 Interval Timer页面在Period栏填1000;Counter size选择32;Presets选择Full-featured;然后点击Finish,完成构建。4.3.7 添加连接数码管的PIO因为数字钟要显示小时、分钟和秒,所以要用到6位数码管,在添加连接数码管的PIO时,就要分别添加数码管的8位段选PIO和6位位选PIO。首先我们添加8位段选PIO,在左侧元件库中双击PIO,进入后出现PIO设置界面。在Width(1-32bits)项填8,Direction选择Output,其余项保持默认,点击Finish,完成8位段选PIO的添加。6位位选PIO的添加时一样的,不同的是在Width(1-32bits)项填6。图4.14 控制数码管的PIO4.3.8 添加按键PIO按键PIO的添加步奏与数码管PIO的添加步奏是相同的,在Width(1-32bits)项填2,因为在数码管的功能中只有调分和调小时两个功能,所以只需要两个按键;Direction选择Intput,因为按键信号是输入到系统中,所以要选择input;勾选Synchronously capture,Edge Type选择FALLING,勾选Generate IRQ,在IRQ Type栏选择LEVEL,这里选择LEVEL是用电平来控制中断,如下图所示。图4.15 控制按键的PIO4.4 配置Nios 系统模块将上述所有的模块构建完以后,我们需要进行修改名字,如果不改名字,就会出错,最后改完以后,如下图所示图4.16 名字更改后的页面完成以上操作以后, cpu还需要进行设置,不然会有错误,我们双击cpu,如下图所示图4.17 Nios II配置窗口Reset Vector处选择epcs,Exception Vector处选择sdram。Reset Vector指复位地址,也就是说NIOS软核复位重启后,从此处开始运行。Exception Vector是指出现异常,NIOS软核重启的地址。然后点击Finish,完成修改。接下来,我们需要对EPCS地址进行锁定,保证 EPCS的起始地址为0x,因为EPCS是NIOS软核重启后的起始位置,这样做的好处就是有利于我们操作,系统重启后从 0x开始也是我们思维习惯。如下图所示,将EPCS地址改为0x以后,用鼠标点击下图红圈处,当小锁有开启变为闭合,即完成锁定。图4.18 锁定EPCS地址EPCS的起始地址锁定后,我们需要进行自动分配一下空间地址,点击工具栏上的System-Assign Base Addresses,完成后,每个器件后的起始地址都发生了改变。这样就完成了各个器件空间地址的自动分配。自动分配一下空间地址完成后,还要进行自动分配中断,点击工具栏上的System-Assign Interrupt Numbers,系统会进行器件中断优先级的自动分配,IRQ栏的数字会发生变化。完成上述以后,我们将NIOS的时钟改为100M,如下图所示图4.19 更改Nios时钟上面的工作完成以后,软核的构建工作已经基本完成了,接下来,我们点击Next,进入编译工作,点击Generate,编译完以后,会有信息提示,如下图所示,看到了Successful就可以判断,编译成功了。图4.20 编译成功窗口编译完以后,点击Exit退出Sopc Builder。Nios II系统模块完成后,需要添加到先前的原理图文件中,回到Quartus界面以后,我们在原理图窗口双击,出现下图窗口,点击Project展开工作目,然后双击红圈处的kernel,将软核放到原理图内。图4.21 Symbol窗口4.5 建立锁相环PLLNios II系统模块和SDRAM还需要时钟来驱动,所以需要建立锁相环PLL,给软核和外部的SDRAM提供时钟。在原理图空白处,双击左键,出现Symbol窗口,点击MegaWizard Plug-In Manager,进入MegaWizard Plug-In Managerpage 1界面,不做任何改动,点击next,出现如下图所示MegaWizard Plug-In Managerpage 2a界面图4.22 选择ALTPLL宏功能模块在左侧选择I/O下的ALTPLL,然后在右侧将其命名为PLL,使用的语言选择Verilog HDL,然后点击Next,进入PLL设置页面,如下图示图4.23 时钟和工作模式设置我们将红圈处的输入时钟频率inclk0 input设置为50M,这个地方是开发板上晶振的频率(50M),即基准频率。然后点击Next,如下图所示图4.24 Inputs/Lock窗口把红圈处的两处勾选去掉,然后不断地点击Next,一直出现clk c0设置页面,如下图所示, 图4.25 clk c0设置窗口将Enter output clock parameters设置为1,可以看到Actual Settings显示为50.,即实际的频率为50MHz,这个是提供给软核的频率,接下来我们还需要设置SDRAM的时钟频率,点击Next,出现clk c1设置页面,如下图所示,图4.26 clk c1设置窗口首先,将Use this clock勾选,然后将Enter output clock parameters设置为1,可以看到Actual Settings显示为50.,即实际的频率为50MHz,这个是提供给SDRAM的。除此之外,由于电路板及芯片的信号延迟等原因,我们需要对时钟相移进行调节,以达到SDRAM的时钟与软核之间的协调。我们将Clock phase shift设置为-73,这个Clock phase shitf其实是一个范围,输入-65、-75应该也是可以满足的。都设置好以后,我们点击Finish,出现下图所示,点击Yes,完成锁相环的构建。 图4.27 PLL完成对话框然后按照添加NIOS软核的方法把锁相环添加到工程中。 4.6 引脚分配接下来,需要将锁相环跟软核进行连接,锁相环的c0口接到软核的clk,连接方法就是将鼠标移动到端口处,当出现“+”符号的时候,按住鼠标左键,进行拉动,到了指定位置,松开鼠标即可。连接好之后,就要进行引脚分配了。鼠标右键点击锁相环PLL,在下拉菜单里点击Generate Pin for Symbol Ports,如下图所示图4.28 Generate Pin for Symbol Ports相同道理,对软核kernel进行分配,然后将管脚拉倒适当的位置,这时引脚的名称与tcl脚本文件中的名称不一样,还需要对引脚进行重新命名,这样才能用tcl脚本文件进行自动分配引脚。下面是截取osh.tcl文件中的一部分,重新命名是就按照这个来。#复位引脚set_location_assignmentPIN_M1-to RESET#时钟引脚set_location_assignmentPIN_R9-to CLOCKset_location_assignmentPIN_A9-to CLOCK_40M#EPCS引脚set_location_assignmentPIN_H2-to DATA0set_location_assignmentPIN_H1-to DCLKset_location_assignmentPIN_D2-to SCEset_location_assignmentPIN_C1-to SDO#SDRAM引脚set_location_assignmentPIN_A10-to S_DB0set_location_assignmentPIN_B10-to S_DB1set_location_assignmentPIN_A11 -to S_DB2set_location_assignmentPIN_B11-to S_DB3set_location_assignmentPIN_A12-to S_DB4set_location_assignmentPIN_B12-to S_DB5set_location_assignmentPIN_A13-to S_DB6set_location_assignmentPIN_B13-to S_DB7set_location_assignmentPIN_A2-to S_DB8set_location_assignmentPIN_B1 -to S_DB9set_location_assignmentPIN_C2-to S_DB10set_location_assignmentPIN_D1-to S_DB11set_location_assignmentPIN_F2-to S_DB12set_location_assignmentPIN_F1-to S_DB13set_location_assignmentPIN_G2-to S_DB14set_location_assignmentPIN_G1-to S_DB15set_location_assignmentPIN_F15-to S_A0set_location_assignmentPIN_F16-to S_A1set_location_assignmentPIN_G15-to S_A2set_location_assignmentPIN_G16-to S_A3set_location_assignmentPIN_C8-to S_A4set_location_assignmentPIN_A7-to S_A5set_location_assignmentPIN_B7-to S_A6set_location_assignmentPIN_A6-to S_A7set_location_assignmentPIN_B6-to S_A8set_location_assignmentPIN_A5-to S_A9set_location_assignmentPIN_D16-to S_A10set_location_assignmentPIN_B5-to S_A11set_location_assignmentPIN_A4-to S_A12set_location_assignmentPIN_A3-to S_CLKset_location_assignmentPIN_C16-to S_BA0set_location_assignmentPIN_D15-to S_BA1set_location_assignmentPIN_A15-to S_NCASset_location_assignmentPIN_B4-to S_CKEset_location_assignmentPIN_B16-to S_NRASset_location_assignmentPIN_B14-to S_NWEset_location_assignmentPIN_C15-to S_NCSset_location_assignmentPIN_B3-to S_DQM1set_location_assignmentPIN_A14-to S_DQM0#按键对应的引脚set_location_assignmentPIN_R8-to KEY2set_location_assignmentPIN_E1-to KEY0set_location_assignmentPIN_T8 -to KEY4set_location_assignmentPIN_M2-to KEY1set_location_assignmentPIN_T9-to KEY3#数码管对应的引脚set_location_assignmentPIN_M8-to DIG0set_location_assignmentPIN_L7-to DIG1set_location_assignmentPIN_P9-to DIG2set_location_assignmentPIN_N9-to DIG3set_location_assignmentPIN_M9-to DIG4set_location_assignmentPIN_M10 -to DIG5set_location_assignmentPIN_P11 -to DIG6set_location_assignmentPIN_N11 -to DIG7set_location_assignmentPIN_N6-to SEL5set_location_assignmentPIN_P6-to SEL4set_location_assignmentPIN_M6 -to SEL3set_location_assignmentPIN_M7-to SEL2set_location_assig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论