企业库 微信资讯

【从零开始走进FPGA】美好开始——我流啊流啊流

畅学电子    2015/3/9  

点击上方 “ 畅学电子 ” 一键关注,轻松学习电子知识

畅学电子网·订阅号每天更新电子行业技术文章,及单片机最新资讯,随时随地轻松学习

按照基于Windows的语言(C、C++、C#)等编程语言的初学入门教程,第一个历程应该是“Hello World!”的例程。但由于硬件上的驱动难易程度,此例程将在在后续章程中推出。硬件工程师学习开发板的第一个例程:流水灯,一切美好的开始。

本章将会在设计代码的同时,讲解Quartus II软件的使用,后续章节中只讲软件的思想,以及解决方案,不再做过多的累赘描述。

一、Step By Step 建立第一个工程

(1)建立第一个工程,File-New-NewQuartus IIProject,如下图所示,OK。

(2)Next,如下图所示,选择工程目录(不能有空格,中文路径),同时输入工程名与顶层文件名。

(3)若有现成的代码,可以直接选择添加入工程;否则,直接next,进入下一步,如下图所示:

(4)根据自己的硬件设施,选择相应的设备目标器件。

(5)Next,Finish。

二、工程代码设计

1. water_led_design工程文件结构:

如上图所示,工程分为三个模块,分别为:

(1)顶层模块 : 例化各个模块,工程的xx级别文件。

(2)分频模块 : 通过分频得到固定的频率(10Hz)。

(3)LED显示模块: 随固定频率,来操作LED灯。

2. 代码设计

(1)warter_led.v模块设计

a) New-File,新建verilog文件,保存于新建在工程目录下的src文件夹中(只是为了工程文件结构组织的清晰,更善于管理)。如下图所示:

b) 输入代码,定义输入输出接口,如下所示:

module water_led

(

input clk, //global clock 50MHz

input rst_n, //global clock reset

output [5:0] led_data //user led interface

);

endmodule

(2)clk_design.v模块设计

由于系统输入时钟是50Mhz,若以50MHz的速度变换LED等,人眼压根分辨不出来。因此利用分频原理,来对50MHz进行分频,而适应人眼。本模块将50MHz分频至10Hz,人眼分辨的极限是25Hz,因此10Hz能感觉得到(可以随机修改)。Led_en的频率计算公式:clk_led_en = 50_000000/(49_000000+1) = 10Hz,具体代码如下:

module clk_design

(

input clk,

input rst_n,

output led_en

);

reg [22:0] cnt; //49_99999,100ms

parameter LED_CNT = 49_999999;

always@(posedge clk or negedge rst_n)

begin

if(!rst_n)

cnt <= 23'd0;

else if(cnt < LED_CNT)

cnt <= cnt + 1'b1;

else

cnt <= 23'd0;

end

assign led_en = (cnt == 23'd49_99999) ? 1'b1 : 1'b0;

endmodule

模块没有分频产生10Hz的频率,而是生成了10Hz的使能时钟,目的是防止时钟满天飞,使得FPGA内部布局布线紊乱,影响全局功能。虽然如此简单的工程可以不用考虑,但是“习惯了严谨便成为了一种风范”,因此使用使能时钟,来对具体的时序进行操作。具体使能时钟、门控时钟的异同、优劣将会在后续章节中解说。

(3)led_display.v模块设计

根据输入的led_en使能信号,来操作led灯的效果,此处采用最简单的算法——递增进位。代码如下所示:

详见原文:http://www.eeskill.com/article/id/27815

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

如何分享到朋友圈点击右上角 在弹出菜单选择 分享到朋友圈
如何关注 " 畅学电子 "1. 在微信上点击右上角”+" 点击“添加朋友" → 在"查找公众号"里搜索" 畅学电子 "即可查找并关注
2. 搜索微信号" 畅学电子 "也可查找并关注我们
如何查看往期的历史消息点击右上角图标进入"账号资料" → "查看历史消息"
畅学电子订阅号微信名:畅学电子
每天更新电子行业各种知识,及单片机最新资讯,来开启你的视觉盛宴吧
畅学电子服务号微信名:畅学电子
一个新型的知识分享平台,在线查看畅学电子网的最新文章、在线视频等,带你进入电子工程师技术开发学习的世界

==> 前往 www.eeskill.com 学习更多知识!



技术支持:免费b2b网站   [免责申明]   [举报]    立即注册发布信息