查看: 937|回复: 0

[BeMicro Max10 FPGA开发板评测]-第一个程序

[复制链接]

该用户从未签到

发表于 2016-10-20 08:47:49 | 显示全部楼层 |阅读模式
分享到:
非常感谢爱板网给的这次机会,我是从事单片机开发的工程师,从8位单片机到32位的单片机,对fpga向往已久,因为对实时性要求较高的LCD驱动和无感电机驱动如果采用fpga开发应该效果更好,希望能在实际产品开发中能够应用到fpga,但总体感觉fpga开发门槛较高,应用到产品成本也会提高,但也会让产品上一个档次。
      首先是开发环境:Quartus Prime 16.0 Lite Edition,之所以用它是因为免费,体积相对小巧。我开发单片机采用keil C,体积不过百兆,没想到fpga开发的pro版本的安装程序达到了约15G,让我感觉压力大增,因为里面的内容肯定很多,要学的东西也多呀,还好有免费的,虽然功能简化了,那就从简单的开始。开发板当然是:BeMicro Max10 FPGA开发板。
     下载和安装略过,注意要安装板载的USB-Blaster驱动程序。
      运行Quartus Prime 16.0 Lite Edition,点击file菜单的New Project Wizard。

选择项目名称,这里我用LED2为名,因为要点亮开发板上的LED灯。

点击下一步,

选择project template,这里为了简单,直接利用官方提供的基于BeMicro Max10 FPGA的模板,因为模板里有开发板的端口定义,可以简化设计,免除端口定义的麻烦,还免去了选择芯片的麻烦。点击下一步进入到Design Templates界面,按照下图选择Rest Factory Setting LED flash - BeMicro 。注意如果Quartus Prime 16.0 Lite Edition第一次运行,模板是空的,需要点击界面下方链接在网站安装。

点击完成。
在项目文件栏增加了两个文件

且在factory_reset_top.v自动产生下列代码
module factory_reset_top(clk, reset_n, LED);input clk;input reset_n;output [7:0] LED;reg         [26:0]  counter;reg         [5:0]   PWM_adj;reg   [6:0]   PWM_width;reg   [7:0]   LED;always @(posedge clk or negedge reset_n)        begin                if(~reset_n)                        begin                                counter <= 0;                                LED[0] <= 0;                        end                else begin                                counter   <= counter+27'h0000001;                                PWM_width <= PWM_width[5:0]+ PWM_adj;                                if(counter[26])                                        begin                                                PWM_adj <= counter[25:20];                                        end                                else begin                                                PWM_adj <= ~ counter[25:20];                                         end                                LED[0] <= PWM_width[6];                                LED[1] <= PWM_width[6];                                LED[2] <= PWM_width[6];                                LED[3] <= PWM_width[6];                                LED[4] <= PWM_width[6];                                LED[5] <= PWM_width[6];                                LED[6] <= PWM_width[6];                                LED[7] <= PWM_width[6];                         end        endendmodule代码的意思是通过时间改变8个LED灯亮和灭的时间,与单片机的PWM调整亮度的原理一样。
点击工具栏按钮进行编译。

从编译结果可以看出没有错误。点击assignments菜单下的Pin Planner

进入端口定义

从上图下面的端口定义可以看出8个LED灯已经按照开发板的端口状态定义好了。并且定义两个非常重要的端口clk和reset_n,如果漏掉了这两个端口程序将无法运行。
如果修改端口了定义,需要重新编译工程。
左后就是写程序了,点击工具栏的Programmer按钮

如上图1.选择USB-Blaster,2.点击Add file,3.选择项目文件output_files文件夹下的LED2.pot文件,4.点击start按钮开始下载程序到MAX 10中。
观看效果:可以看到8个灯明暗变化,可惜不知道怎么插入视频。
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-16 14:58 , Processed in 0.113406 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.