基于FPGA(cyclone IV)的NOR FLASH的应用

1.器件挂载到QSYS的三态驱动器上;
2. 查阅datasheet,配置时序;
3.编译,参考“黑金”或者“微雪”的例程…

实际工程使用S29GL512P,EPCS选用EPCS64,IS61WV51216该系统搭载十分豪华配置…
NOR FLASH 容量 512Mbits,64MB,
EPCS 64Mbit,8MB,
不用sdram,避免时钟相位问题

在NIOS II Eclipse中,第一行中include “sys/alt_flash.h”,包含着FLASH库函数
,nor flash 中的地址宽度为0x3fff_ffff(该参数位QSYS中对齐数据位用),实际的25根地址线,寻址范围位2^25 =512*63335,所以共512个Block,1个region,每个Block为0x10000,所以FLASH_OFFSET 值不宜乱取。由于flash本身的性质,如果要擦除位于某一个block中的某个地址(哪怕仅仅是一个),整个block的内容都会被擦除(全1)。

下面是的基本flash操作函数:
alt_flash_open_dev(),
alt_write_flash(),
alt_read_flash(),
alt_flash_close_dev(),
alt_get_flash_info(),
alt_erase_flash_block(),
alt_write_flash_block(),

 1 #include "sys/alt_flash.h"2 #include <stdio.h>3 #include <stdlib.h>4 #include <unistd.h>5 6 #define BUF_SIZE 10247 #define FLASH_OFFSET 0x50000//偏移地址,实际为第六个Block8 9 int main()
10 {
11     printf("Fuck Nios II!\n");
12
13     int i;
14     alt_flash_fd* fd;
15     flash_region* regions;
16     int number_of_regions;
17     int ret_code = 0x0;
18     unsigned char source[BUF_SIZE];
19     unsigned char dest[BUF_SIZE];
20
21     unsigned char block_dest[0x2000];
22
23     for(i=0;i<100;i++){
24         source[i] = i;
25     }
26     fd = alt_flash_open_dev("/dev/cfi_flash");
27     printf("flash opening...\n");    //Debug
28     //fd = alt_flash_open_dev(“/dev/epcs_flash”);    //EPCSX
29     if (fd){
30         printf("flash opened\n");    //Debug
31         printf("fd is %d\n",fd);    //Debug
32         ret_code = alt_get_flash_info(fd, &regions, &number_of_regions);
33         for(i=0;i<number_of_regions;i++){
34             printf("Start 0x%8x End 0x%8x Number of Blocks %3d Block Size 0x%8x \n",
35                     (regions+i)->offset,
36                     (regions+i)->region_size+(regions+i)->offset,
37                     (regions+i)->number_of_blocks,
38                     (regions+i)->block_size);
39         }
40         alt_erase_flash_block(fd, FLASH_OFFSET, BUF_SIZE);
41
42 /*        //
43         /        the entire block is erased to 1            //
44         //
45         ret_code = alt_read_flash(fd,0x4000,block_dest,0x2000);///
46         if(ret_code != 0){                                        //
47             printf("Can't read flash device\n");                //
48             exit(-1);                                            //
49         }                                                        //
50         else{                                                    //
51             printf("Read Flash Device Successfully.\n");        //
52         }                                                        //
53         //    Print the destination data                            //
54         for(i=0;i<0x2000;i++){                                    //
55             printf("OFFSET_Address %4d  is  %d\n",i,block_dest[i]);
56         }                                                        //
57         //*/
58
59         ret_code = alt_read_flash(fd,FLASH_OFFSET,dest,BUF_SIZE);
60         if(ret_code != 0){
61             printf("Can't read flash device\n");
62             exit(-1);
63         }
64         else{
65             printf("Read Flash Device Successfully.\n");
66         }
67         //    Print the destination data
68         for(i=0;i<100;i++){
69             printf("OFFSET_Address %2d  is  %d\n",i,dest[i]);
70         }
71
72         ret_code = alt_write_flash(fd,FLASH_OFFSET,source,BUF_SIZE);
73         if(ret_code != 0){
74             printf("Can't write flash device\n");
75             exit(-1);
76         }
77         else{
78             printf("Write Flash Device Successfully.\n");
79         }
80
81         ret_code = alt_read_flash(fd,FLASH_OFFSET,dest,BUF_SIZE);
82         if(ret_code != 0){
83             printf("Can't read flash device\n");
84             exit(-1);
85         }
86         else{
87             printf("Read Flash Device Successfully.\n");
88         }
89
90         for(i=0;i<100;i++){
91             printf("OFFSET_Address %2d  is  %d\n",i,dest[i]);
92         }
93         }
94     alt_flash_close_dev(fd);
95     printf("flash closed \n");
96 }

