芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 2674|回复: 1

【紫光同创】使用PDS软件实现点灯设计(讲解创建工程的方法)

[复制链接]

该用户从未签到

27

主题

29

帖子

218

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
218
发表于 2023-4-6 14:54:54 | 显示全部楼层 |阅读模式
4 使用PDS软件实现点灯设计

4.1   创建工程


首先双击PDS软件对其进行启动,启动界面如图 4 1所示:
1.png

图 4 1 PDS启动页面

点击New Project 创建新工程会弹出创建新工程的说明页面,如图 4 2所示:
2.png

图 4 2 新工程说明页面

新工程说明页面显示,创建一个新的工程需要以下四个步骤:
1.        新工程的命名以及存放的路径;
2.        确定新工程的类型;
3.        添加工程文件;
4.        确定器件型号;
然后点击图 4 2中的Next进入下一个界面,如图 4 3所示:
3.png

图 4 3 工程创建页面

工程创建页面包含以下三个重要信息:
1.        工程名的确定:工程名可以包含英文字母,数字以及下划线(_);
2.        工程的安放路径;
3.        根据实际情况确定是否勾选 “Create project subdirctory”,如果勾选会在上面设置的路径中增加一级目录;
4.        值得注意的是,工程名与工程路径不能包含空格以及中文字符,否则会在后续流程中出现错误,然后点击Next进入下一个界面,如图 4 4所示;
4.png

图 4 4 创建工程向导

如图 4 4所示,该页面可以创建两种类型的工程。【RTL Project】为创建RTL工程,在该工程中可以执行“syntnesize,device map”,“place&route,report timing”,“report power,generate netlist”及“generate bitstream”等。【Post_Synthesize Project】用于创建综合后工程。新建的工程可以执行“device map”,“place&route”,“report timing,report power”,“generate netlist”以及“generate bitstream”等。在这里我们选择创建RTL工程,然后点击箭头指向的Next进入源文件页面如图 4 5所示。
5.png

图 4 5 添加源文件

在图 4 5中 “Add Files”是添加选中的文件,“Add Directories ”添加选中文件夹下面的所有文件。由于在该示例中我们是一个完全新建的工程,直接点击Next进入IP设置页面,如图 4 6所示。在该页面中 “Add Files”,“Add Directories”功能与上述相同,这里不做过多赘述,直接点击“Next”进入图4 7约束文件设置页面。
6.png

图 4 6 IP设置页面

在该页面中可以添加或者创建约束文件,在这里我们不用添加,点击图 4 7的“Next”按钮进入图 4 8器件选择页面。
7.png

图 4 7 约束文件设置页面

在器件选择页面中我们根据设计所用的具体FPGA芯片的型号,根据板卡所用的FPGA的器件系列,封装,以及速度等级等来进行选择。
8.png

图 4 8 器件选择页面

如图 4 8所示,选择完成后点击图 3 8中箭头指向的“Next”进入图 4 9Summary页面。
9.png

图 4 9 Summary 页面

在该页面中再次确认芯片型号等各项信息是否选对,如果核对没有问题点击Finish,完成工程创建,进入PDS主界面,如图 4 10所示:
10.png

图4 10 PDS主页面

PDS主界面主要提示三个信息,以下是三个方框中表明的信息:
1.        工程文件导航窗口;
2.        编译流程窗口;
3.        控制台以及信息提示窗口;


4.2  添加源文件

在完成工程的创建后,我们来设计工程文件,双击Sources下的Design图标,如图 4 11Source面板所示。
11.png

图 4 11 Source面板

  双击Sources下的Designs图标后会出现图 3 12添加源文件页面,将选项中“Copy design files into project”以及“Add source from subdirectories”进行选中。点击图4 12中箭头指向的“Create File”按钮会弹出Create Design Source Files页面,在该页面中我们设置源文件的文件名(源文件名应该以英文字母开头,文件名中不能包含中文以及非法字符);然后点击“Create Design Source Files”页面的OK按钮;最后点击“Add Design Source Files”页面中的OK按钮。
12.png

图 4 12 添加源文件页面

点击图 4 12页面中的OK按钮后,页面会自动跳转到图 4 13端口定义页面。
13.png

图 4 13端口定义页面

在该页面中主要是提示我们进行输入输出端口定义。我们先不定义,在后续的程序设计中再进行输入输出端口的定义,点击OK按钮进入下一页面如图 4 14 所示。
14.png

图 4 14添加源文件成功

