首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用Spartan-3e Starter Kit Board实现LED花样流水灯

用Spartan-3e Starter Kit Board实现LED花样流水灯

流水灯似乎是个学习嵌入式编程的永恒实验,任何一种开发板的配套程序,第一个肯定是点亮一个LED,接下来则是流水灯。从汇编到C,从AT89C51到mega16,我实现了很多流水灯。今天又用Verilog HDL写了一个(想起一个关于程序员的冷笑话,书法家:我会用N种字体写毛泽东的词。程序员:我会用N种语言写"Hello world!" = =)。思路比较简单,时钟分频后用case语句驱动LED,实现多种状态的变化。本文因作者属于初学水平,技术含量不高,高手路过即可,愿意的话也可指点一二。

硬件环境:Xilinx Spartan-3e Starter Kit Board
软件环境:Xilinx ISE 8.2i
编程语言:Verilog HDL

实验过程:

打开ISE,新建一个工程。取名为led_variable,点击next。

选择正确的器件,并一路next到finish。在工作区里右键-new source,选择Verilog Module,命名为led_variable,一路next到finish。

在代码编辑区里输入Verilog源码,具体源码见文后。

接下来,综合,实现,无错误之后配置引脚。参考Spartan-3E Starter Kit Board User Guide.pdf


分配好引脚之后就可以生成编程文件了。

将生成的.bit文件烧录到FPGA中,就可以看到绚丽的彩灯了。
附件:
Verilog HDL源程序
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:    19:49:41 01/09/2011
// Design Name:
// Module Name:    led_variable
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module led_variable(clk_50MHz, led);
    input clk_50MHz;
    output[7:0] led;
    reg [7:0] led;
    reg [22:0] count;
    reg [4:0] state;
    wire clk;

    always @ (posedge clk_50MHz)
     count<=count+1'b1;
    assign clk=count[22];//division

    always @ (posedge clk)
     begin
     case(state)
     5'b00000: led=8'b11111111;
     5'b00001: led=8'b00000000;
     5'b00010: led=8'b01010101;
     5'b00011: led=8'b00000000;
     5'b00100: led=8'b10101010;
     5'b00101: led=8'b00000000;
     5'b00110: led=8'b00000001;
     5'b00111: led=8'b00000010;
     5'b01000: led=8'b00000100;
     5'b01001: led=8'b00001000;
     5'b01010: led=8'b00010000;
     5'b01011: led=8'b00100000;
     5'b01100: led=8'b01000000;
     5'b01101: led=8'b10000000;
     5'b01110: led=8'b01000000;
     5'b01111: led=8'b00100000;
     5'b10000: led=8'b00010000;
     5'b10001: led=8'b00001000;
     5'b10010: led=8'b00000100;
     5'b10011: led=8'b00000010;
     5'b10100: led=8'b00000001;
     5'b10101: led=8'b00000000;
     5'b10110: led=8'b11111111;
     5'b10111: led=8'b01111110;
     5'b11000: led=8'b00111100;
     5'b11001: led=8'b00011000;
     5'b11010: led=8'b00000000;
     5'b11011: led=8'b00011000;
     5'b11100: led=8'b00111100;
     5'b11101: led=8'b01111110;
     5'b11110: led=8'b11111111;
     5'b11111: led=8'b00000000;
     endcase
    state=state+1;
   end
endmodule
返回列表