小脚丫板载的数码管是7段数码管(如果包括右下的小点可以认为是8段),它分别由a、b、c、d、e、f、g位段和表示小数点的dp位段组成,见图1。
小脚丫的板载数码管为7段共阴极数码管,可以显示数字0-9以及字母A-F共计16种选择。因此,如果我们需要数码管能显示所有的16种选择,需要至少4位输入码(24=16)。表1列出了各个数码管字符所对应的LED灯段位。
图2标注了小脚丫板载的两个数码管的各LED段位以及小脚丫上所对应的引脚。其中SEG_DIP为公共端,因此在共阴极数码管的设计中需要接低电平。可以看出,每一个数码管都含有9个引脚,因此每一个字符的显示都需要由一个9位的输出信号来实现。
module segment
(
input wire[3:0] seg_data_1, //四位输入数据信号,可通过4个拨码开关控制
input wire[3:0] seg_data_2, //四位输入数据信号,可通过4个按键开关控制
output wire[8:0] segment_led_1, //数码管1,MSB~LSB =SEG,DP,G,F,E,D,C,B,A
output wire[8:0] segment_led_2 //数码管2,MSB~LSB =SEG,DP,G,F,E,D,C,B,A
);
reg[8:0] seg [15:0]; //存储7段数码管译码数据
initial
begin
seg[0]=9'h3f; // 0
seg[1]=9'h06; // 1
seg[2]=9'h5b; // 2
seg[3]=9'h4f; // 3
seg[4]=9'h66; // 4
seg[5]=9'h6d; // 5
seg[6]=9'h7d; // 6
seg[7]=9'h07; // 7
seg[8]=9'h7f; // 8
seg[9]=9'h6f; // 9
seg[10]=9'h77; // A
seg[11]=9'h7C; // b
seg[12]=9'h39; // C
seg[13]=9'h5e; // d
seg[14]=9'h79; // E
seg[15]=9'h71; // F
end
assign segment_led_1 = seg[seg_data_1]; // 将对应字符导入数码管1并显示
assign segment_led_2 = seg[seg_data_2]; // 将对应字符导入数码管2并显示
endmodule
当我们指定用拨码开关SW1-SW4来控制左边数码管,按键开关K1-K4来控制右侧数码管,此时如果开关的状态分别如下图所示,数码管应该显示什么字符?
而为了帮助更多老师快速上手FPGA的使用和教学,在即将到来的寒假,我们针对高校从事教学/实验室一线工作的教师,推出一个为期5天(2021年1月25日-1月29日)的FPGA设计及应用快速培训,通过实用性非常强的典型案例动手实践,帮助大家快速、有效地上手FPGA,并能够在未来的教学、实践、电赛中大显身手,硬禾实战营也将成为参加培训的老师们长期的教学后援。
详情请见这里或者今天公众号的二条。期待在美丽的苏州跟您一起探讨FPGA和教学实践的结合。
END
硬禾学堂
硬禾团队一直致力于给电子工程师和相关专业的同学,带来规范的核心技能课程,帮助大家在学习和工作的各个阶段,都能有效地提升自己的职业能力。
硬禾学堂
我们一起在电子领域探索前进
关注硬禾服务号,随时直达课堂
点击阅读原文报名参加高校教师培训班