当前位置: 首页 > article >正文

安路FPGA开发入门:软件安装与点灯与仿真(TangDynasty ModelSim)

文章目录

  • 前言
  • 软件安装
    • 开发软件
    • 仿真软件
  • 点灯测试
    • 代码编写与编译
    • 引脚分配
    • 固件下载
  • 仿真测试
    • ModelSim添加仿真库
    • TangDynasty仿真设置
    • 进行仿真
  • 后记

前言

在这里插入图片描述
最近因为工作需要用安路的FPGA,这里对安路FPGA开发相关流程做个记录。作为测试只需要一个核心板(我这里用的 EF2L45LG144B )和下载器( AL-LINK ,我这里是核心板上板载的)。

安路的所有软件和资料都可以在官网上下载到,不过因为权限问题,有些内容可能需要发邮箱给安路申请提升权限:
https://www.anlogic.com/

软件安装

开发软件

安路FPGA开发软件是 TangDynasty ,这里使用下面版本,另外还需要下载 license
在这里插入图片描述
之前碰到过笔记本离电性能平衡模式下怎么样装都装不成功,插电高性能下安装就一点都没问题,不知道是不是安装程序哪里有超时机制处理不当的BUG什么的。

软件安装后需要手动把下载的 license 放到安装目录对应位置下(这个许可是过段时间就过期,需要重新下载替换,可以用文本方式查看到有效期限):
在这里插入图片描述

软件安装后安装目录对应位置下有下载器的驱动,下载器连接电脑后可能需要手动更新驱动才会正常:
在这里插入图片描述

软件安装后可以打开软件找到软件手册:
在这里插入图片描述
这个手册基本上用到的东西都有介绍了,熟悉FPGA开发的人直接看这个就能用起来了。

仿真软件

ModelSim-英特尔® FPGAs 标准版软件版本:
https://www.intel.cn/content/www/cn/zh/software-kit/750666/modelsim-intel-fpgas-standard-edition-software-version-20-1-1.html
在这里插入图片描述

点灯测试

这里直接就点灯进行测试了。

代码编写与编译

首先新建文件:
在这里插入图片描述

编写代码如下:

module blink(clk, led);

	input clk;
	output reg led = 0;
	reg [31:0] counter = 0;
	
	always@(posedge clk)
		if (counter == 5_000_000)
			counter <= 0;
        else
        	counter <= counter + 1;
            
	always@(posedge clk)
    	if (counter == 5_000_000)
        	led <= !led;

endmodule

我的板子上有个 10MHz 的时钟输入到芯片,我拿它设置了个500ms的计数器,每次计数溢出时翻转一次外接LED的端口电平,实现LED闪烁效果。

运行编译:
在这里插入图片描述

引脚分配

没有报错的话分配下IO口:
在这里插入图片描述

另外未用到的IO口状态可以在下面地方统一设置(默认通常是上拉输入的):
在这里插入图片描述

固件下载

设置IO口后重新运行编译,成功后可以下载比特流( .bit )文件到芯片中看到LED闪烁效果:
在这里插入图片描述
下载时选择 JTAG ,掉电后就会失效;选择 PROGRAM FLASH 掉电后也不会失效。

这里有点问题,官方说 PROGRAM FLASH 是下载到外部Flash, PROGRAM INTERNAL FLASH 是下载到芯片内置的Flash中,我的芯片按理说是选用后者才对,但我这里后面的选项不可选,并且选择前面的也可以正常使用。

仿真测试

TangDynasty 使用 ModelSim 仿真可以参考软件手册或者也可以参考下面文章:
https://chipdebug.com/forum-post/55252.html

下面步骤中在 ModelSim添加仿真库 后其实就直接可以在 ModelSim 中进行仿真了,这个可以参考上面资料。这里介绍的是通过 TangDynasty 生成仿真脚本来进行仿真。

ModelSim添加仿真库

ModelSim添加仿真库理论上对于源码和库目录大概是没有硬性要求的,这里参考上面资料的方式进行介绍。