点击Sources面板下的“bin_counter.v”文件,打开“bin_counter.v”文件。接下来我们将源文件补充完整,内容如下:

  1. module bin_counter
  2. (
  3.   clk,
  4.   reset_n,
  5.   led
  6. );
  7.   input clk;
  8.   input reset_n;
  9.   output led;   
  10.   reg led;

  11. assign reset=~reset_n;
  12. parameter MCNT = 24_999_999;

  13.   reg [24:0]cnt;  //定义计数器寄存器

  14. //计数器计数进程
  15. always@(posedge clk or posedge reset)
  16. if(reset)
  17.   cnt <= 25'd0;
  18. else if(cnt == MCNT)
  19.   cnt <= 25'd0;
  20. else
  21.   cnt <= cnt + 1'b1;

  22. //led输出控制进程
  23. always@(posedge clk or posedge reset)
  24. if(reset)
  25.   led <= 1'b1;
  26. else if(cnt == MCNT)
  27.   led <= ~led;
  28. else
  29.   led <= led;

  30. endmodule

复制代码

在代码编辑完成之后,保存源文件,至此源文件添加成功。最后,在Flow Navigator窗口下,点击图 4 15中箭头指向的“Synthesis”,再点击 “Rerun All”查看编译是否有错误。如果出现错误就根据信框中提示的信息对代码进行改正。
15.png

图 4 15 设计综合页面

3.3   添加仿真文件


在对上面的设计内容进行分析后没有错误时,就可以新建仿真文件了,下面介绍具体步骤。
如图 4 16在Source面板找到“Simulation”选项,单击“Simulation”选项。
16.png

图 4 16 仿真窗口

单击“Simulation”选项后会自动跳转到图 4 17,点击图 4 17中箭头指向的“Add Source”选项。
17.png

图 4 17添加源文件

点击“Add Source”选项后会自动跳转到Add Source页面,如图 4 18。选择图 3 18中箭头指向的“Add or create simulation sources”选项,再点击图 4 18中箭头指向的“Next”按钮。
18.png

图 4 18 Add Source页面

点击图 4 19中箭头指向的“Create File”按钮。
19.png

图 4 19 添加仿真文件页面

在弹出的“Create Simulation Source File”页面中对仿真文件进行命名,然后点击图 4 20“OK”按钮,最后再点击图 4 19中的“OK”按钮;
20.png

图 4 20 设置仿真文件名

点击图 4 21中“OK”按钮。
21.png

图 4 21 端口定义页面

在Source面板下可以看到有仿真文件已经加入工程了,双击图4 22就可进入编辑窗口。
22.png

图 4 22 Source面板下仿真文件

仿真激励产生一个周期为20ns的时钟和复位信号,并例化了需要测试的bin_counter.v。


  1. `timescale 1ns/1ns
  2. `define CLOCK_PERIOD 20

  3. module bin_counter_tb();
  4.     reg clk;
  5.     reg reset_n;
  6.     wire led;
  7.   
  8.     defparam bin_counter_inst.MCNT = 24_999;

  9.     bin_counter bin_counter_inst (
  10.         .clk(clk),
  11.         .reset_n(reset_n),
  12.         .led(led)
  13.       );

  14.     initial clk = 1;
  15.     always #(`CLOCK_PERIOD/2) clk = ~clk;

  16.     initial begin
  17.         reset_n = 1'b0;
  18.         #(`CLOCK_PERIOD *200 + 1);
  19.         reset_n = 1'b1;
  20.         #2000000000;
  21.         $stop;
  22.     end

  23. endmodule
复制代码

设计完仿真文件后进行仿真。

4.4功能仿真验证

     由于PDS软件没有自带仿真器,所以我们要将PDS软件和Modelsim进行关联。Modelsin的使用主要有两种方法,第一种是接使用Modelsim软件进行仿真,即手动仿真;第二种是其它的EDA工具如PDS调用Modelsim进行仿真,这种情况就是我们通常所说的自动仿真或者联合仿真。
这里我们采用PDS调用Modelsim进行仿真的方法。点击PDS软件工具栏中的“Project”选项,然后在弹出的页面中点击“Project Setting”选项。(仿真库的编译已经在其它帖子中介绍完毕)
1.png

图 4 23 “Project Setting”选项

在弹出的“Simulation”界面中,点击“Simulation top module name”选项后的“…”选中仿真文件,至于“Compiled Library Location”以及“Simulator Executable  Path”是对仿真编译库路径以及仿真路径的设置。对于如何设置,我们已经在其它帖子中做出介绍,这里不做赘述。再将“Clean up simulation files”选项勾选。
2.png

