【LED灯屏控制器】AG10K 烧录程序(2)

一、预装软件介绍

对于我的电脑,需要预装:

  • Quartus II 13.0 版本(64位)
    • 安装参考《Quartus II 13.0安装指导书.pdf》
  • Cyclone IV 器件库(AG10KSDE176 对标 EP4CE10F17C8【属于Cyclone IV 系列】)
    • 安装参考《Quartus II 13.0安装指导书.pdf》
  • Supra-2020.07.b0-35f3f297-win64-all
    • 安装参考下文

二、Supra安装

安装包见链接:http://pan.baidu.com/s/1eQxc6XG 提取密码—q59e

在这里插入图片描述
选择适合自己系统的版本进行解压即可,这个软件是免安装的!

三、软件开发流程(Compatible 模式)

Compatible 模式是Supra中的一个可选模式,可选模式一共有三个,分别是:COmpatible、Synplicity、Native。
在这里插入图片描述

3.1、使用 Qurtus II 13.0 创建工程

参考小梅哥《02_【学习教材】FPGA系统设计与验证实战指南_V2.6.pdf》的2.2.1和2.2.2小节。

Quartus II 13.0 基于 Cyclone IV EP4CE10F17 完成原始设计。

注意:创建完工程并设计好源文件后,需要进行一次全编译!特别提醒,先不要进行管脚分配

这里我为工程名字取名为led,工程目录结构如下图所示。
在这里插入图片描述

我的rtl设计文件led.v内容如下:

功能:持续点亮LED,该LED低电平点亮!

module led(
    output OUT  
);

assign OUT = 1'b0; 
	 
endmodule

3.2、管脚分配

新建一个文本格式的管脚分配文件,命名为<design>.ve(例如:pin.ve),并将其存放在与Quartus工程同级的目录下,如下图所示。

在这里插入图片描述

编辑 ve 文件加入 FPGA 的 IO 管脚绑定,管脚名称参考MANUAL_AG10KSDE176.pdf中的管脚说明表格ve 文件格式如下(管脚设计名称+空格+封装管脚名称):

//网表参考格式如下

rst PIN_89
clk PIN_23
led[0] PIN_157
led[1] PIN_158
……
my_SDRAM_CS SDRAM_CS
my_SDRAM_CLK SDRAM_CLK
my_SDRAM_A0 SDRAM_A0
……

我的pin.ve文件内容如下:

OUT  PIN_157

对应原理图,为图中的第一个LED,LED原理图如下图所示:
在这里插入图片描述

Supra 会在后面的编译中按照 ve 文件分配到 176 封装的 AG10K 具体管脚。 如原 Quartus II 13.0 工程中有管脚分配信息,需先删除再执行 TCL

3.3、使用 Supra 转换(Migrate)工程

  • 1、首先新建一名为led_supra的目录,作为 AG10K 的项目目录,该目录与Quartus工程目录同级!层级如下图所示:

在这里插入图片描述

  • 2、接着打开 Supra,新建工程(File->Project->New Project),设置工程目录和工程名称。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 3、选择菜单 ”Tools -> Migrate”,或者点击下图所示按钮,进行工程转换!

在这里插入图片描述

  • 4、在 Migrate 界面依次填入信息为:

    • 目标运行目录<run_dir>AGM 工程目录)
    • 原始项目目录<from_dir>(需要精确到.qpf所在文件夹)
    • 选择设计名称(应自动<from_dir>中找到,请点选)
    • 选择 AGM 器件型号:AG10KSDE176
    • 非管脚兼容器件需要添加 VE 文件,即3.2节创建的pin.ve文件
    • (了解)非兼容 IP,通过 Supra 产生 IP 文件后再添加
    • Backward Compatible 选项,如果使用老版本 Quartus II(无 Cyclone IV device)可以选上

填入信息参考,如下图所示:

注意,若窗口过小会隐藏掉一些信息,这时滚轮下拨即可!

在这里插入图片描述

  • 5、接着点击“Next”按钮,界面如下图所示:
  • 若未创建 AGM 的工程目录,可根据输入目录的名称自动产生,选择“Yes”后 SupraAGM 的工程目录中自动生成所需文件。
    正确运行后会生成 af_prepare.tcl 等文件。

在这里插入图片描述
log 信息如下:

af.exe -B --setup --mode QUARTUS --design led --device AG10KSDE176 --migrate E:/AlterProjects/led/prj --ve E:/AlterProjects/pin.ve -X "set DEVICE_FAMILY 1"

