6629|4

664

帖子

104

TA的资源

纯净的硅(中级)

楼主
 

【国产FPGA高云GW1N-4系列开发板测评】——5、内部Flash和外部Flash程序固化测试 [复制链接]

  本帖最后由 gs001588 于 2021-12-20 00:47 编辑

   【国产FPGA高云GW1N-4系列开发板测评】——5、内部Flash和外部Flash程序固化测试

 

   FPGA在功能调试过程中是把程序下载到SRAM中,断电后丢失。

   要实现断电重新上电后程序自动运行,需要将程序固化到Flash中。

   开发板使用的GW1N-4B系列FPGA,可通过内部Flash加载程序,也可通过外部Flash加载程序,通过模式选择位MODE0、MODE1来区分。外部Flash开发板上默认不焊,自己已采购并焊接,型号为华邦的W25Q64JVSIQ。在之前的开箱贴中有说过(【国产FPGA高云GW1N-4系列开发板测评】——2、补个开箱贴开发板与购买的Flash https://bbs.eeworld.com.cn/thread-1189058-1-1.html

 

   在用户手册“DK_MINI_GW1N-LV4LQ144C6I5_V1.1.pdf”中有相关内部介绍。如下图所示:

 

   在开发板实物,MODE0、MODE1位置,及“0”、“1”设置,如下图所示。

 

   开发板背面有管脚标示如下图,分别为1、3脚。

 

    对照原理图“DK_MINI_GW1N-LV4LQ144C6I5_V1.1_Sch.pdf”中相关部分如下图,跳线帽短接1、2脚,相当于MODE1接3.3V,逻辑高电平“1”;跳线帽短接2、3脚,逻辑低电平“0”。

 

 

    为测试如何程序固化,仍然使用LED闪灯来实现,代码如下。代码比较简单,时钟分频、LED状态翻转。

--*******************************************************************************
--*-------------------------- file ---------------                                      
--* name:  hello_led.vhd	
--* ver : A
--* date:2021-12-9
--*------------------------------------------------
--*******************************************************************************

---------- LIB  ----------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;

----------ENTITY -------------------------------------------------------------
ENTITY hello_led IS
PORT (						                                                        
-------------------------------------------------------------------------------  
--系统全局时钟 CLK
-------------------------------------------------------------------------------           
    CLK_50M:  	IN  STD_LOGIC;	--50MHz系统时钟
                       
-------------------------------------------------------------------------------  
--系统全局复位 RESET
------------------------------------------------------------------------------- 
    NRESET:   IN  STD_LOGIC;
				
-------------------------------------------------------------------------------  
--系统状态指示灯
------------------------------------------------------------------------------- 
    LED:			OUT  STD_LOGIC_VECTOR(4 DOWNTO 1));
-------------------------------------------------------------------------------

END hello_led;

-----------ARCHITECTURE-------------------------------------------------------

ARCHITECTURE MY_CODE OF hello_led IS
	
-----------------------------------------------------------------------
    SIGNAL	 COUNTER:       integer range 0 to 50000000;
    SIGNAL	 LED_Reg:       STD_LOGIC_VECTOR(3 downto 0);

--**********************************************************************************
--*****   
--**********************************************************************************
BEGIN

LED <=  LED_Reg;

PROCESS(NRESET,CLK_50M)
BEGIN
	IF (NRESET = '0') THEN
        COUNTER <= 0;
	ELSIF (RISING_EDGE(CLK_50M)) THEN
        IF (COUNTER < 50000000-1) THEN
            COUNTER <= COUNTER + 1;
        ELSE
            COUNTER <= 0;
        END IF;
	END IF;		
END PROCESS;

PROCESS(NRESET,CLK_50M)
BEGIN
	IF (NRESET = '0') THEN
        LED_Reg <= "0101";
	ELSIF (RISING_EDGE(CLK_50M)) THEN
        IF (COUNTER = 25000000-1) OR (COUNTER = 50000000-1)THEN
            LED_Reg <= NOT LED_Reg;
        END IF;
	END IF;		
END PROCESS;

END MY_CODE;

 

    程序工程中使用了4个LED灯,LED(1)到LED(4)分别对应开发板实物的D7、D8、D9、D20,开发板上D7、D9在左边,D8、D20在右边。对照原理图如下图,可以知到LED灯是低电平“0”点亮。

 

   为区别内部Flash程序和外部Flash程序效果,程序代码稍做区分。

   给内部Flash烧写程序的代码第67行,LED初始状态“0101”,表示复位时右边的D8、D20点亮,左边的D7、D9灭状态。每秒左边、右边的两个灯分别交替亮灭一次。

 

   给外部Flash烧程序的代码第67行,LED初始状态“1100”,表示复位时上边的D7、D8点亮,下边的D9、D20灭状态。每秒上边、下边的两个灯分别交替亮灭一次。

 

   烧写内部Flash,首先将MODE0、MODE1分别设置为“0”、“0”,使用工程“hello_led1”生成的目标文件“hello_led.fs”。双击“Operation”列的下面的方式选项,弹出的“Device configuration”窗口,访问模式选择内嵌Flash方式,操作方式选择内嵌Flash擦除、编程、验证(也可以选择内嵌Flash擦除、编程,不需要验证,这里选验证只是个人习惯,不选验证一般也不会出问题)。设置完毕,保存设置,关闭器件配置窗口。最后先“程序/配置”按钮开始向内部Flash烧录程序。

 

   烧录过程中擦除和编程都很快,不足5秒。

 

   在最后的验证阶段用了三十多秒。

 

   烧录完毕,在输出窗口有相关信息提示,具体内容无需比较明确,无需过多解释。值得注意的是最后一条,用时40.82秒,主要花在了验证阶段。

   烧录完成,按开发板左下角的复位按键SW5(目前实际为重配置功能),可看到左边、右边的两个灯分别每秒交替亮灭一次,与预期效果一致。

   至此,内部Flash程序固化功能实现。

 

   烧写外部Flash,将MODE0、MODE1分别设置为“1”、“1”,使用工程“hello_led2”生成的目标文件“hello_led.fs”。双击“Operation”列的下面的方式选项,弹出的“Device configuration”窗口,访问模式选择外部Flash方式,操作方式选择外部Flash擦除、编程、验证通过GAO-Bridge(与上面相同,选择验证项,纯性个人习惯)。

 

   整个烧录过程用时9.52秒。单纯的擦除、编程两个步骤,内部Flash要快一些;加上验证后,外部Flash要快些。

   烧录完成,将MODE0、MODE1分别设置为“0”、“1”,按开发板左下角的复位按键SW5(目前实际为重配置功能),可看到上边、下边的两个灯分别每秒交替亮灭一次,与预期效果一致。

   至此,外部部Flash程序固化功能实现。

 

   从按复位按键SW5到FPGA正式执行程序,使用内部Flash要比外部Flash用时短一些,具体原因未作研究。

 

DK_MINI_GW1N-LV4LQ144C6I5_V1.1_Sch.pdf (122.28 KB, 下载次数: 12)


DK_MINI_GW1N-LV4LQ144C6I5_V1.1.pdf (939.7 KB, 下载次数: 6)

 

最新回复

测试的很详细。楼主还可以使用一种自动模式切换启动方式。这个可以自己研究一下   详情 回复 发表于 2021-12-20 08:34
点赞 关注
 
 

回复
举报

664

帖子

104

TA的资源

纯净的硅(中级)

沙发
 

在外部Flash器件选择列表中没找到 W25Q64JVSIQ,需要选 W25Q64BV

 
 
 

回复

6587

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

整的不错

用内部Flash要比外部Flash用时短一些这比较正常,

 

华邦的W25Q64JVSIQ是64Mb FLASH 存储器

好像价格下来了,几元一片

 

 
 
 

回复

270

帖子

0

TA的资源

一粒金砂(高级)

4
 

学习一下

 
 
 

回复

1412

帖子

3

TA的资源

版主

5
 

测试的很详细。楼主还可以使用一种自动模式切换启动方式。这个可以自己研究一下

个人签名

没有什么不可以,我就是我,不一样的烟火! 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
四大品牌无线路由器产品推荐

来源:中关村在线 无线市场上最为人熟知的绝对是TP-Link、D-Link、网件、 Linksys四大品牌。如果您说买东西光看品牌是傻子,我 ...

芯片封装概述

芯片封装 一、DIP双列直插式封装  DIP(DualIn-line Package)是指采用双列直插形式封装的集成电路芯片,绝大多数中小规模 ...

IC设计工程师的高手进阶之路

随着中国IC设计产业渐入佳境,越来越多的工程师加入到这个新兴产业中。从一个初学者成长到主持大型设计的IC设计专家,这是每个IC ...

Helper2416-13——裸机第五弹——YL-boot——裸奔者的福音

YL-boot——裸奔者的福音 参与Helper2416开发板助学计划心得 闭关几天,终于初步完成了这YL-boot了。没有J-TAG不能单步调试还 ...

#8月改装#暴力改装普源DP832电源

本帖最后由 wangjiafu1985 于 2015-8-27 09:04 编辑 暴力改装普源DP832电源  免责声明:本贴发表之前经SOSO姐向普源提出授 ...

2020年1月份版主工作奖励

2020年1月获得版主奖励的名单如下: 用户名 发帖 回帖 加精 评分次数 删除主题/ ...

视频动画:直观的理解电磁波辐射

attach://480168.qlv480168 视频动画:直观的理解电磁波辐射 480168

Teensy 4.1 开发板

480436 Teensy 4.1,相比Teensy 4.0 有了不少改进。 引脚图 连接以太网 反面可以扩展存储器,左边是p ...

FPGA入门必备《Advanced FPGA Design》

国外FPGA设计经典教材《Advanced FPGA Design:Architecture, Implementation, and Optimization》,适合入门初学者学习。 ...

请教一个电源变压器后面电路问题

请教一个电源变压器后面电路问题 二极管和电阻前后调换一下位置,有什么影响? 862533

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表