【MAX10评测】(四)配置

一般FPGA属于易失性芯片,类似于RAM,芯片上的数据和程序在掉电后不会保留,上电后程序需要从外部非易失性芯片加载,如EPCS系列芯片,也可以通过FPGA上JTAG接口或者串行接口写入。

▲而MAX 10系列FPGA的配置则很灵活,因其芯片内嵌配置闪存模块CFM(Configuration Flash Memory),可用于存放程序映象。如上图所示。MAX 10系列FPGA的配置过程在内部进行,首先通过JTAG将配置数据写入到CFM中,然后内部配置过程自动从CFM加载配置数据至MAX 10的配置内存CRAM(Configuration RAM)。

深入CFM内部,可分为3个扇区:CFM0,CFM1和CFM2。如下表,MAX 10内部配置可分为5种模式,分别对应对2个扇区的不同使用情况:

上表中内部配置共有5种模式:

1)  Dual Compressed Image:双压缩映像

2)  Single Uncompressed Image:单未压缩映像

3)  Single Uncompressed Image with Memory Initialization:单未压缩映像带内存初始化数据

4)  Single Compressed Image with Memory Initialization:单压缩映像带内存初始化数据

5)  Single Compressed Image:单压缩映像

其中第1,2,5种模式,3个CFM扇区都用于存放映像;而第3,4种模式,未使用的扇区,主要是CFM1和CFM2,可配置成用户闪存模块UFM(User Flash Memory)。

▼在QuartusII 14.1中,可设置内部配置的模式,以生成对应的映像文件:

l  打开Device and Pin Options à Configuration;

l  Configuration scheme选择Internal Configuration;

l  Configuration mode中选择5种模式中的1种;

可以发现,内部配置模式有一种是Dual Compressed Image,即在CFM中可以存放两个压缩映像,也就是说MAX 10 FPGA支持双启动模式Dual Boot。

下面通过实例演示下MAX 10 FPGA的配置:

----------------------------------- 单映像配置 -----------------------------------

QuartusII 14.1默认配置就是Single Uncompressed Image(912Kbits UFM),因此无需另外设置内部配置模式。

在LED_FLASH工程的基础上修改了下,将LED的功能由闪烁效果改成呼吸灯的效果:▼新建呼吸灯版本,不同的版本可以在源代码相同的情况下选择不同的工程设置。

▼修改顶层源码:例化了呼吸灯模块BreathLeds;加粗部分代码,根据宏BREATH_EN选择LED的输出

 1 module LED_Flash_all(
 2     input clk,
 3     output LED1,
 4     output LED2,
 5     output LED3,
 6     output LED4,
 7     output LED5
 8     );
 9