首先在ModelSim目录中新建存放安路器件源码和模块库的目录,并从TangDynasty安装目录中拷贝源码到这里:
在这里插入图片描述

需要注意的是如果在上面目录中新建和拷贝需要权限的话,下面打开ModelSim需要以管理员方式打开,否则建立文件等会失败。

启动 ModelSim ,选择 File > Change Directory 将路径转到 anlogic 文件夹下。然后选择 File > New > Library 下新建库:
在这里插入图片描述

选择 Compile → Compile 进行编译:
在这里插入图片描述

编译完成后可以看到模块和相关文件:
在这里插入图片描述

TangDynasty仿真设置

TangDynasty可以生成ModelSim用的放在脚本,但是需要进行一些设置。

Process > Properties >

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

进行仿真

首先根据实际需求在 Process > Properties 设置模块库目录以及仿真时间和精度:
在这里插入图片描述

然后准备测试脚本,比如这里用 blink_tb.v ,测试脚本内容如下:

`timescale 1ns/1ns // 仿真时间尺度和精度

module blink_tb();

	reg sig_clk;
	wire sig_led;

	blink blink_inst(
		.clk(sig_clk),
		.led(sig_led)
	);

	initial sig_clk = 0;           // 设置初值
	always #50 sig_clk = ~sig_clk; // 每 50*1ns 翻转一次sig_clk(即10MHz信号)
	
	initial begin      // 开始执行
		#2_000_000_000; // 延时 2_000_000_000 纳秒(即 2000ms 或 2秒钟)
		$stop;          // 停止执行
	end

endmodule

TangDynasty中运行到不同的步骤可以执行不同发仿真:

当 HDL2Bit Flow 运行至 Read Design 这一步时,可执行 Behavioral Simulation;
当 HDL2Bit Flow 运行至 Optimize RTL 这一步时,可执行 Post-RTL Simulation;
当 HDL2Bit Flow 运行至 Optimize Gate 这一步时,可执行 Post-Gate Simulation;
当 HDL2Bit Flow 运行至 Optimize Routing 这一步时,可执行 Post-Route Simulation。

例如下面:
在这里插入图片描述

接着选择 Tool > Simlation 添加测试脚本:
在这里插入图片描述

添加后会生成仿真脚本,注意检查相关内容,如果不对可以在这里直接修改,需要注意的是 -voptargs=+acc 这行:
在这里插入图片描述

之后就可以在ModelSim中进行仿真了,首先切换目录:
在这里插入图片描述

然后输入命令开始执行仿真:
在这里插入图片描述

仿真结果如下:
在这里插入图片描述

后记

TangDynasty 整体使用还是比较简单的,只有使用ModelSim来仿真稍稍会麻烦些,但也不算特别麻烦。


http://www.kler.cn/a/570538.html

相关文章:

  • 单体架构部署的缺陷:为什么现代应用需要转型?
  • yolov8训练模型、测试视频
  • 深入解析Java虚拟机(JVM)的核心组成
  • 深入探究Python机器学习算法:无监督学习(聚类算法如 K-Means、DBSCAN,降维算法如 PCA、SVD)
  • Java中常见的设计模式
  • Transformer结构和注意力机制
  • 【软件系统架构】系列三:数据库系统之三
  • linux插入模块和删除模块
  • 政务信息化项目命名有什么门道?
  • 【JAVA面试题】设计模式之原型模式
  • 清华DeepSeek深度探索与进阶指南
  • GEO数据挖掘
  • 下载魔塔社区模型文件
  • pymodbus简单使用
  • 深度学习-136-LangGraph之应用实例(五)构建RAG问答系统同时从不同的角度对比优化效果
  • 1分钟简化理解单体、微服务、分布式和Serverless
  • 算法系列之数据结构-二叉树
  • 通俗易懂版 Maven 科普,maven是什么?
  • GMAC网络延时性能优化
  • QT 记事本程序开发