Total IO  : 432
Total Pin : 187/12
Top array is built.
Loading architect libraries...
## CPU time: 0:0:0, REAL time: 0:0:0
## Memory Usage: 43MB (43MB)
Warn: Can not find ASF file ./led.asf, create a empty one.
Info: Can not find ASF file ./led.pre.asf, create a empty one.
Info: Can not find ASF file ./led.post.asf, create a empty one.

Setup done...
Next, compile with quartus using one of following 2 approaches:
 1) Command line base, run 'quartus_sh -t af_quartus.tcl'
 2) GUI base, start quartus GUI, open project led,
    select Tools->Tcl Scripts..., load af_quartus.tcl and run
Then, run 'af_run' to generate led bit-stream files

Total 0 fatals, 0 errors, 1 warnings, 2 infos.

Setup migration project from E:/AlterProjects/led/prj done with code 0

3.4、加载 af_quartus.tcl 文件,综合网表文件

使用 Qurtus II 13.0 打开 supra 工程中的 led.qpf。选择菜单: “Tools -> Tcl Scripts...”,调用工程里的 af_quartus.tcl,运行点击“Run”按钮。

运行 af_prepare.tcl 脚本文件,会把 ve 的内容导入到 EP4CE10 对应的管脚分配。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Qurtus II 13.0 成功执行 Tcl 后,会综合出 Supra 需要的网表文件(vo)。

接着退出工程,回到 Supra 软件。

点击“Next”按钮。

在这里插入图片描述

3.5、Supra工程编译

如下图所示,点击”Finish”按钮, Supra 开始编译工程,可在 Console 界面查看编译信息

在这里插入图片描述

耐心等待 x min…

在这里插入图片描述

log 信息如下:

af.exe -B --batch --mode QUARTUS -X "set QUARTUS_SDC true" -X "set FITTING timing_more" -X "set FITTER hybrid" -X "set EFFORT highest" -X "set HOLDX default" -X "set SKEW basic"

Mon Mar 01 23:01:01 2021
Using pre-ASF file led.pre.asf.
Total IO  : 432
Total Pin : 187/12
Top array is built.
Loading architect libraries...
## CPU time: 0:0:0, REAL time: 0:0:0
## Memory Usage: 43MB (43MB)
Loading route table...
## CPU time: 0:0:12, REAL time: 0:0:13
## Memory Usage: 425MB (425MB)
Using design verilog file E:/AlterProjects/led/prj/simulation/modelsim/led.vo.
Preparing design...
## CPU time: 0:0:0, REAL time: 0:0:0
## Memory Usage: 425MB (425MB)
Pseudo pack design...
Using location file E:/AlterProjects/pin.ve
Packing Statistics
 Total      Logics : 0/10960 (  0%)
 Total        LUTs : 0/10960 (  0%)
 Total   Registers : 0/10960 (  0%)
 Total  Block Rams : 0/   46 (  0%)
 Total Multipliers : 0/   23 (  0%)
 Total        PLLs : 0/    2 (  0%)
 Total        Pins : 1/  187 (  0%)
 Global    Signals : 0/   10 (  0%)
 Total Lonely   Datain   : 0
 Total Lonely   Register : 0
 Total LUT-FF   Pairs    : 0
 Total Register Packings : 0
 Registers with synchronous    reset : 0
 Registers with asynchronous   reset : 0
 Registers with sync and async reset : 0
## CPU time: 0:0:0, REAL time: 0:0:0
## Memory Usage: 425MB (425MB)
Filter verilog...
## CPU time: 0:0:0, REAL time: 0:0:0
## Memory Usage: 425MB (425MB)
Read DB design...
## CPU time: 0:0:0, REAL time: 0:0:1
## Memory Usage: 433MB (433MB)
Process design...
## CPU time: 0:0:0, REAL time: 0:0:0
## Memory Usage: 434MB (434MB)
Using design SDC file ./led.sdc.
Using AQF file ./alta_db/alta.aqf.
Using ASF file led.asf.
Placement Statistics
 Total  Logic    Tiles   : 0/685 (0.0%)
 Total  Valid    Nets    : 0 (0+0)
 Total  Valid    Fanouts : 0 (0+0)
 Total  Tile     Fanouts : 0
 Tile   Zip      Fanins  : 0 (-1:-1)
 Tile   Zip      Fanouts : 0 (-1:-1)
 Total  Ignored  Nets    : 0
 Total  Valid    Blocks  : 0 (0/0)
 Total  Ignored  Blocks  : 1
 Total  Zip Complexities : 0/0 0.00/0.00
 Avg    Zip   Bottleneck : nan nan
 Avg    Net   Bottleneck : nan nan
Total wire cost after placement: 0:0:0(0:0) 0(0)+0(0)+0 0(0)+0

