snifer

【赛灵思FPGA】[原创]基于Xilinx FPGA的静态LED显示

0
阅读(14992)

一直有朋友给我交流PGA显示的问题,我也做过一点东西,把这个小东西写出来,希望能让大家更贴切的理解现实的部分细节。

亮点:通过设计控制静态LED显示,掌握组合逻辑设计方法;

通过设计控制静态LED显示,掌握静态LED的显示原理。

利用FPGA芯片,用verilog语言编写逻辑,控制静态LED显示数字。

静态LED显示的原理框图如下:

静态LED的显示,由CLK控制数据,在CLK上升沿,将SDA送出的数据打入LED中,高位顺次往上移,直至最高位为止。由FPGA产生CLK来控制SDA的送出,将要显示的LED段码值串行打入LED中。

1.使用Xilinx XC2S200型FPGA器件设计实现

2.使用电子EDA实验开发系统的通用IO口,将静态LED的段码值由高往低送。

3.使用Xinlix ISE 6.3软件进行Verilog HDL开发。

步骤

1.在软件中,从菜单打开iMAPCT,在JTAG菜单中选择StaticLED.bit文件,并将Multi-Device JTAG Chain 选项选定,运行Configu+re将程序写入器件中。

2.按照为器件分配的引脚进行正确连线,将输入引脚RST连接按键上,将输出引脚连接到静态LED的DATA和CLK信号上,系统时钟输入连1KHZ,再进行测试。

源代码

1.Verilog源代码,LED_S.v

module LED_S(rst, clk_in, synclk, data);

input rst, clk_in;

output synclk;

output data;

reg synclk, data;

reg [3:0] i,j;

reg [7:0] count;

reg [3:0] num[5:0];

reg [7:0] temp;

parameter ZERO = 8'b11111100, ONE = 8'b01100000, TWO = 8'b11011010;

parameter THREE = 8'b11110010, FOUR =8'b01100110;

parameter FIVE = 8'b10110110, SIX = 8'b10111110, SEVEN =8'b11100000;

parameter EIGHT = 8'b11111110, NINE = 8'b11110110, BLANK = 8'b00000000;

always @(posedge clk_in or negedge rst)

begin

if (!rst)

begin

count = 0;

synclk = 1;

num[0] = 0;

num[1] = 1;

num[2] = 2;

num[3] = 3;

num[4] = 4;

num[5] = 5;

end

else

begin

if (count < 96)

begin

synclk = ~synclk;

count = count + 1;

end

else

begin

synclk = synclk;

count = count;

end

end

end

always @(negedge synclk or negedge rst)

begin

if (!rst)

begin

i = 0;

j = 0;

end

else

begin

case (num[i])

0 : temp = ZERO;

1 : temp = ONE;

2 : temp = TWO;

3 : temp = THREE;

4 : temp = FOUR;

5 : temp = FIVE;

6 : temp = SIX;

7 : temp = SEVEN;

8 : temp = EIGHT;

9 : temp = NINE;

//default temp = BLANK;

endcase

case (j)

0 : data = temp[0];

1 : data = temp[1];

2 : data = temp[2];

3 : data = temp[3];

4 : data = temp[4];

5 : data = temp[5];

6 : data = temp[6];

7 : data = temp[7];

//default data = 0;

endcase

if (j == 7)

begin

i = i + 1;

j = 0;

end

else

j = j + 1;

end

end

endmodule

2.引脚分配源代码,LED_S.ucf

net rst loc = p57;#1khz

net clk_in loc = p80;

net synclk loc = p205;

net data loc = p203;

这样就好了,可以按要求显示你的内容了,很多朋友觉得神奇,周末愉快。

Baidu
map