|
FPGA入门图文教程(一)LED 基于quartus10.0和FPGA礼物开发板
LED程序对于Verilog HDL就像Hello World程序对于C语言一样,初学者首先应该完成的程序应该就是LED程序。
本实验的软硬件环境:
1 软件Quartus II 10.0 SPI
2 硬件:FPGA礼物开发板 giftFPGA-A3 mini 核心芯片是Cyclone III EP3C5
与单片机相比,FPGA点亮LED更加容易,只需将相应的的引脚输出高电平即可。以下是A3 mini开发板的LED部分电路图。
<center>
LED1-4分别于Cyclone III EP3C5的PIN_34,PIN_38,PIN_39,PIN_42相连,只需根据需要将这四个引脚输出高电平即可。
以下是详细步骤:
打开Quartus II 10.0 SPI软件
<center>
点击工具条上的“新建”标签,如上图所示,
<center>
默认为 “New Quartus II Project”,不用更改,直接点击”OK”;
<center>
直接点击 Next
<center>
此处需要输入工程路径和工程名称,注意:路径不要有中文和空格,工程名不能以数字开头,工程名要与后面Verilog代码的模块名和文件名一致。
<center>
直接点击 Next
<center>
这一步选则FPGA礼物开发板A3 mini使用的器件Cyclone III ,和EP3CE144C8。
后面不用更改,直接点击Finish即可。
再次点击工具条上的“新建“标签。
<center>
选择Verilog HDL File.。
在文件中输入以下代码内容
module led (input CLK, output[3:0] LED);
reg[3:0] led_r;
always @(posedge CLK) led_r=4’b1111;
assign LED=led_r;
endmodule
保存为led.v文件,注意,此处文件名必须为led.v。第一次接触FPGA人的可能对上面的代码不能完全理解,不过没关系,完成几个实验后,自然就理解了。上面代码中CLK为时钟输入,在FPGA礼物开发板中,与EP3C5 PIN_22对应。LED为LED输出,与PIN_34,PIN_38,PIN_39,PIN_42对应。通过上面的代码,几个简单的赋值语句,就可以点亮A3 mini开发板上四个LED.
文件保存后,首先编译以下,看有没有错误。方法是点击工具条上的紫色三角形标签
<center>
接下来需要进行引脚分配,点击下图中标签。
<center>
按下图分配引脚
<center>
重新编译一次。接下来就可以将程序下载到开发板中运行了,点击下图中的标签,
<center>
确保开发板和Usb blaster下载线连接正确,点击Start,开发板上四个LED应该就被点亮了。
<center>
实现点亮LED,下面来实现经典的LED跑马灯程序,你可以先将上面的代码注释掉,方法与C语言相同,单行用 //, 多行用/* */, 将下面的代码输入。
module led (input CLK, output[3:0] LED);
reg[3:0] led_r;
reg[25:0] cnt; //26为计数器
always @(posedge CLK)
begin
cnt<=cnt+1'b1;
if(cnt==26'd50000000) //修改此值,可以改变跑马灯的频率
begin
led_r=led_r<<1;
if(led_r==4'b0000)
led_r<=4'b0001;
cnt<=0;
end
end
assign LED=led_r;
endmodule
上面的代码与第一个代码主要的不同,就是增加了一个计数器和移位运算,我们的FPGA礼物开发板上使用的晶振是50M, 在语句if(cnt==26'd50000000)中,此时跑马灯的频率就是1秒,显得有些慢,可以改为26’d10000000。频率0.2秒。移位运算是将一个四位二进制数(其中三位为零,一位为一)中的一不断的循环左移,这样就实现了跑马灯效果。
<center>
<center>
下载PDF文件保存 点击此处下载 ourdev_642938ASZU3T.pdf(文件大小:785K) (原文件名:1.pdf) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|