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;