打印
[CPLD]

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

[复制链接]
1656|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
晴天玉林|  楼主 | 2012-5-12 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
流水灯似乎是个学习嵌入式编程的永恒实验,任何一种开发板的配套程序,第一个肯定是点亮一个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

相关帖子

沙发
paopaow| | 2012-5-12 16:25 | 只看该作者
楼主这个是您自己写的嘛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

16

帖子

0

粉丝