紫光物联linux登录账号,黑金&紫光,共筑国产FPGA梦——PGL12G 开发板评测(软件篇)...

在上一期jaya小编给大家带来了一款由知名FPGA 开发板厂商黑金出产的,国产FPGA紫光同创PGL12G开发板的硬件部分,在上一期给大家简单的介绍了一下,有兴趣的盆友,可以移步上期硬件部分的测评,这期的测评主要将会对紫光同创的这颗PGL12G进行环境的搭建和Verilog程序例程的综合等等。

OK开始进入正题,作为一款国产的FPGA,肯定是有一个套新的环境,像是Xilinx的开发环境Vivado或者老一些的芯片都是用ISE的,像是Intel的FPGA环境一般Quartus。我们的这颗来自紫光同创的国产FPGA所应用的开环境是Pango Design Suite。当你获取了开发板,自然界就会拿到,板卡对应的环境安装包,如下图。

5d4288744475146640f52aaf2aaf18d9.png

按照找手册,我们打开Setup.exe进行安装,不过既然提供的exe安装包文件,估计我拿到的软件是只能在Windows 下进行使用,像是Vivado的话是可以在linux下进行安装的,听说linux下的运行效率更好,同样的硬件配置综合工程速度更快。不过小编也没做过那么大的FPGA的工程需要综合,需要提速到Linux版本的,Windows版本基本已经可以满足小编的需求了。OK,这样我们就开始安装,安装的过程大家都懂得,下一步到天黑就好了。

202cb0e1dc11e780b2c2115496bcc69d.png

然后,小编就遇到了第一个难点,是关于License 配置的问题,License是需要申请的,要得到一个绑定MAC地址的的License文件。License文件有两种Node-locked License(单机版)和Floating License(服务器版)两种,我们个人来用呢,就是用Node-locked License就可以了。

申请的方法,就是在网页申请,网页连接如下:https://www.pangomicro.com/support/License/index.html

3d9f010356ab39f9b3f555e9cd91ebfb.png

填好申请的需求后,可能需要联系一下官方,小编也不确定是因为节假日期间申请被忽略了还是什么其他的原因,小编的申请提交后就石沉大海了,后面通过和官方沟通才拿到Node-locked License。关于MAC地址的填写,请注意使用你默认上网网卡的MAC地址,否则可能使用起来会有问题。比如你经常用无线网卡来连接网络,那么就要填写你的无线网卡的MAC地址。官方会提供我们一个*.lic的文件,启动软件的时候填写下*.lic文件的目录就可以正常打开软件了。(小编这边已经填过一次了,这个填写*.lic地方的显示略有不同)

相应的license配置好,软件才能正常工作, Pango Design Suite 需要 PDS License文件,同时还有另外一个License,是软件内置的Synplify 综合工具,这个综合工具也需要相应的 OEM License 文件。 两个License配置好了我们的软件也就能正常的工作了。

66a8887997105468d1636961bd35d536.png

打开软件环境的界面如下图。相对比来说还是比较简洁明了,我们来建立一个project来看看。

32b3f8041ab8878bb2624a1e82628633.png

创建project的第一个见面先给我们一个简介,告诉我们在创建工程的时候都需要提供什么信息。我们直接Next就好。

883d75853837cc505b165e8dbed2809d.png

然后呢我们要添加Project的Name 根据自己的需求填写就好,Project Type,我们选择RTLProject。

86bea71573d87e27ba873adc0db825dc.png

e50a3e771ed2f6cccf597fe489e022cf.png

然后我们要添加Design Source Files,这里呢我们直接创建一个空工程,不添加任何文件。然后是IP部分的选择,Add Existing IP,我们也不会使用到IP,所以直接下一步。

d2cd2ca03159be46083f3724f21c9c2b.png

d74bb7041f9fd8955281d9e6b64dd828.png

在之后是让我们来添加约束文件。Add Constraints,一样的,我们现在也没有要添加的约束文件。Part部分这里就是选择我们使用的器件,PGL12G 开发板首先在Family栏里选择Logos系列,Device中选择PGL12G,在 Package栏选择 BG324 ,Speed grade 栏选择-7,这样我们就选中了我们需要的芯片型号。单击NEXT进入下一界面。

242f0207052bad054c347d50335b41a1.png

4cc25a97b723065956df37b20248d27d.png

OK我们的项目配置已经完成,仔细检查一下我们需要的配置是正确的,没有问题我们Finish。完成我项目的创建。

971900ea54db68e3859d9cd4bcffbe73.png

这是我们终于进入到FPGA开发的阶段。界面如下:

01b24a9ac3eeec689b88f2f63900b3f1.png

我们来双击Design,来创建我们的工程文件。也就是Verilog代码。

a0d72769b8b5a3ddf1919b0defdcff17.png

f54a863b79ce18a7fd6bc92dd3abe559.png

完成配置之后,向导会提示您定义I/O 的端口,这里我们可以不定义,后面自己在程序中编写就可以,单击 OK完成。

c8719d60c083ad910416b013b9d11268.png

OK这样我们就终于可以写Verilog代码了。我们直接将,黑金给我们提供的代码写进来。

