版权说明:未经许可,不得转载
一.目的
1.了解FPGA在组合逻辑电路中的实现过程
2.掌握组合逻辑电路的设计方法
3.学习7段数码显示管的使用方法
二.工具
1.Digilent Anvy1 开发板
2.安装ISE Design Suite软件的pc机一台
3.USB数据线一根
三.简单上手实验内容
1.使用开关SW0~SW6完成对6个7段显示器的控制。
1)SW3~SW0控制显示的数据,从0到F;
2)SW6~SW4控制用六个7段数码管,000对应7SD-1,001对应7SD-2,一次类推,101对应7SD-6,其他情况下都不显示。
四.实验原理
详细原理见FPGA原理2
这里给出相关引脚信息,见下图:
五.实验步骤级结果分析
设计过程:
SW3~SW0可对应4位2进制总共16位数,正好是0到F。
并且0-F的7段数码管对应信息如下(1代表亮,0代表暗):
0: 7'b1111110;
1: 7'b0110000;
2: 7'b1101101;
3: 7'b1111001;
4: 7'b0110011;
5: 7'b1011011;
6: 7'b1011111;
7: 7'b1110000;
8: 7'b1111111;
9: 7'b1111011;
'hA: 7'b1110111;
'hB: 7'b0011111;
'hC: 7'b1001110;
'hD: 7'b0111101;
'hE: 7'b1001111;
'hF: 7'b1000111;
由此,我们就可以写出源程序:
.v文件:
module test21(
input [3:0] x,
input [2:0] y,
output reg [0:6] z1,
output reg [5:0] z2
);
always@(*)
begin
case(x)
0:z1=7'b1111110;
1:z1=7'b0110000;
2:z1=7'b1101101;
3:z1=7'b1111001;
4:z1=7'b0110011;
5:z1=7'b1011011;
6:z1=7'b1011111;
7:z1=7'b1110000;
8:z1=7'b1111111;
9:z1=7'b1111011;
'hA:z1=7'b1110111;
'hB:z1=7'b0011111;
'hC:z1=7'b1001110;
'hD:z1=7'b0111101;
'hE:z1=7'b1001111;
'hF:z1=7'b1000111;
default z1=7'b1111110;
endcase
case(y)
0:z2=6'b000001;
1:z2=6'b000010;
2:z2=6'b000100;
3:z2=6'b001000;
4:z2=6'b010000;
5:z2=6'b100000;
default z2=6'b000001;
endcase
end
endmodule
.ucf文件:
NET x<0> LOC=V5;
NET x<1> LOC=U4;
NET x<2> LOC=V3;
NET x<3> LOC=P4;
NET y<0> LOC=R4;
NET y<1> LOC=P6;
NET y<2> LOC=P5;
NET z1<0> LOC=AA21;
NET z1<1> LOC=AA22;
NET z1<2> LOC=Y22;
NET z1<3> LOC=N15;
NET z1<4> LOC=AB19;
NET z1<5> LOC=P20;
NET z1<6> LOC=Y21;
NET z2<0> LOC=P16;
NET z2<1> LOC=M17;
NET z2<2> LOC=N16;
NET z2<3> LOC=P19;
NET z2<4> LOC=AA20;
NET z2<5> LOC=AB21;
实验结果截图如下:
六.实验总结
1.本实验需要注意实验所用的Digilent Anvy1开发板上数码管为共阴极数码管还是共阳极数码管。
2.实验中对7段数码管编码的时候,要注意[6-0]对应的是g-a。
由于笔者的知识和水平有限,文章中不足之处在所难免,恳请各位读者赐正。
---------------------------------@weekdawn 版权所有--------------------------------------