文档介绍:南昌大学实验报告
学生姓名: 胡文松学号:6103413007 专业班级:生物医学工程131班
实验类型:□验证□综合□设计□创新实验日期: 实验成绩:___
实验一模可变计数器设计
实验目的
进一步熟悉实验装置和QuartusⅡ软件的使用;
进一步熟悉和掌握EDA设计流程;
学习简单组合、时序电路的EDA设计;
学习计数器中二进制码到BCD码的转换技巧;
学习实验装置上数码管的输出方法。
设计要求
完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下:
设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定)的数,没按下时模为100-199之间(具体数值自行确定)的数;
计数结果用三位数码管十进制显示。
主要仪器设备
微机 1台
QuartusII集成开发软件 1套
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)
t+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<model)
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(q<model) d<=0;
else d<=1;
endmodule
波形仿真:
Clk1是计数频率,每来一个clk1信号q计数一次
如图所示:rst=1有效时开始计数 clk为扫描频率
sel=0时数码管显示百位a=0
sel=1时数码管显示十位a=1
sel=2时数码管显示个位a=3
m=1 模20计数器
m=0 模119计数器
管脚分配:
SG[0] PIN_F13
SG[1] PIN_F14
SG[2] PIN_F15
SG[3] PIN_E15
SG[