图 4 24 “Simulation”界面

点击图 4 24页面中的“Elaboration”选项,最后将“Modelsim elaborate.acc”选项勾选,点击图 4 25的“OK”按钮。
3.png

图 4 25 “Elaboration”选项

点击图 4 26中箭头指向的 “Run Behavioral Simulation”选项,这里我们做一下行为级的仿真就可以了。
4.png

图 4 26仿真按钮

将想要观察的波形加载到仿真页面进行观察,在图 4 27中我们可以看出led的亮灭情况与我们设计的一致。   
   5.png

图 4 27 仿真波形

4.5板级调试与验证

实验的板级验证环节,主要验证以下几个目标:
1.        能否正确将生成的bit文件下载到PGL22G开发板;
2.        下载完成后能否正确显示PGL22G开发板LED的点亮实验现象;
系统所需硬件:
1.        PGL22G开发板;
2.        电源电缆一根;
3.        硬件条件符合实验要求,具有完全开发功能的PC机一台;

4.5.1添加I/O 约束

通常,一个设计中的 FPGA 不会是独立使用的,FPGA 一定会与其他外设、接口相连接,比如时钟,按键等。因此,FPGA 设计需要指定对应的 IO 引脚位置信息。
添加 IO 约束的方法非常简单:首先点击图 3 28上方工具栏“Tools”栏中“User Constranit Editor(Timing and Logic) ”然后点击 “Pre Synthesize USE ”选项。
6.png

图 4 28“Tools”工具栏

点击图 4 28中的“Pre Synthesize USE ”选项后,弹出图 4 29界面,首先点击 “Pre Synthesize USE ”   选项,然后点击“Device”选项,最后点击“I/O”选项,进入管脚分配页面。
7.png

图 4 29管脚分配入口            
            
打开管脚约束窗口如图 4 30,其中LOC  ,VCCIO,IOSTANDARD是我们要约束的内容。这里,参考我们提供的管脚约束表即可完成管脚绑定。
8.png

图 4 30管脚分配页面
     这样管脚约束添加完成了。但是此时约束内容保存在内存中,还没有写入文件,点击工具栏保存按钮,或者直接Ctrl+S。
9.png

图 4 31保存约束文件

然后会自动弹出图 4 32中所示界面,添加约束文件名 bin_counter,点击“SAVE”按钮。
10.png

图 4 32约束文件命名

这样就将I/O 约束写入到约束文件中。如图 3 33所示,在Source窗口的Constraints下可找到刚保存的bin_counter.fdc文件。双击可以打开约束文件。
11.png

图 4 33 Source面板

4.5.2下载与验证

将下载器一端连接电脑,另一端与开发板上的 JTAG 下载口连接,连接电源线,并打开开发板的电源开关,硬件连接如下。
12.png

图 4 34 硬件连接

接下来我们直接点击图 4 35中"Generate Bitstream"然后点击箭头指向的“Rerun All”,PDS软件会自动执行综合,布局布线,和Bit 流生成。

13.png

图4 35比特流生成界面
点击图 4 36箭头指向的PDS 工具栏下载按钮
14.png

图 4 36 下载按钮

然后在弹出的图 4 37中的 Fabric Configuration 界面中点击“Scan Device”按钮。
15.png

图 4 37 Fabric Configuration 界面

双击图 4 37中的“Boundary Scan”后会自动弹出图 4 38,我们选中图 338中bin_counter.sbit文件,然后点击图中的Open。

16.png

图 4 38加载bin_counter.sbit文件
右击图 4 39中标签1所在的位置,然后点击标签2指向的“Program”将生成好的bin_counter.sbit 流文件下载到开发板中去。
17.png

图4 39 下载bin_counter.sbit文件

实验现象如图 4 40所示。
18.png

图 4 40 实验现象

将下载bin_counter.sbit 流文件下载到开发板后可以观察到对应的现象,即led[0]灯的闪烁情况。

bin_counter.rar (27.32 KB, 下载次数: 314)

更多紫光同创FPGA相关资料,请查看下述汇总贴
【紫光同创】紫光同创国产FPGA产品使用自助服务手册

回复

使用道具 举报

  • TA的每日心情
    大哭
    2024-8-7 14:05
  • 0

    主题

    1

    帖子

    9

    积分

    新手入门

    Rank: 1

    积分
    9
    发表于 2024-8-7 14:08:42 | 显示全部楼层
    请问一下为什么出来我的led和cnt这么不对劲啊 仿真波形.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-11-21 14:24 , Processed in 0.120150 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表