模可变计数器设计 (一)实验目的1、 进一步熟悉实验装置和 QuartusⅡ 软件的使用;2、 进一步熟悉和掌握 EDA 设计流程;3、 学习简单组合、时序电路的 EDA 设计;4、 学习计数器中二进制码到 BCD 码的转换技巧;5、 学习实验装置上数码管的输出方法。(二)设计要求完成设计、仿真、调试、下载、硬件测试等环节,在 EDA 实验装置上实现模可变计数器功能,具体要求如下:1、 设置一个按键控制改变模值,按键按下时模为 10-99 之间(具体数值自行确定)的数,没按下时模为 100-199 之间(具体数值自行确定)的数;2、 计数结果用三位数码管十进制显示。(三)主要仪器设备3、 微机1 台4、 QuartusII 集成开发软件1 套5、 EDA 实验装置 1 套(四)实验步骤主要有三个模块1:一个模 20 和模 119 的计数器2:数码管的显示3:BCD 的调整源程序:module count (clk,m,en,rst,a,sel,SG,d); input clk,m,en,rst; output [7:0] SG; output [2:0] sel; output a; (* synthesis, keep *) reg clk1; (* synthesis, keep *) wire [3:0] gw,sw,bw; /*(* synthesis, keep *) */reg [3:0]a; reg [11:0] q; reg [11:0] model; reg [7:0]t,SG; reg [2:0] sel;reg [0:0]d;output [0:0]d; always (posedge clk) begint=cnt+1; if (cnt==200) begin clk1=1'b1; t=0; end else clk1=1'b0; //200 分频,CLK 为数码管扫描频率,CLK1 为计数频率 if (sel<2) sel=sel+1; else sel=0; end //sel 为数码管选择 always (sel) begin case (sel) 0: a=bw; //0 数码管为百位 1: a=sw; //1 数码管为十位 2: a=gw; //2 数码管为个位 default: a=0; endcase case (a) 0:SG<=8'b00111111; 1:SG<=8'b00000110; 2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101; 6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; //8 段译码值 default: SG=8'b11111111; endcase end always (m) if (m) model=12'b0; //模值 20 else model=12'b1; //模值 119 assign gw=q[3:0]; assign sw=q[7:4]; assign bw=q[11:8]; always (posedge clk1,negedge rst) begin if (!rst) q=0; else if (en) begin if (q