1、三FLASH控制器的添加及FLASH烧写1.3 FLASH控制器的添加及FLASH烧写1.实验目的(1)进一步熟悉Nios II系统的构成及开发流程;(2)进一步熟悉SOPC Builder和Nios II IDE的使用;(3)掌握FLASH控制器的添加与使用;(4)掌握FLASH的烧写。2.实验现象8个LED灯花样闪烁。3.实验原理原理图如图1.3.1所示图1.3.1由图1.3.1我们可以得到如表1.3.1所示的外设一览表:表1.3.1外设名称描述备注cpuNios II/e Debug Module=Level1sysid系统ID系统的唯一标识led_pio8位只输出控制LEDsdramC
2、ustom,Row=12,Column=8Data width=16,Banks=4flashCustom,Address width=21Data width=8三态桥Registered图1.3.2是编写本实验时所使用的核心板中FLASH的连接图,从连接图及附录三FLASH_Am29LV160D的芯片手册可以知道,使用的是byte mode,因此地址最低位是F_A-1(DQ15),最高位是F_A19,共21位,数据位是8位。至于时序,我们用经验值Setup=40ns,Wait=160ns,Hold=40ns,这一值可以满足要求,当然实际应用时最好仔细阅读芯片手册进行设置。但是,FLASH控
3、制器需要通过三态桥与总线相连接,所以还需要添加一个三态桥并手动进行连接。顶层原理图如图1.3.3所示。图1.3.2图1.3.34.实验内容(1)在Quartus II中建立一个工程;(2)使用SOPC Builder建立生成一个具有表1.3.1所示元件的Nios II硬件系统;(3)在Quartus II工程中添加PLL;(4)建立基于Nios II的硬件系统并编译生成配置文件*.sof;(5)在Nios II IDE中建立对应硬件系统的Nios II C/C+ Application,编写程序;(6)将配置文件*.sof和可执行文件*.elf都下载到FPGA进行在线运行。5.实验步骤上一节实
4、验介绍过的内容不再介绍,这里只介绍FLASH控制器和三态桥的添加。完整的Nios II系统图如图1.3.4所示。图1.3.41)在SOPC Builder中添加FLASH控制器 在可用元件列表里双击Flash Memory(CFI)(图1.3.5),在弹出的设置向导里按图1.3.6和图1.3.7所示设置。图1.3.5图1.3.6图1.3.72)在SOPC Builder中添加三态桥 添加完FLASH 控制器后可以看到信息栏有一个错误提示(图1.3.8),实际上是要求我们加入一个三态桥。双击Avalon-MM Tristate Bridge(图1.3.9)按图1.3.10和图1.3.11所示进行
5、设置。在图1.3.11中,因为除了FLASH我们没有添加其他与三态桥连接在一起的元件,所以没有可共用的信号可选,如果有的话可在这里设置。同时可以看到,数据总线始终是共用的,片选信号始终是独立的。图1.3.8图1.3.9图1.3.10图1.3.113)手动连接FLASH与三态桥 从图1.3.12可以看到,刚添加好的三态桥和FLASH并未连接,需要我们手动连接。如图1.3.13所示,把鼠标移到左边的连接处会出现一个空心的圆圈,单击鼠标后会变成实心的圆圈,表示这两个节点已经连接上,如果想取消某个连接用同样的方法,鼠标移到圆圈处单击使实心的圆圈变成空心的即可断开。连接好后如图1.3.14所示,不过连接
6、好后信息栏有可能出现更多的错误,读者不必担心,自动分配一下基地址错误即可消除,如果还有错误的话那就请你仔细检查你的操作过程。图1.3.12图1.3.13图1.3.144)设置复位地址和异常向量地址 添加好所有元件后别忘了设置复位地址,这时我们可以把复位地址分配在FLASH,异常向量地址分配在SDRAM(图1.3.15)。与第1节的实验比较一下,可以看到,原先的片内ROM和片内RAM分别被较大容量的外部FLASH和SDRAM代替。由此构成一个比较完整的小微机系统。图1.3.155)在Quartus II中组合所有模块并添加引脚编译 与之前的实验相同,需要提醒读者注意的是FLASH的数据总线与SD
7、RAM一样也是双向的端口,所以要使用bidir而不使用output。6)在Nios II IDE中编写程序文件编写如下所示的程序文件,系统库属性使用默认的设置。不进行程序优化,因为本实验使用的是SDRAM,空间大小已经足够。与之前一样,同样可以进行调试运行。/*版权声明* * 新疆大学信息科学与工程学院创新实验室 * 文件名: flowled.c * 创建者: 吴占敏 * 创建日期: 2010.4.24 * 校验者: * 校验日期: * 版本号: V1.0 * 功能描述: 通过PIO直接控制8个LED产生流水灯效果 */#include system.h#include altera_aval
8、on_pio_regs.h#include alt_types.h/* 流水灯花样,低电平点亮,注意调用时候用了取反操作 */const alt_u32 LED_TBL = 0x00, 0xFF, / 全部熄灭后,再全部点亮 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, / 依次逐个点亮 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, / 依次逐个叠加 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, / 依次逐个递减 0x81, 0x42, 0x24
9、, 0x18, 0x18, 0x24, 0x42, 0x81, / 两个靠拢后分开 0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 / 从两边叠加后递减; /* 名 称:main()* 功 能:控制LED流水显示。*/int main (void) alt_u8 i; alt_u32 j; while (1) for (i=0; i42; i+) /* 流水灯花样显示 */ IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, LED_TBLi); j = 0; while (j100000) /延时 j+; retu
10、rn 0;7)FLASH烧写 在前一节的实验中,我们无法把程序保存在SDRAM内,因为SDRAM掉电后数据即丢失,因此那样的一个系统没有实际的应用意义。而第1节实验中,尽管我们可以把程序保存在片内ROM,但由于其大小又限制了进一步开发,也没有太大的应用空间。添加了FLASH就解决了这两个问题。 选择菜单栏ToolsFlash Programmer.(图1.3.16)即弹出图1.3.17所示的界面。图1.3.17所示的是没有添加任何Flash Programmer时的情形,添加后如图1.3.18所示。读者应检查默认的所要编程的是否是自己想要下载的工程,因为打开后默许的是前一次下载时的工程。设计者
11、也可以把FPGA配置文件和其他的文件(如一幅图片数据)下载到FLASH使用。如果是对EPCS编程,则要求把配置文件也下载到EPCS。设置好后点Program即可,如若出现图1.3.19所示信息则表明编程成功,按一下复位键后系统将运行。图1.3.16图1.3.17图1.3.18本节易错提示:1、FLASH控制器设置的与自己使用的板子不一致;2、FLASH控制器的数据端口没使用双向端口bidir而使用output,这一点读者务必特别注意;3、建立Nios II工程时使用了前一次*.ptf文件,而不是刚刚建立的工程文件;4、在线调试运行时一定要把复位端接上(低电平有效,调试运行时应该是高电平),否则会出现veryfy failed的错误;5、分配管脚时与核心板实际连线不一致将直接导致FLASH编程失败;6、FLASH编程后必需按一下复位系统才会重新运行。图1.3.19
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1