【赛灵思FPGA】[原创]基于Xilinx FPGA的静态LED显示
0赞一直有朋友给我交流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;
这样就好了,可以按要求显示你的内容了,很多朋友觉得神奇,周末愉快。