前言:
本文主要介绍了EDA原理与应用这门课程的相关实验及代码。使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6。
(一)实验目的
(1)进一步熟悉EDA开发板和QuartusⅡ软件的使用方法。
(2)学习静态数码管的使用和7段数码显示译码器设计;
(3)掌握时钟在时序电路中的作用;
(4)掌握分频电路的实现方法。
(二)实验要求
设计模可变计数器,可任选模的大小(例模15、模115),实验要求:
(1)设置一位控制位M,要求M=0:模X计数;M=1:模Y计数;
(2)计数结果用3位数码管显示,显示BCD码;
(3)给出此项设计的仿真波形;
(4)选择实验电路验证此计数器的功能。
设置涉及2个开关和一个按键,一个开关控制改变模值,另一开关作为使能控制,按键作为异步清0。
(三)实验程序
module CNT(
input rst, //异步置位-低电平起效
input en, //使能
input m, //模转换
input clk,
output reg [6:0] SG0, //数码管
output reg [6:0] SG1,
output reg [6:0] SG2,
output reg [6:0] cnt_count,
output reg led
);
wire [3:0] bw; //百位
wire [3:0] sw; //十位
wire [3:0] gw; //个位
assign bw = cnt_count / 100;
assign sw = cnt_count % 100 / 10;
assign gw = cnt_count % 10;
reg [30:0] cnt;
reg clk1;
//分频器
//仿真
always @(posedge clk)
begin cnt=cnt+1;
if(cnt>1) begin clk1=1'b1; cnt=0;end
else clk1=1'b0;
end
//跑板子,50MHZ-49999999
/*
always @(posedge clk)
begin cnt=cnt+1;
if(cnt>49999999) begin clk1=1'b1; cnt=0;end
else clk1=1'b0;
end
*/
//计数
always @(negedge clk1 or negedge rst)
begin
if(!rst)
cnt_count <= 7'd0;
else if (en)
begin
if(m) //m=1-120模值
begin
if(cnt_count <7'd120)
begin
cnt_count <= cnt_count + 7'd1;
led<=1'b0;
end
else
begin
cnt_count <= 7'd0;
led<=1'b1;
end
end
else //m=0-20模值
begin
if(cnt_count <7'd20)
begin
cnt_count <= cnt_count + 7'd1;
led<=1'b0;
end
else
begin
cnt_count <= 7'd0;
led<=1'b1;
end
end
end
end
//数码管显示
always @(posedge clk1 or negedge rst)
begin
if(!rst)
begin
SG0 <= 7'b1000000;
SG1 <= 7'b1000000;
SG2 <= 7'b1000000;
end
else
begin
case (gw)
0:SG0<=7'b1000000; 1:SG0<=7'b1111001;
2:SG0<=7'b0100100; 3:SG0<=7'b0110000;
4:SG0<=7'b0011001; 5:SG0<=7'b0010010;
6:SG0<=7'b0000010; 7:SG0<=7'b1111000;
8:SG0<=7'b0000000; 9:SG0<=7'b0010000;
default: SG0<=7'b1111111;
endcase
case (sw)
0:SG1<=7'b1000000; 1:SG1<=7'b1111001;
2:SG1<=7'b0100100; 3:SG1<=7'b0110000;
4:SG1<=7'b0011001; 5:SG1<=7'b0010010;
6:SG1<=7'b0000010; 7:SG1<=7'b1111000;
8:SG1<=7'b0000000; 9:SG1<=7'b0010000;
default: SG1<=7'b1111111;
endcase
case (bw)
0:SG2<=7'b1000000; 1:SG2<=7'b1111001;
default : SG2<=7'b1111111;
endcase
end
end
endmodule
(四)管脚分配
Input
clk AF14 en AB12-S0
m AF9-S2 rst AC12-S1
Output
cnt_led1 数码管0 cnt_led3 数码管2
cnt_led2 数码管1 led Y21-led9