首页 > 其他分享 >[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-02使用安路TD开发工具创建FPGA工程

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-02使用安路TD开发工具创建FPGA工程

时间:2024-07-19 20:08:24浏览次数:9  
标签:02 文件 FPGA 约束 添加 安路 TD PLL

软件版本:Anlogic -TD5.9.1-DR1_ES1.1

操作系统:WIN10 64bit

硬件平台:适用安路(Anlogic)FPGA

实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板

板卡获取平台:https://milianke.tmall.com/

登录"米联客"FPGA社区http://www.uisrc.com 视频课程、答疑解惑!

1概述

本实验以FPGA芯片DR1M90GFG484为例,同时适用于安路其他FPGA芯片

实验目的:

1:掌握基于TD创建FPGA工程的方法

2:掌握基于TD新建FPGA代码文件

3:掌握基于TD调用PLL IP CORE

4:掌握基于TD添加时序约束

5:掌握基于TD添加PIN脚约束

2如何利用TD创建FPGA工程

启动TD软件

创建一个新的空的工程(虽然是国产FPGA厂家,但是目前国内主流FPGA厂家都是采用英文菜单,这个符合FPGA开发的习惯)

Project Name:新建一个fpga工程名,这里米联客的教学类fpga工程统一命名为fpga_prj

Project Path:工程路径设置,这里我们需要根据自己的磁盘和文件管理路径合理设置

Device Family:设置器件的系列,这里设置DR1,因为我们的开发板采用的是DR1M90GFG484这颗FPGA芯片

Device Name:设置芯片的名字,这里选择DR1M90GFG484

一个空的FPGA工程创建完成后入下图所示

以下是对软件工具的大概介绍更多可以结合具体应用加以理解:

3 TD创建或者添加代码

首先根据米联客的代码管理规范,在对应的FPGA工程路径下创建uisrc路径,并且创建以下文件夹

01_rtl:放用户编写的rtl代码

02_sim:仿真文件或者工程

03_ip:放使用到的ip文件

04_pin:放fpga的pin脚约束文件或者时序约束文件

05_boot:放编译好的bit或者bin文件(一般为空)

06_doc:放本一些相关文档(一般为空)

3.1 如何新建FPGA代码文件

右击Hierarchy可以看到弹出的菜单中可以选择新建fpga代码或者添加已经存在的fpga代码

比如新建FPGA代码选择New Source

File Type:如下图所示,可以支持多种编程语言,这里选择verilog

File Name:设置文件名

Location:设置文件路径,这里放到uisrc/01_rtl路径下方便管理

当只有一个文件的时候,默认是Top文件

当有多个文件软件无法确认top文件的时候,可以右击文件名设置

双击代码,可以看到TD默认输入了2行代码

编写以下测试代码,其中关于PLL IP核调用的部分我们提前调用了接口,用户也可以在PLL核产生后再调用

`timescale 1ns / 1ps

module pll_test(

input I_sysclk,//系统时钟输入

output [1:0]O_up_led//LED输出

  );

  

wire        clk0;

wire        pll_lock;

reg [25:0]  cnt;

 

//例化PLL模块

mypll mypll_u(

.reset      (1'b0),//PLL复位

.refclk     (I_sysclk),//PLL输入时钟

.clk0_out   (clk0),//PLL输出时钟

.lock       (pll_lock)//PLL锁住

);

assign O_up_led = {cnt[25:24]};//输出计数器的高位用于驱动LED

 

//计数器

always @ (posedge I_sysclk or negedge pll_lock)begin

    if(pll_lock==1'b0)

      cnt <= 26'd0;

    else

      cnt <= cnt + 1'b1; //cnt power on initial value is all 1

end

 

endmodule

3.2 添加PLL IP核

 

3.3调用PLL

双击IP内部的代码,查看PLL的调用接口(由于我们提前编写的代码正确调用该PLL所以可以看到PLL包含在顶层代码的下一级中,否则会和顶层代码平级)

添加调用PLL的端口

mypll mypll_u(

.pllreset   (1'b0),//PLL复位

.refclk     (I_sysclk),//PLL输入时钟

.clk0_out   (clk0),//PLL输出时钟

.lock       (pll_lock)//PLL锁住

);

修改完代码后,记得保存文件。

4添加约束文件

TD软件可以通过多种方式添加约束文件

为了可以通过向导定义约束,需要线综合下,双击综合

综合完成后,对应的符合上打了✔

 

 

 

 

 

 

4.1 如何通过向导添加

4.1.1 添加IO约束

利用向导方式,一定要先完成综合,这样软件才能识别出来端口

根据原理图中的定义,正确填写IO号,如下所示:

我们根据原理图填写好Location 以及IOStandard其他默认,对于一些高速应用我们可能还要设置输出输出延迟

Name:信号名字

Direction:IO输入输出方向

Bank:FPGA的IO所在的BANK(FPGA的IO会分布在多个BANK)

Location:IO的具体位置,这也是我们重点需要约束的,这里需要看原理图找到PIN脚定义

IOStandard:IO的电平模式,需要正确设置,一般单端的有LVCMOS33\ LVCMOS25\ LVCMOS18等

DriverStrength:驱动能力,数值越大,驱动能力越强

PullType:上拉下来类型

SlewRate:转换速度,对于低速场合选择SLOW高速场合选择FAST

InDelay:可以手动设置IO输入延迟

OutDelay: 可以手动设置IO输出延迟

DifferentioalPair:差分对

其他一些设置暂时都用不到

设置好后,单击保存,一般选择single Line方式,阅读起来比较简洁

保存Pin脚约束到文件路径uisrc/04_pin,命名为fpga_pin.adc

之后会提示是否添加到本工程,单击YES

可以看到现在已经添加进来了

双击查看文件(具体管脚约束以实际工程为准)

 

4.1.2 添加时序约束

首先双击综合

由于刚刚添加完成PIN脚约束,所以会有以下警告提示单击Continue,由于我们确认代码没修改,因此继续添加

本方案比较简单,我们只添加周期约束

如果之前没有定义过时序约束文件,会提示保存文件,单击SAVE

我们不使用默认的命名,我们修改到路径uisrc/04_pin路径下,并且命名为timing.sdc

最后点击save

 

可以双击查看约束

create_clock -name sysclk -period 10 -waveform {0 5} [get_ports {I_sysclk}]

create_generated_clock -name pll_out0 -source [get_ports {I_sysclk}] -master_clock {sysclk} -phase 0 -multiply_by 8 [get_nets {mypll_u/clk0_out}]

4.2 如何移除约束文件

单击需要移除的约束文件,然后右击

分别移除fpga_pin.adc和timing.sdc文件

4.3 如何添加已有约束文件

有2个位置都可以添加已经存在的约束文件,一个是project Hierarchy中右击constraint添加,另外一个是在FPGA Flow中双击User Constraints中的Add ADC file和Add SDC File

分别右击constraint添加PIN脚约束文件和时序约束文件

 

5工程编译

5.1一键编译

完成编译后如下

5.2查看Log Tree报告

5.4查看资源利用报告

5.5查看时序分析报告

6下载演示

6.1硬件连接

(该教程为通用型教程,教程中仅展示一款示例开发板的连接方式,具体连接方式以所购买的开发板型号以及结合配套代码管脚约束为准。)

请确保下载器和开发板已经正确连接,并且开发板已经上电(注意JTAG端子不支持热插拔,而USB接口支持,所以在不通电的情况下接通好JTAG后,再插入USB到电脑,之后再上电,以免造成JTAG IO损坏)

 

6.2程序下载

单击下载按钮

可以看到已经识别到芯片

6.2.1下载bit

选择bit文件

选中后单击Run

下载成功

6.3运行结果

(该教程为通用型教程,教程中仅展示一款示例开发板的上板现象,具体现象以所购买的开发板型号以及配套代码上板现象为准。)

 

标签:02,文件,FPGA,约束,添加,安路,TD,PLL
From: https://www.cnblogs.com/milianke/p/18312287

相关文章

  • 2024牛客暑期多校训练营1 解题报告
    A-ABitCommon通过该题的性质可以知道偶数的关系不影响能够成立的序列我们只讨论最后一位为1的数这些数才能对该序列造成影响又因为对于每个特殊序列中每位必定有一个0所以特殊序列的个数为C(n,k)*2((m-1)*(m-n))*(2(m-1)-1)^(n-k)点击查看代码#include<bits/stdc++.h>......
  • FPGA DNA 获取
    FPGADNADNA是FPGA芯片的唯一标识,FPGA都有一个独特的ID,也就是DeviceDNA,这个ID相当于我们的身份证,在FPGA芯片生产的时候就已经固定在芯片的eFuse寄存器中,具有不可修改的属性。在xilinx7series和7series以前,ID都是57bit的,但是在Xilinx的Ultraslace架构......
  • 02-使用BIOS中断 显示字符/读取磁盘 【实现boot中加载loader的功能】
    bios提供了一组服务,可以帮助我们操纵硬件,避免我们直接与硬件细节打交道当触发软中断时,会自动从中断向量表中取出想用的中断程序的首地址,来执行中断程序,参数通过寄存器传递一、Bios的INT10中断INT10中断是BIOS用于控制显示屏的关键接口,包括设置显示器模式、光标管理和显......
  • ISYS1002 Cybersecurity
    ISYS1002Cybersecurity-Assignment2SummaryTitleAssignment2TypeCaseStudy. MustbecompletedasindividualsDue Date:Monday,Week5, 11:59 pmLength:1000wordsWeighting:40%AcademicIntegrityGenAImayNOT b......
  • 20240719数据库关联查询、条件查询
    mysql关联外键查询商品表和图片表是分开的,用一张商品图片表关联起来了。查询商品表所有字段和图片信息。其余的,商人id、区域id、分类id都是直接关联,没有中间表SELECTp.id,p.name,p.price,p.unit,f.file,p.description,p.is_on_sale,p.......
  • 安川伺服驱动器SGDV-1R6A01B002000的应用
    YASKAWA安川伺服电机及驱动器应用YASKAWA安川伺服电机及驱动器是一种运动控制设备,可以广泛应用于各种机器人、自动化系统、数控机床等行业中。安川伺服系统采用先进的控制技术、传感器技术和电机技术,能够稳定、精准地执行各种运动控制任务。以下是安川伺服电机及驱动器的应用......
  • 安川伺服驱动器SGDV-1R6AE1A002000
    安川驱动器工作原理一、工作原理安川驱动器是一种在工业生产过程中广泛使用的电子设备,主要用于控制和调节电机的运转。安川驱动器是由交流电源产生交流电信号,通过变频控制芯片将交流电信号转化为直流电信号,再通过逆变电路将直流电信号转化为可调频率和电压的交流电信号,最终控......
  • 安川伺服驱动器SGDV-200A01A002000
    安川驱动器工作原理一、工作原理安川驱动器是一种在工业生产过程中广泛使用的电子设备,主要用于控制和调节电机的运转。安川驱动器是由交流电源产生交流电信号,通过变频控制芯片将交流电信号转化为直流电信号,再通过逆变电路将直流电信号转化为可调频率和电压的交流电信号,最终控......
  • 02线性表 - 链表
    这里是只讲干货不讲废话的炽念,这个系列的文章是为了我自己以后复习数据结构而写,所以可能会用一种我自己能够听懂的方式来描述,不会像书本上那么枯燥和无聊,且全系列的代码均是可运行的代码,关键地方会给出注释^_^全文1W+字版本:C++17编译器:Clion2023.3.24暂时只给出代码,不会涉......
  • 【开源分享】2024PHP在线客服系统源码(全新UI+终身使用+安装教程)
    PHP在线客服系统核心功能用户留言协同工作:留言后,用户能够享受在线咨询、订单查询等服务;登录状态也用于权限控制,确保不同用户访问合适的资源。咨询处理作用:提供实时或异步的客服咨询功能,允许用户向客服发送问题并接收回复。重要性:是客服系统的核心功能,直接影响用户体验和满意......