1、实验名称数码管扫描显示实验时间实验地点实验设备号一、实验程序设计分工如下:每个人单独完成一个大实验。第 23 个实验:冯冠玺第 18,19 个实验:郑凯各模块示意图:一分频器模块二显示模块三计数器模块总模块:实验程序源代码:module eighteen(input StartStop,input clk,input _clr,output 3:0AN,output 7:0Seg); wire 30:0counter; /时钟计数器wire c0,c1,c2,c3;/进位wire 15:0Data;/保存需要显示的数字,每 4 位一个数码管/startstop:自增与否Fdiv fdiv(cl
2、k,counter);SHOW show(Data,counter19:18,AN,Seg);Adder ad0(_clr,StartStop,counter25,Data3:0,c0); /第一个 clk 来临的时候,即 counter25=1 时,计数一次,又隔了一个 counter24,变为 0,再一个变为 1,再计数Adder ad1(_clr,StartStop,c0,Data7:4,c1); Adder ad2(_clr,StartStop,c1,Data11:8,c2); Adder ad3(_clr,StartStop,c2,Data15:12,c3); endmodule/分
3、频模块module Fdiv(input CP,output 30:0counter); reg 30:0counter=301b0; always(posedge CP)begincounter=counter+1b1;end endmodule/显示模块module SHOW(input 15:0data,input 1:0Bit_Sel,output 3: reg 3:0AN; /板子上 4 个数码管的编号reg 7:0Seg;0code0:15=8b00000011,/二维数组记录数码管数字显示码8b10011111,b00100101,b00001101,b10011001,b010
4、01001,b01000001,b00011111,b00000001,b00001001,b00010001,b11000001,b01100011,b10000101,b01100001,b01110001;always (Bit_Sel) /Bit_Sel 控制每个数码管的亮起时间case(Bit_Sel)0:AN=4b0111;/data 保存需要显示的数字,每 4 位一个数码管Seg=codedata15:12;/高位数码管end 1:b1011;/第二个数码管亮起Seg=codedata11:8;end 2:b1101;Seg=codedata7:4; end3:b1110;=co
5、dedata3:0;endcase二、仿真波形/计数模块module Adder(input _CLR,input startstop,input CLK,output reg3:0Q,output reg CO); always (negedge _CLR or posedge CLK)if(_CLR=0)CO=1b0;Qb0000;endelse if(startstop) beginif(Q=4b1001)else=Q+1三、电路图四、引脚配置(约束文件)NET AN3 LOC = P17; NET AN2 LOC = P18;AN1 LOC = N15;AN0 LOC = N16;Se
6、g7 LOC = T17;Seg6 LOC = T18;Seg5 LOC = U17;Seg4 LOC = U18;Seg3 LOC = M14;Seg2 LOC = N14;Seg0 LOC = M13;Seg1 LOC = L14;_clr LOC = T5;clk LOC = V10;StartStop LOC = V8;五、思考与探索1. 一开始并不知道为什么要设 counter 这个变量,而且不懂显示模块里为什么要用到counter19:18,后来仔细一步步根据 clk 的传入推导得知 counter19:18是保证每个数码的刷新显示时间,以确保人眼能够同时看到 4 个数码管同时亮起。2. 停止计数了;4 个点均亮;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1