差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
比赛计分系统设计 [2018/10/22 14:55] anran [实验原理] |
比赛计分系统设计 [2021/01/06 23:04] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====比赛计分系统设计===== | + | ### 比赛计分系统设计 |
- | ----- | + | |
====实验任务==== | ====实验任务==== | ||
行 206: | 行 206: | ||
===系统总体实现=== | ===系统总体实现=== | ||
+ | 按键消抖模块我们前面基础数字电路实验中详细介绍过,这里我们直接调用消抖模块,记分器逻辑部分其实就是对按键按动次数计数,输出0~999之间的BCD码制数据,这里也不再赘述,最后例化数码管模块将两队的比分数据显示出来。最后显示的数据为000~999,本实验例程中为了显示最小有效数据位,增加了将最高位为0的数据位不显示的设计,例如当分数为5分时,数码管本来会显示005,现在控制高两位的00不显示,只显示最低位5。 | ||
+ | 显示控制程序实现如下: | ||
+ | <code verilog> | ||
+ | wire [7:0] dat_en; //控制数码管点亮 | ||
+ | assign dat_en[7] = 1'b0; | ||
+ | assign dat_en[6] = red_seg[11:8]? 1'b1:1'b0; | ||
+ | assign dat_en[5] = red_seg[11:4]? 1'b1:1'b0; | ||
+ | assign dat_en[4] = 1'b1; | ||
+ | |||
+ | assign dat_en[3] = 1'b0; | ||
+ | assign dat_en[2] = blue_seg[11:8]? 1'b1:1'b0; | ||
+ | assign dat_en[1] = blue_seg[11:4]? 1'b1:1'b0; | ||
+ | assign dat_en[0] = 1'b1; | ||
+ | </code> | ||
+ | |||
+ | 数码管显示模块例化 程序实现如下: | ||
+ | <code verilog> | ||
+ | //segment_scan display module | ||
+ | Segment_scan u4 | ||
+ | ( | ||
+ | .clk (clk ), //系统时钟 12MHz | ||
+ | .rst_n (rst_n ), //系统复位 低有效 | ||
+ | .dat_1 (0 ), //SEG1 显示的数据输入 | ||
+ | .dat_2 (red_seg[11:8] ), //SEG2 显示的数据输入 | ||
+ | .dat_3 (red_seg[7:4] ), //SEG3 显示的数据输入 | ||
+ | .dat_4 (red_seg[3:0] ), //SEG4 显示的数据输入 | ||
+ | .dat_5 (0 ), //SEG5 显示的数据输入 | ||
+ | .dat_6 (blue_seg[11:8] ), //SEG6 显示的数据输入 | ||
+ | .dat_7 (blue_seg[7:4] ), //SEG7 显示的数据输入 | ||
+ | .dat_8 (blue_seg[3:0] ), //SEG8 显示的数据输入 | ||
+ | .dat_en (dat_en ), //数码管数据位显示使能,[MSB~LSB]=[SEG1~SEG8] | ||
+ | .dot_en (8'b0001_0001 ), //数码管小数点位显示使能,[MSB~LSB]=[SEG1~SEG8] | ||
+ | .seg_rck (seg_rck ), //74HC595的RCK管脚 | ||
+ | .seg_sck (seg_sck ), //74HC595的SCK管脚 | ||
+ | .seg_din (seg_din ) //74HC595的SER管脚 | ||
+ | ); | ||
+ | </code> | ||
+ | |||
+ | 综合后的设计框图如下: | ||
+ | |||
+ | {{:5-RTL设计框图.png?800|RTL设计框图}} | ||
====实验步骤==== | ====实验步骤==== | ||
行 220: | 行 261: | ||
====实验现象==== | ====实验现象==== | ||
+ | |||
+ | 将程序加载到FPGA开发平台,底板数码管左边4位为红队比分,右边4位为蓝队比分,初始都为0分,核心板K3按键为红队加分按键,核心板K4按键为蓝队加分按键,按动K3、K4按键,观察红队和蓝队比分变化。 | ||
+ | |||
+ | ====相关资料==== | ||
+ | |||
+ | {{:sn74hc595.pdf|SN74HC595芯片资料}} |