2827|12

845

帖子

3

TA的资源

版主

楼主
 

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

最新回复

看看   详情 回复 发表于 2023-2-21 13:55
点赞 关注
 
 

回复
举报

6968

帖子

11

TA的资源

版主

沙发
 
阳康了就好,加油玩板子,期待精彩作品。

点评

这个月的测评都会被延期了,没法啊,评委都阳了,没人催了  详情 回复 发表于 2023-1-8 22:35
现在除了咳嗽其他都还好     。  详情 回复 发表于 2023-1-8 22:05
 
 
 

回复

845

帖子

3

TA的资源

版主

板凳
 
lugl4313820 发表于 2023-1-8 11:13 阳康了就好,加油玩板子,期待精彩作品。

现在除了咳嗽其他都还好

 

 

 
 
 

回复

6449

帖子

10

TA的资源

版主

4
 

FPGA的控制模式和M核的单片机的差异在哪里?

点评

FPGA是并行的(多线程的),单片机是串行的(单线程的); 或者说FPGA搭建的是电路模块,各个电路模块都是同时执行的(并行的)。  详情 回复 发表于 2023-1-8 22:41
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

6449

帖子

10

TA的资源

版主

5
 
lugl4313820 发表于 2023-1-8 11:13 阳康了就好,加油玩板子,期待精彩作品。

这个月的测评都会被延期了,没法啊,评委都阳了,没人催了

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

845

帖子

3

TA的资源

版主

6
 
秦天qintian0303 发表于 2023-1-8 22:34 FPGA的控制模式和M核的单片机的差异在哪里?

FPGA是并行的(多线程的),单片机是串行的(单线程的);

或者说FPGA搭建的是电路模块,各个电路模块都是同时执行的(并行的)。

点评

用单片机单线程的思维还是不太清楚,多线程的运行之间会有共用部分吗?比如同一个变量  详情 回复 发表于 2023-1-9 09:47
 
 
 

回复

6449

帖子

10

TA的资源

版主

7
 
1nnocent 发表于 2023-1-8 22:41 FPGA是并行的(多线程的),单片机是串行的(单线程的); 或者说FPGA搭建的是电路模块,各个电路模块 ...

用单片机单线程的思维还是不太清楚,多线程的运行之间会有共用部分吗?比如同一个变量

点评

fpga里面没有线程一说,你的代码会被综合成实际的数字电路,对于异步双口存储器一般直接调用IP核,自己写的话要做跨时钟域和访问冲突处理。  详情 回复 发表于 2023-1-11 20:47
可以共用变量,只要不在多个地方同时赋值就行(只能有一个地方对变量进行赋值)  详情 回复 发表于 2023-1-9 11:05
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

845

帖子

3

TA的资源

版主

8
 
秦天qintian0303 发表于 2023-1-9 09:47 用单片机单线程的思维还是不太清楚,多线程的运行之间会有共用部分吗?比如同一个变量

可以共用变量,只要不在多个地方同时赋值就行(只能有一个地方对变量进行赋值)


 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

9
 
秦天qintian0303 发表于 2023-1-9 09:47 用单片机单线程的思维还是不太清楚,多线程的运行之间会有共用部分吗?比如同一个变量

fpga里面没有线程一说,你的代码会被综合成实际的数字电路,对于异步双口存储器一般直接调用IP核,自己写的话要做跨时钟域和访问冲突处理。

 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(中级)

10
 

PDS的缩进不太好用

点评

是的,每次回车都是到下一行的顶格   。  详情 回复 发表于 2023-1-12 10:27
 
 
 

回复

845

帖子

3

TA的资源

版主

11
 

是的,每次回车都是到下一行的顶格

 

 
 
 

回复

136

帖子

0

TA的资源

一粒金砂(中级)

12
 

加油玩板子,期待大佬精彩作品。

 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

13
 

看看

个人签名

希望做一些大家觉得好用的东西!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表