02、国产FPGA 正点原子DFPGL22G开发板测评【学习篇】软件安装+流水灯
[复制链接]
本帖最后由 1nnocent 于 2023-1-8 22:41 编辑
板子收到的时候舍友阳了,刚好居家办公,趁着这个机会在家玩玩紫光同创的FPGA,安装PDS时2需要申请PDS License,网上申请之后需要三个工作日审核。申请完第二天就阳了,后面就没有精力去搞这些了,身体情况好些之后去邮箱查看PDS License发现连接已经过期,需要重新申请,又等了三天。这次顺利到手。便开始搭建环境。
双击桌面PDS软件标识,在弹出的窗口输入license所在路径之后,点击ok,PDS软件就能正常使用了。
先大致了解一下PDS软件的使用流程:实际上与 FPGA的设计流程基本一致。
绿色字体是正点原子开发指南对软件的描述
从上图可以看出,首先打开 PDS 软件,然后新建一个工程,在新建工程的时候,我们可以通过创建工
程向导的方式来创建工程;工程建立完成后,我们需要新建一个 Verilog 顶层文件,然后我们将设计的代码
输入到新建的 Verilog 顶层文件中,并对工程进行配置;接下来我们就可以对设计文件进行分析与综合了,
此时 PDS 软件会检查代码,如果代码出现语法错误,那么 PDS 软件将会给出相关错误提示,如果代码语法
正确, PDS 软件将会显示综合完成。
PDS的语法错误检查只能在分析与综合阶段才能显示,之前安路的TD也是这样,目前用过的国产的FPGA设计软件好像都不能像赛灵思那样实时显示语法错误,这一点总是有点不习惯,不知道是不是个人入门时使用vivado的原因。
综合完成后,我们需要进行约束的输入。约束表达了设计者期望满足的时序要求,规范了设计的时序行
为,并在综合、实现阶段来指导工具进行布局、布线,工具会按照你的约束尽量去努力实现以满足时序要求,
并在时序报告中给出结果。常用的约束包括时序约束、引脚约束等等。
布线阶段软件自主执行,用户没有办法看到内部的实现过程。
接下来就开始编译整个工程了;在编译过程中, PDS 软件会重新检查代码,如果代码及其它配置都正
确后, PDS 软件会生成一个用于下载至 FPGA 芯片的.sbit 文件。最后,我们通过下载工具将编译生成的.sbit
文件下载至开发板,完成整个开发流程。
最后是生成比特流,PDS比特流是.sbit文件。
大致流程了解之后创建工程实现一定的功能。这里在测评计划里面再添加一个点灯的实验,经典的实验还是要过一遍(开发板对编译软件的使用介绍一般都会在第一个点灯历程里面接收,后续的历程就不会再详细介绍),所以这里添加一个点灯实验。
新建工程:新建工程之前需要事先创建好工程路径,路径下包含doc,prj,rtl,sim四个文件夹(这部分没有其他软件好用,新建工程时只要在软件中选择好路径,这些文件夹都会自动创建好,不需要手动创建)。工程命名,并选择事先创建好的路径:
接下来会跳出三个窗口,分别提示添加source file(rtl源文件),existing IP(外部IP核),constrain(约束文件),这里都选择不添加(因为现在只是新建工程,事先没有写好的文件可供添加)。之后就来到了添加part环节,这里需要选择添加开发板的芯片资料。
设计输入:添加设计文件
编写代码:
module led(
input clk,
input rst_n,
output reg[3:0] led
);
reg [23:0] cnt;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt <= 24'd0;
end
else if(cnt <= 24'd10_000_000 - 1'd1)begin
cnt <= cnt + 1'b1;
end
else begin
cnt <= 24'd0;
end
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
led <= 4'b0001;
end
else if(cnt == 24'd10_000_000 - 1'd1)begin
led[3:0] <= {led[2:0],led[3]};
end
else begin
led <= led;
end
end
endmodule
分析与综合(编译):在编译流程窗口点击compile。
约束输入:主要是完成管脚的约束,时钟的约束,以及组的约束。编译通过以后,我们就需要对工程中输入、输出端口进行管脚分配。
编译工程:我们分配完引脚之后,需要对整个工程进行一次全编译,双击 Generate Bitstream 或右击 Generate Bitstream 后点击 Rerun All,然后软件会按照 Synthesize-> Device Map-> Place & Route- > Generate Bitstream 的顺序来产生位流文件。
下载程序:编译完成后,我们就可以给开发板下载程序,来验证我们的程序能否正常运行。 首先我们将下载器一端连接电脑,另一端与开发板上的 JTAG 接口相连接;然后连接开发板电源线,并打开电源开关。
固化程序:这里下载的程序是.sbit 文件格式,开发板断电后程序将会丢失。如果我们想要程序断电不丢失的话,就必须将程序保存在开发板的片外 Flash 中, Flash 的引脚是和 FPGA 固定的引脚相连接, FPGA 会在上电后自动读取 Flash 中存储的程序,这个过程不需要我们编写驱动代码和人为干预,只需要通过 JTAG 下载 sfc文件即可。需要注意的是, sfc 文件不是软件自动生成的,而是需要我们手动的将 sbit 文件转换成 sfc 文件。首先我们在程序下载界面的菜单栏中选择“Operations”下“Convert File”进行文件转换。
实现效果: LED
|