基于FPGA(cyclone IV)的NOR FLASH的应用相关推荐

  1. 基于FPGA的PCIe接口实现(具体讲解了数据流向)

    转载自:https://www.cnblogs.com/chengqi521/p/7094544.html 时间:2014-12-09 来源:西安电子科技大学电子工程学院 作者:姜 宁,陈建春,王 沛 ...

  2. 基于FPGA实现的流水灯实验

    版权声明:如需转载,请注明出处 https://blog.csdn.net/chengfengwenalan/article/details/79606351 基于FPGA实现的流水灯实验 一.开发环 ...

  3. 基于FPGA实现的流水灯项目

    基于FPGA实现的流水灯实验 一.开发环境 软件环境:Quartus Prime 17.1 ,notepad++,gvim,modelsim-SE,TimeGen3 硬件环境:DE2-115(Inte ...

  4. 基于FPGA的多功能数字时钟设计报告

    作品基于intel Cyclone IV E EP4CE10F17C8 FPGA板卡,主要开发环境为Quartus Ⅱ,编程并实现了多功能温湿度电子钟.本作品在实现显示实时时间的基础上,设计并完成了设 ...

  5. FPGA黑金开发板 CYCLONE IV核心板全新上市!!!!

    FPGA:                          EP4CE15F17C8N SDRAM:                       256Mbit    (16M*16bit) SRA ...

  6. 基于FPGA的SPI FLASH控制器设计

    1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...

  7. cyclone IV 系列轻量级FPGA 芯片ep4ce6e22c8 引脚分布图

    目录 简介 EP4CE6E22C8 IO分布 BANK IO分布 补充 简介 EP4CE6E22C8作为可以手动焊接的一款轻量级cyclone IV系列芯片,百度了一大圈都只有一个用户手册,找不到引脚 ...

  8. 基于FPGA:肤色识别算法实现(OV5640摄像头+Cyclone芯片)含工程源码

    目录 前言: 一.进入正文: 二.Verilog代码实现: 前言: 肤色识别算法的Verilog代码基于FPGA 的彩色图片转灰度实现的.本文参考硅农图像处理教学文章.一个良心公众号,有很多开源技术含 ...

  9. 基于FPGA 的8b10b编解码电路前端电路设计

    基于FPGA 的8b10b编解码电路前端电路设计 摘 要 本设计是采用EDA技术设计的一种8B /10B 编解码电路,实现了在高速的串行数据传输中的直流平衡.该编解码电路设计大体上可以由五个模块构成, ...

  10. 基于FPGA视频图像处理系统设计

    摘   要 本报告给出一个基于FPGA+两片DDR2组成的核心板.带有4路视频输入和VGA接口的开发板进行的视频图像采集和处理系统的设计.使用TW2867进行视频输入信号的编码,存储到DDR2中,通过 ...

最新文章

  1. WINCE源代码配置文件
  2. android 中 系统日期时间的获取
  3. 二维数组转稀疏数组,写入文件后再读取文件,将内容转回二维数组
  4. Vue (二) --- Vue对象提供的属性功能
  5. 奇淫巧技-Flutter调用C#
  6. 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc
  7. 服务器 .err文件,IIS 关闭HTTPERR(IIS日志)的方法
  8. 互联网日报 | 天猫双11今日启动预售;同程艺龙成立酒旅事业群;恒大汽车正式启动科创板上市辅导...
  9. 首批吃螃蟹!35 所高校获批开设「人工智能」本科专业
  10. Java Web-网页基础-HTML-CSS
  11. java中关于重写的说法_Java中有关“重载”和“重写”的说法正确的是()
  12. bootstrap设计登录页面_前端小白如何在10分钟内打造一个爆款Web响应式登录界面?...
  13. Java 8 方法引用 (Method Reference)快速介绍与示例
  14. tcpdump抓两个网卡的包_Linux下网络抓包命令tcpdump详解(在wireshark中看包)
  15. LINUX 软件安装。
  16. Python unittest基本框架组成(1)
  17. 增值税相关软件基本常识
  18. AliOS-Things开发入门
  19. 想做AR/VR相关创新项目,有什么好方向?要怎么做?
  20. Windows配置万德(Wind)量化接口

热门文章

  1. Python爬取熊猫办公音频素材数据
  2. 怎么把手机屏幕投射镜像到电脑上面?
  3. CH340串口驱动的官网下载链接地址(包含各大操作系统平台)
  4. 借贷行业,还有明天吗?
  5. 使用okhttp下载文件 、传统方式下载文件,简介okhttp使用(Java)
  6. 怎么把ide改成ahci_不重装系统如何开启ahci模式_不重装系统ahci改ide模式的方法...
  7. RC正弦波振荡电路Ltspice仿真
  8. 初识ARM嵌入式系统
  9. EMP电磁脉冲射频发射器制作教程
  10. cfiledialog对话框大小_CFileDialog类 通用对话框