原创 【FPGA礼物教程】完成你的第一FPGA项目

2011-6-18 17:04 2312 4 4 分类: FPGA/CPLD

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部分电路图。

1306645329_edbfa8dd.jpg

 

LED1-4分别于Cyclone III EP3C5PIN_34PIN_38PIN_39PIN_42相连,只需根据需要将这四个引脚输出高电平即可。

以下是详细步骤:

打开Quartus II 10.0  SPI软件

1306645369_e796bb3f.jpg

点击工具条上的“新建”标签,如上图所示,

1306645393_3dbfb5ea.jpg

默认为 “New Quartus II Project”,不用更改,直接点击”OK”;

1306645440_562e7a2a.jpg

 

直接点击 Next

1306645468_14d3f694.jpg

直接点击 Next

 

 

1306645531_5693fd70.jpg

 这一步选则FPGA礼物开发板A3 mini使用的器件Cyclone III ,EP3CE144C8

后面不用更改,直接点击Finish即可。

        再次点击工具条上的“新建“标签。

1306645592_41a43e91.jpg

选择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对应。LEDLED输出,与PIN_34PIN_38PIN_39PIN_42对应。通过上面的代码,几个简单的赋值语句,就可以点亮A3 mini开发板上四个LED.

文件保存后,首先编译以下,看有没有错误。方法是点击工具条上的紫色三角形标签。

1306645614_b7121014.jpg

接下来需要进行引脚分配,点击下图中标签。

1306645633_7f978f01.jpg

 按下图分配引脚

重新编译一次。接下来就可以将程序下载到开发板中运行了,点击下图中的标签,1306645660_412c6655.jpg

重新编译一次。接下来就可以将程序下载到开发板中运行了,点击下图中的标签,

1306645693_420a5215.jpg

 确保开发板和Usb blaster下载线连接正确,点击Start,开发板上四个LED应该就被点亮了。

1306645720_cebdce62.jpg

实现点亮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秒。移位运算是将一个四位二进制数(其中三位为零,一位为一)中的一不断的循环左移,这样就实现了跑马灯效果。

http://www.gifteks.com/index.php/cyclone3/ep3c40-fpga

1306645773_35a137e3.jpg


冠方科技  http://www.gifteks.com


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条