10 …… (此处省略N行代码)
11
12     // Breath Led
13     wire bled;
14     BreathLeds breathleds_u(
15       .clk(clk),
16       .rst(1‘b0),
17
18       .led(bled)
19        );
20
21 `ifdef BREATH_EN
22     assign LED1 = bled;
23     assign LED2 = bled;
24     assign LED3 = bled;
25     assign LED4 = bled;
26     assign LED5 = bled;
27 `else
28     assign LED1 = dec_cntr ;
29     assign LED2 = dec_cntr ;
30     assign LED3 = dec_cntr ;
31     assign LED4 = dec_cntr ;
32     assign LED5 = dec_cntr ;
33 `endif
34
35 endmodule

▼只在LED_BREATH版本中加入宏:Settings à Compiler Settings à Verilog HDL Input设置中,添加Verilog HDL macro:BREATH_EN。这种方法的好处就是无需在Verilog HDL源码中定义宏

工程编译后默认只生成.sof文件,内部配置所需的.pof文件手动从.sof文件转换得到

▼打开File --> Convert Programming Files…

▼sof --> pof 转换

1. Mode 选择为 Internal Configuration

2.设置Options/Boot info…

3.输入pof文件名

4.勾选Create Memory Map File项,.map包含CFM和UFM地址,其中含有通过Option/Boot Info选项而进行的ICB设置。

5.选择sof文件

6.点击Generate生成pof文件

▼按以上步骤生成pof文件完成

▼通过Programmer下载pof,在Program/Configure勾选CFM扇区,由于当前内部配置模式为Single Uncompressed Image,三个扇区都需要使用

▼点击Start开始下载

▼下载完成

▼演示视频

----------------------------------- 双映像配置 -----------------------------------

工程继续使用LED_FLASH,上篇中新建了LED_BREATH版本,工程中共有两个版本:LED_Flash和LED_BREATH▼

▼制作双配置映像,需要相应地在设置中奖内部配置模式设置Dual Compressed Image

▼然后开始编译,但是出现了错误Error (169130): Configuration mode specified as Remote but remote update block is not found in design,是缺少了什么模块

查阅相关文档,原来是缺少这货:Altera Dual Boot IP,必须在工程中例化这个IP才能实现双映像配置。由于此IP接口是Avalon-MM的,需要先在Qsys中包装一下▼

▼在IP Catalog中搜索Dual Boot IP,然后点击添加

▼只需配置此IP的时钟,此例中为50MHz

▼将clk和reset连接后,一个基于Dual Boot IP的简单Qsys系统完成了

▼点击Generate HDL…,在弹出对话框中设置后,点击Generate

▼系统生成后,在顶层Verilog代码中例化生成的Qsys系统

1 dualboot dualboot_u(
2     .clk_clk(clk),       //   clk.clk
3     .reset_reset_n(1‘b0)  // reset.reset_n
4     );   

▼成功编译后,可在层次结构中看到dualboot系统模块

▼切换另一个版本,记得内部配置模式也设置成Dual Compressed Image,不同的版本其设置是独立的,然后重新编译;两个版本分别生成两个sof文件:LED_Flash.sof和LED_BREATH.sof。

▼下一步是将两个sof文件装换成单个pof文件;与制作单映像配置方法相同,通过convert programming files生成pof,但有些不同,在Input files to convert需要添加两个sof文件

▼打开Programmer,添加LED_DualBoot.pof文件,在Program/Configure中勾选CFM,点击Start开始下载

▼下载成功

▼在双压缩映像模式中,可以使用BOOT_SEL 管脚来选择配置映像,在MAX 10评估套件中对应拨码开关DIP的第6位:ON状态选择第一个映像;OFF状态选择第二个映像

▼演示视频:上电默认加载第一个映像:呼吸灯程序;切换BOOT_SEL管脚状态后,加载了第二个映像:闪烁灯程序

时间: 2024-10-23 22:57:27

【MAX10评测】(四)配置的相关文章

Redis(四)-配置

Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONFIG 命令查看或设置配置项. 语法 Redis CONFIG 命令格式如下: redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME 实例 redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice" 使用 *

【MAX10评测】(五)功耗实测

MAX 10系列FPGA的电源供电配置可分为两类:单电源供电和双电源供电 单电源供电器件 MAX 10单电源供电器件仅需要使用一个3.0 V或3.3 V外部电源,作为VCC_ONE(内核电压)和VCCA(PLL和ADC电压)电源管脚的输入,内核逻辑操作所需的1.2 V是由内部电压稳压器转换得到. 双电源供电器件 MAX 10双电源供电器件需要1.2 V和2.5 V以进行器件内核逻辑和外围操作,这样就无需使用FPGA内部的电压稳压器了. 这次评测的MAX 10评估套件选用的是什么类型的器件呢?其实

【MAX10评测】(三)参考设计

此篇开始正式对套件进行评测,先拿官方提供的参考设计练练手,在上一篇博文中给出了参考设计链接:https://cloud.altera.com/devstore/board/max-10-fpga-evaluation-kit/ 在此页面中,有如下几个设计▼ 适用于QuartusII 14.1版本的设计如下: l  ADC /LCD Controller Design Example  :ADC/LCD控制器设计 l  Custom Instruction for NIOS II Processo

【MAX10评测】(二)评测环境

开篇对MAX10 FPGA评估套件做了下晒单,此篇开始正式对套件进行评测.首先是评测环境的搭建: 1.  硬件平台: l  计算机: Thinkpad T430 处理器:Intel Core i5-3320M 安装内存:8.00GB 系统:Windows 7 64位 l  MAX10 FPGA评估套件: 10M08核心板 USB连接线 USB Blaster下载线 ▲如上图所示,按照说明书连接10M08核心板.第一步,使用USB连接线连接核心板和计算机,此处USB接口作为供电接口,周边没有发现相

springboot(四).配置FastJson自定义消息转化器

配置FastJson自定义消息转化器 一.fastJson简介 fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件.它是目前json解析最快的开源组件没有之一!在这之前jaskJson是命名为快速操作json的工具,而当阿里巴巴的fastJson诞生后jaskjson就消声匿迹了,不过目前很多项目还在使用. 今天,我们使用fastJson来配置消息转换器,过滤并修改返回的消息 二.依赖导入 <!--fastjson依赖添加--> &l

易宝典文章——玩转Office 365中的Exchange Online服务 之二十四 配置垃圾邮件筛选器反垃圾邮件

如果希望实现基于发件人邮件地址,或者需要拒绝某个域的邮件,可以通过Exchange Online提供的垃圾邮件筛选器策略来解决.垃圾邮件筛选器策略除了能够实现上述的黑名单筛选外,还支持白名单筛选,基于国别来进行筛选,比如阻止某岛国语言的邮件,从某小人国发来的邮件等.此外,垃圾邮件筛选器策略还定义做针对不同级别的垃圾邮件如何进行处理,是标注,还是放入垃圾箱,或者是进行隔离等.一.了解默认的垃圾邮件筛选器策略在EAC中,导航到"保护",定位到"垃圾邮件筛选器"选项卡,选

hadoop(四):配置参数

hadoop参数配置,主要是配置 core-site.xml,hdfs-site.xml,mapred-site.xml 三个配置文件,core-site.xml是全局配置,hdfs-site.xml和mapred-site.xml分别是hdfs和mapred的局部配置,core-default.xml,hdfs-default.xml,mapred-default.xml 是集群的默认配置,HDP2.4 安装包中 hadoop 版本为2.7,分别可从下面的地址获取到默认的参数说明: core-

XenApp / XenDesktop 7.6 初体验四 配置Win 8 模板和Personal vDisk

前面豆子尝试了基于windows 2012 R2创建的计算机组和交付组,这里豆子再试试看 Windows 8的桌面发布.基本流程和前面大同小异. 首先创建一个Master Image, 并安装VDA 放入光盘,可以看见因为操作系统的变化,Windows 8,我只能安装 VDA for Windows Desktop OS 和 Citrix Studio 创建 Master Image 不需要显卡高级功能 安装Receiver 输入Delievery Controller Personal vDi

O365结合ADFS限制用户登录地址 (四) - 配置Claim Rules

到目前为止,我们已经完成了ADFS的部署工作,在之前的测试里也可以看到我们在登录的时候已经是重定向到本地ADFS了,并且也可以看到一些审核的log,接下来就是我们的重点工作,如何通过Claim Rules来实现我们想要限定哪些用户在哪些区域可以登录的行为 想要实现我们之前说的场景,在ADFS里主要是通过claim rules,他可以支持各种各样的场景,微软也有比较详细的文档和demo来告诉你这个东西怎么用,在使用的时候我们可以先查看一下官方文档,来看是不是可以支持我们的想法,之后再把对应的rul