模可变计数器设计(Verilog语言)解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模可变计数器设计
(一)实验目的
1、进一步熟悉实验装置和Quartus n软件的使用;
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] cnt,SG;
reg [2:0] sel;
reg [0:0]d;
output [0:0]d;
always @(posedge clk) begin cnt=cnt+1;
if (cnt==200) begin clk1=1'b1; cnt=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'b000000100000; // 模值20
else model=12'b000100011001; // 模值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 begin if (gw==9) begin q=q+7; if (sw==9) q=q+96; end //BCD 调整 else q=q+1; end else q=0; end end always @(q) if(qvmodel) d<=0; else d<=1; endmodule 波形仿真: iimulatioin Waveforms Simulation sode : Tilling A. B Master Time Sar 19L9 ns ■[POinler: 39.3^1 us Imeival: 39.32 us Stan : End: he. 14 us 37.. 42 UH 33. 7 us 39.9B LLS 4k 26 us 54 us 4X B2 us P 1 i 1 1 1 ■ Clk1是计数频率,每来一个 clk1信号q 计数一次 Simula ion Wa^efor™ Sinulatlon lode: Tiling 如图所rst=1有效时开始计数 clk 为扫描频率 sel=0时数码管显示百位 a=0 sel=1时数码管显示十位 a=1 sel=2时数码管显示个位 a=3 m=1模20计数器 m=0模119计数器 管脚分配: * I HI I k * Jij 19.3ns J h Roirter. 6fl.H us Interval. 68.09 UE Slarl End. lane <>0 □ S& elk <>1B clkl 曲+ 0-L 玮t T IF L en ^1. n CH- 1±1 sei 尬1. 田Q B i 辭 El 勿 u 3. dM 68.14 us 63.16 us ■ 6E. 18 us I 63.22 us 68. 24 us W [1] X [3]连[01 X [1] X [3]迪[0] X [1] X [3] ® [o] X [1] X [3]址[0] II : MasierTiiTiB Bar. 68.12 us III