FPGA/CPLD实验教程一(点亮LED)
2013-01-19
抽烟的鱼
标签: FPGA CPLD

1. 实验要求及目的:

点亮发光二极管。通过这个实验,熟悉CPLD/FPGA开发软件的使用方法和开发流程及Verilog HDL 的编程方法。通过这个实验可以实际使用一下Quartus II软件,一通百通,下次就不讲那么详细了:)

使用软件:Quartus II 5.0。

2. 硬件原理图:

这个是我自己制作的开发板上的LED的原理图,一共有8个,IO和别的共用的,使用八个LED的时候板上的JP1和JP5全部戴上短接帽,JP2则空出。如果要点亮这些LED,只需要把与其相连接的FPGA管脚输出低电平“0”就可以实现这个功能了。(我焊板子的时候把LED1弄坏了,不能用。)

LED管脚对应的情况如下:

D1------PIN_97

D2------PIN_94

D3------PIN_91

D4------PIN_84

D5------PIN_82

D6------PIN_78

D7------PIN_76

D8------PIN_74

本文均采用输出“0”点亮的模式,以下就不再另外再说明了。

3. 程序设计

(1)利用连续赋值语句assign实现,文件名ledlight1.v

程序代码:

// Light 8 LED

// Designed By Smokingfish @ www.51FPGA.com zhiyuh@163.com

module ledlight1 (LED);

output [7:0] LED;

assign LED=8’b10101010;

endmodule

(2)利用过程赋值语句来实现,文件名ledlight2.v

程序代码:

// Light 8 LED

// Designed By Smokingfish @ www.51FPGA.com zhiyuh@163.com

module ledlight2 (LED);

output [7:0] LED;

reg[7:0] LED;

always

begin

LED=8'b10101010;

end

endmodule

4. 实验步骤

(1)打开Quartus II软件,进入集成开发环境,点击File->New project wizard..新建工程项目ledlight1,直接点击Finish。(也可以在这里选择所用器件,这次我就不这样弄,你可以自己试试,点击Next>,后面我会讲怎么选择芯片的)

(2)点击File->New..在该项目下新建Verilog HDL源程序文件ledlight1.v(或者直接点快捷图标,下图中红色部分),输入上面的源程序代码并保存。

(3)下面选择所用的FPGA器件----EP1C3T144C8,以及进行一些配置。点击Assignments->Device..,出现下面的对话框。面对一堆的器件如何选择呢?有个快捷的办法:

第一步:选择封装——TQFP;

第二步:选择管脚数目——144;

第三步:选择器件速度等级——8。

这下就只有两个选择了,容易吧:)选择EP1C3T144C8,先不要着急ok,还有一些要设置的。看见蓝色那部分没有,点一下。出现下面这个对话框。

点击红色的部分Configuration,出现下面一个对话框,从Configuration Device下拉菜单里面选择EPCS1。

然后再点击红色的部分Unused Pins,选择不需要使用的IO功能。选择As inputs,tri-stated。这个的含义写的很清楚,不需要我多讲了吧:

Reserves all unused pins on the target device in one of three states: as inputs that are tri-stated, as outputs that drive ground, or as outputs that drive an unspecified signal.

点击两次ok,回到主界面。

(4)为工程项目锁定引脚:

点击Assignments->Pins,出现下面的窗口,点击蓝色方,填入LED[0],红色的下拉框里选择PIN_97,以此类推,把LED[0]---LED[7]全部分配好。

分配好之后如下图所示:

(5)编译工程项目:点击Processing->Start Compilation,然后就是编译了,很快就能看到成功的字样,如下图:

(6)仿真:这么简单的一个东西就暂时不需要仿真了,以后再讲这个吧:)

(7)下载目标文件到板子上:点击Tools->Programmer,出现下面这个窗口。选中Jtag模式,并且选中红色部分里面的框框,然后点Start:

下载过程中可以看到Progress进度条的进展:

终于完成了,可以看到板子上的8个LED间隔点亮了(我的第一个灯焊盘坏了,前面说过了)——如下图,高兴吧,原来一切都这么简单,通过这个实验,基本就知道了如何使用Quartus II了,开发的流程也有一个比较清楚的认识,也方便进行以后的实验了。

采用第二种方法编写的源代码的开发流程一样的,大家可以实验一下,不过记得注意,文件夹的名字一定要和工程名一样才行,否则编译是没有办法通过的。

第一次写这么长的教程,贴图把我弄得够戗,还是不熟这些东西啊,以后一定加油,希望大家也能多多支持:)有什么问题和建议也请给我意见和建议,不要给我板砖就行。

以下是网友心灵绿汀提供的VHDL代码,我不会这个,所以也就没有办法说对不对,应该没有问题吧,呵呵:

程序代码:

--lightled1

library ieee;

use ieee.std_logic_1164.all;

entity ledlight1 is

port(led:out std_logic_vector(7 downto 0));

end;

architecture behav of ledlight1 is

begin

led<="10101010";

end;

可能会用到的工具/仪表
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号