三FLASH控制器的添加及FLASH烧写.docx
- 文档编号:18062946
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:15
- 大小:463.13KB
三FLASH控制器的添加及FLASH烧写.docx
《三FLASH控制器的添加及FLASH烧写.docx》由会员分享,可在线阅读,更多相关《三FLASH控制器的添加及FLASH烧写.docx(15页珍藏版)》请在冰点文库上搜索。
三FLASH控制器的添加及FLASH烧写
1.3FLASH控制器的添加及FLASH烧写
1.实验目的
(1)进一步熟悉NiosII系统的构成及开发流程;
(2)进一步熟悉SOPCBuilder和NiosIIIDE的使用;
(3)掌握FLASH控制器的添加与使用;
(4)掌握FLASH的烧写。
2.实验现象
8个LED灯花样闪烁。
3.实验原理
原理图如图1.3.1所示
图1.3.1
由图1.3.1我们可以得到如表1.3.1所示的外设一览表:
表1.3.1
外设名称
描述
备注
cpu
NiosII/eDebugModule=Level1
sysid
系统ID
系统的唯一标识
led_pio
8位只输出
控制LED
sdram
Custom,Row=12,Column=8
Datawidth=16,Banks=4
flash
Custom,Addresswidth=21
Datawidth=8
三态桥
Registered
图1.3.2是编写本实验时所使用的核心板中FLASH的连接图,从连接图及附录三FLASH_Am29LV160D的芯片手册可以知道,使用的是bytemode,因此地址最低位是F_A-1(DQ15),最高位是F_A19,共21位,数据位是8位。
至于时序,我们用经验值Setup=40ns,Wait=160ns,Hold=40ns,这一值可以满足要求,当然实际应用时最好仔细阅读芯片手册进行设置。
但是,FLASH控制器需要通过三态桥与总线相连接,所以还需要添加一个三态桥并手动进行连接。
顶层原理图如图1.3.3所示。
图1.3.2
图1.3.3
4.实验内容
(1)在QuartusII中建立一个工程;
(2)使用SOPCBuilder建立生成一个具有表1.3.1所示元件的NiosII硬件系统;
(3)在QuartusII工程中添加PLL;
(4)建立基于NiosII的硬件系统并编译生成配置文件*.sof;
(5)在NiosIIIDE中建立对应硬件系统的NiosIIC/C++Application,编写程序;
(6)将配置文件*.sof和可执行文件*.elf都下载到FPGA进行在线运行。
5.实验步骤
上一节实验介绍过的内容不再介绍,这里只介绍FLASH控制器和三态桥的添加。
完整的NiosII系统图如图1.3.4所示。
图1.3.4
1)在SOPCBuilder中添加FLASH控制器
在可用元件列表里双击FlashMemory(CFI)(图1.3.5),在弹出的设置向导里按图1.3.6和图1.3.7所示设置。
图1.3.5
图1.3.6
图1.3.7
2)在SOPCBuilder中添加三态桥
添加完FLASH控制器后可以看到信息栏有一个错误提示(图1.3.8),实际上是要求我们加入一个三态桥。
双击Avalon-MMTristateBridge(图1.3.9)按图1.3.10和图1.3.11所示进行设置。
在图1.3.11中,因为除了FLASH我们没有添加其他与三态桥连接在一起的元件,所以没有可共用的信号可选,如果有的话可在这里设置。
同时可以看到,数据总线始终是共用的,片选信号始终是独立的。
图1.3.8
图1.3.9
图1.3.10
图1.3.11
3)手动连接FLASH与三态桥
从图1.3.12可以看到,刚添加好的三态桥和FLASH并未连接,需要我们手动连接。
如图1.3.13所示,把鼠标移到左边的连接处会出现一个空心的圆圈,单击鼠标后会变成实心的圆圈,表示这两个节点已经连接上,如果想取消某个连接用同样的方法,鼠标移到圆圈处单击使实心的圆圈变成空心的即可断开。
连接好后如图1.3.14所示,不过连接好后信息栏有可能出现更多的错误,读者不必担心,自动分配一下基地址错误即可消除,如果还有错误的话那就请你仔细检查你的操作过程。
图1.3.12
图1.3.13
图1.3.14
4)设置复位地址和异常向量地址
添加好所有元件后别忘了设置复位地址,这时我们可以把复位地址分配在FLASH,异常向量地址分配在SDRAM(图1.3.15)。
与第1节的实验比较一下,可以看到,原先的片内ROM和片内RAM分别被较大容量的外部FLASH和SDRAM代替。
由此构成一个比较完整的小微机系统。
图1.3.15
5)在QuartusII中组合所有模块并添加引脚编译
与之前的实验相同,需要提醒读者注意的是FLASH的数据总线与SDRAM一样也是双向的端口,所以要使用bidir而不使用output。
6)在NiosIIIDE中编写程序文件
编写如下所示的程序文件,系统库属性使用默认的设置。
不进行程序优化,因为本实验使用的是SDRAM,空间大小已经足够。
与之前一样,同样可以进行调试运行。
/********************版权声明*****************************
*新疆大学信息科学与工程学院创新实验室
*文件名:
flowled.c
*创建者:
吴占敏
*创建日期:
2010.4.24
*校验者:
*校验日期:
*版本号:
V1.0
*功能描述:
通过PIO直接控制8个LED产生流水灯效果
********************************************************/
#include"system.h"
#include"altera_avalon_pio_regs.h"
#include"alt_types.h"
/*流水灯花样,低电平点亮,注意调用时候用了取反操作*/
constalt_u32LED_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,0x18,0x18,0x24,0x42,0x81,//两个靠拢后分开
0x81,0xC3,0xE7,0xFF,0xFF,0xE7,0xC3,0x81//从两边叠加后递减
};
/**********************************************************
*名称:
main()
*功能:
控制LED流水显示。
***********************************************************/
intmain(void)
{
alt_u8i;
alt_u32j;
while
(1)
{
for(i=0;i<42;i++)
{/*流水灯花样显示*/
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,~LED_TBL[i]);
j=0;
while(j<100000)//延时
j++;
}
}
return0;
}
7)FLASH烧写
在前一节的实验中,我们无法把程序保存在SDRAM内,因为SDRAM掉电后数据即丢失,因此那样的一个系统没有实际的应用意义。
而第1节实验中,尽管我们可以把程序保存在片内ROM,但由于其大小又限制了进一步开发,也没有太大的应用空间。
添加了FLASH就解决了这两个问题。
选择菜单栏Tools→FlashProgrammer...(图1.3.16)即弹出图1.3.17所示的界面。
图1.3.17所示的是没有添加任何FlashProgrammer时的情形,添加后如图1.3.18所示。
读者应检查默认的所要编程的是否是自己想要下载的工程,因为打开后默许的是前一次下载时的工程。
设计者也可以把FPGA配置文件和其他的文件(如一幅图片数据)下载到FLASH使用。
如果是对EPCS编程,则要求把配置文件也下载到EPCS。
设置好后点Program即可,如若出现图1.3.19所示信息则表明编程成功,按一下复位键后系统将运行。
图1.3.16
图1.3.17
图1.3.18
本节易错提示:
1、FLASH控制器设置的与自己使用的板子不一致;
2、FLASH控制器的数据端口没使用双向端口bidir而使用output,这一点读者务必特别注意;
3、建立NiosII工程时使用了前一次*.ptf文件,而不是刚刚建立的工程文件;
4、在线调试运行时一定要把复位端接上(低电平有效,调试运行时应该是高电平),否则会出现veryfyfailed的错误;
5、分配管脚时与核心板实际连线不一致将直接导致FLASH编程失败;
6、FLASH编程后必需按一下复位系统才会重新运行。
图1.3.19
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FLASH 控制器 添加