先说大概,通过FPGA让按键控制数码管的显示。
quartus ii的使用随便找本书就行了,网上也有图片示例的操作,这就不说了。我用的书《FPGA应用开发入门典型实例》。
让数码管显示,我还是51单片机的思想,来个输入,再来个输出控制。先从简单的开始
从网上复制过来一个程序:
/*
共阳极七段数码管的译码电路,输入要求显示的数字,输出七段码的译码信号
*/
`timescale 1ns/1ns
module SEG7_LUT(Dig_in,Seg_o);
input[3:0] Dig_in;
output reg[6:0] Seg_o;
always@(Dig_in)
begin
case(Dig_in)
4'h0: Seg_o=7'b1000000; // -----
4'h1: Seg_o=7'b1111001; // | |
4'h2: Seg_o=7'b0100100; // | |
4'h3: Seg_o=7'b0110000; // -----
4'h4: Seg_o=7'b0011001; // | |
4'h5: Seg_o=7'b0010010; // | |
4'h6: Seg_o=7'b0000010; // -----
4'h7: Seg_o=7'b1111000;
4'h8: Seg_o=7'b0000000;
4'h9: Seg_o=7'b0011000;
default: Seg_o=7'b1111111;
endcase
end
endmodule
来源:http://bbs.socvista.com/archiver/?tid-3353.html
根据我自己买的那个开发板,上有四个按键,和几个数码管输出,小改了一下:
`timescale 1ns/1ns
module led7(Dig_in,Seg_o,Seg_s);
input[3:0] Dig_in;
output reg[6:0] Seg_o;
output reg Seg_s; //这个是用来控制位选的,这个地方先显示一位(做起来再说^_^)
always@(Dig_in)
begin
Seg_s<=0;
case(Dig_in)
4'h0: Seg_o=7'b1000000; // -----
4'h1: Seg_o=7'b1111001; // | |
4'h2: Seg_o=7'b0100100; // | |
4'h3: Seg_o=7'b0110000; // -----
4'h4: Seg_o=7'b0011001; // | |
4'h5: Seg_o=7'b0010010; // | |
4'h6: Seg_o=7'b0000010; // -----
4'h7: Seg_o=7'b1111000;
4'h8: Seg_o=7'b0000000;
4'h9: Seg_o=7'b0011000;
default: Seg_o=7'b1011101;
endcase
end
endmodule
选好引脚,通过编译,按着书上Tools-->Programmer设置好后,下载进我的开发板,出了效果OK