61959ff5903b9971fd8bff1c4319bab3.png

简单的流水灯,代码如下:

//===========================================================================

// Module name: led_test.v

//===========================================================================

`timescale 1ns / 1ps

module led_test

(

sys_clk, // system clock 50Mhz on board

rst_n, // reset ,low active

led // LED,use for control the LED signal on board

);

//===========================================================================

// PORT declarations

//===========================================================================

input sys_clk;

input rst_n;

output [3:0] led;

//define the time counter

reg [31:0] timer;

reg [3:0] led;

//===========================================================================

// cycle counter:from 0 to 4 sec

//===========================================================================

always @(posedge sys_clk or negedge rst_n)

begin

if (~rst_n)

timer <= 32'd0; // when the reset signal valid,time counter clearing

else if (timer == 32'd199_999_999) //4 seconds count(50M*4-1=199999999)

timer <= 32'd0; //count done,clearing the time counter

else

timer <= timer + 1'b1; //timer counter = timer counter + 1

end

//===========================================================================

// LED control

//===========================================================================

always @(posedge sys_clk or negedge rst_n)

begin

if (~rst_n)

led <= 4'b0000; //when the reset signal active

else if (timer == 32'd49_999_999) //time counter count to 1st sec,LED1 lighten

led <= 4'b0001;

else if (timer == 32'd99_999_999) //time counter count to 2nd sec,LED2 lighten

begin

led <= 4'b0010;

end

else if (timer == 32'd149_999_999) //time counter count to 3nd sec,LED3 lighten

led <= 4'b0100;

else if (timer == 32'd199_999_999) //time counter count to 4nd sec,LED4 lighten

led <= 4'b1000;

end

endmodule

下一步,我们来分配管脚,(PS:这里也是和单片机不同的,一般的话单片机写好C,完成编译就可以download进单片机,而FPGA则是要在固定的工具中进行管脚的指定,才可以进行最后的综合,进而拿到bitfile,烧录进FPGA进行使用),我们打开约束器进行约束,指派管脚。我们选择device,中的IO

0bfd1f6745f010b2dd4a02750ea168fd.png

2ee776917f5e3bbe3dfff5062ace9608.png

在这里指定好使用的管脚,保存。如下图:

912992e57062a19615c4741513437025.png

然后我们来综合生成Bitstream,双击Generate Bistream,如下图红框。(PS:这里的Bitsream就是最终的网表文件,可以理解为FPGA的程序)如果工程在生成位流文件过程中没有错误,则会出现下图中每一步都正确的“√”,否则就会在Messages 栏中显示 errors 的错误。

07e8c7579999278bd5a2c122622cc4ee.png

8596352ae4cf121b09a43961856138aa.png

完成综合之后,位流文件生成完成后,我们可以在Report Summary 页面的到了 FPGA 资源的使用情况。

5304381effcbdf1a27227d374bc182bb.png

最后就是下载的过程,单击界面中的“Configuration”按钮,在弹出的对话框中,Boundary Scan的作用是下载程序到 FPGA 中运行;SPI Flash Configuration是将程序固化程序flash 中。

9806474c02409e514e330a11c179a9d1.png

11bded3c73d9fe8888bfa28ac89d4419.png

我们选择下载到FPGA中执行。然后单击Promgram,这样程序就下载到板子中执行了。执行效果见下图:

到这里呢,我们的使用就告一段落,简单来总结下,作为黑金的开发板,配套资源完善,同时PGL12G表现出了国产FPGA的希望,尽管国产FPGA在未来还有好长一段路要走,但是PGL12G也让我们看见国产FPGA的希望,紫光同创于2013年12月正式成立,到20年也仅仅只有7年的发展,与那些FPGA的巨头比较当然是吃亏的,这次紫光同创与黑金合作的开发板,主观感受是面向FPGA的初学者,同时也为我们的FPGA学习之路提供了新的选择。

整体来说PGL12G这块开发板还是很适合初学者入手的,有黑金强大的开发经验和教育背景作为支撑,通过PGL12G开学习FPGA的开发,还是相当不错的。黑金也提供了充足的例程,其中不乏一些高端些的功能,比如透过CMOSSensorOV5640,实现视频数据的采集,再比如通过逻辑单元实现视频数据的边缘检测,通过IP核调用原生的HDMI实现视频的输出等等,整体在学习的角度很全面,基本上由浅入深全部囊括。初学者如果将黑金的资料完整的玩下来,基本上就会对于FPGA会有一个比较深刻的认识。

另外说一些小编自己的感受,整块板卡用下来,无论是板卡的设计,还是开发环境,对于国人习惯来说还是比较友善的。(PS:额除了工程目录不能使用中文名)可以看得出开发环境上紫光同创是上了心的。文档的描述也是十分完善,上手过程会接触到的问题基本都有描述。国产FPGA距离成为FPGA大佬来说,肯定还是有很长的路要走的,但是在走这一段路的路程中,我们可以通过学习了解与紫光同创共同提高进步。

版权声明:本文系电路城原创文章,转载请注明出处!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值