*** Post Placement Timing Report ***
=== User constraints ===
=== Auto constraints ===
Coverage report
  User constraints covered 0 connections out of 0 total, coverage: 100.0%
  Auto constraints covered 0 connections out of 0 total, coverage: 100.0%
*** End Timing Report ***

route_design -dump ./alta_db/route.tx -replace ./alta_db/replace.tx 
Route Design Statistics
 Total Routing Nets : 0
 Logic       Slices : 0/10960 (0.0%)


*** Post Routing Timing Report ***
=== User constraints ===
=== Auto constraints ===
Coverage report
  User constraints covered 0 connections out of 0 total, coverage: 100.0%
  Auto constraints covered 0 connections out of 0 total, coverage: 100.0%
*** End Timing Report ***

Mon Mar 01 23:01:24 2021
Using post-ASF file led.post.asf.
Mon Mar 01 23:01:27 2021

Total 0 fatals, 0 errors, 0 warnings, 0 infos.

Compile design led done with code 0

编译成功后, Supra 生成用于器件烧写的led.prg 等烧写文件。

转换和编译时产生的 log 文件,保存在工程的 alta_logs 目录下;编译的时序报告,保存在 alta_db 目录下,包括 setuphold 时序的 rpt.gz 压缩文件中。

3.6、器件烧写

  • 1、选择菜单: “Tools -> Program”,打开Program选项卡,下图所示:

在这里插入图片描述

或者点击下图所示按钮打开Program选项卡:

在这里插入图片描述

  • 2、连接 USB-BlasterAG10K 评估板的 JTAG 接口,如下图所示:

在这里插入图片描述

  • 3、选择拨码开关MSEL1到合适的档位

AG10K 配置说明:

AG10K 配置方式支持 JTAGAS(Master)PS(Slave) 方式, 可通过 MSEL[2..0]选择。其中 MSEL2MSEL0 已在封装内接到 GND仅需把外部管脚 MSEL1 按照下表设置,选择不同配置模式AS 方式也是通过 JTAG 口直接烧写配置 FLASH

配置方式MSEL1
AS1
PS0
JTAG0/1

MSEL1部分原理图如下所示:

在这里插入图片描述
①、MSEL1 接至GND,即PS方式,下载程序到FPGASRAM里,掉电即丢失!
②、MSEL1 接至GND,即AS方式,下载程序到FLASH中,FPGA进行主动配置,掉电仍可保存程序!

这里PS AS 的称呼准确吗???

这里我选择AS方式,即MSEL1 接至GND

  • 4、接着选择要烧写的程序,然后点击Program

①、AS方式对应的烧写程序名为:led_master.prg
②、PS方式对应的烧写程序名为:led_sram.prg

这里我们当然选择led_master.prg了!

在这里插入图片描述

log 信息如下:

af.exe -B -X "set blaster_id 0" -X "source -progress 1000 E:/AlterProjects/led_supra/led_master.prg"

Usb driver connected on device 0
JTAG device ID: 0x01000001
...1000
...2000
...3000
...4000
...5000
...6000
...7000
Usb driver disconnected

Total 0 fatals, 0 errors, 0 warnings, 0 infos.

Program device with led_master.prg done with code 0

3.7、实验现象验证

如下图所示LED常亮!

在这里插入图片描述

3.8、补充内容

3.8.1、修改源设计后

如需修改原设计,由于 af_prepare.tcl 已把管脚设置改好, 不用重新执行 tcl, 在 Qurtus II 13.0 中直接编译即可。然后在 SupraCompile 界面进行最后编译。

3.8.2、烧写文件类型

  • <design>_sram. prg 文件为片内 sram 写入,通过 JTAG 烧写, 掉电即失效,可用于设计调试;
  • <design>_master.prg 文件为 Master(AS)配置方式下,通过 JTAG 烧写 FLASH 的文件;
  • <design>_master.binMaster(AS)配置方式下, FLASH 的通用烧写文件;
  • <design>.bin 或 rbf 文件为 Slave(PS)配置方式所需文件, rbf 文件的字节高低位反向。

Q & A

Q:改动什么需要重新TCL?

  • A:当改动引脚绑定后。

其他

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


参考

ReCclay CSDN认证博客专家 嵌入式软件开发 机器/深度学习 全栈技术学习者
大家好,我是CSDN博主ReCclay,目前处于研究生阶段,就读于电子科技大学,主攻方向为汽车辅助驾驶算法研究。入站以来,凭借坚持与热爱,以博文的方式分享所学,截止目前累计博文数量达800余篇,累计受益人次达130w+次,涉及领域包括但不限于物联网开发、单片机开发、Linux驱动开发、FPGA开发、前/后端软件开发等。在未来我将继续专注于嵌入式相关领域,学习更多的科技知识,输出更高质量的博文。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值