实验一:基本逻辑门实验
一、目的和要求
1、初步掌握FPGA的编程方法;
2、初步掌握verilogHDL语言的语法;
3、初步掌握Quartus II软件的用法;
二、实验内容
编写程序实现输入a,b,
输出out1为a与b,
输出out2为a或b,
输出out3为a异或b,
输出out4为a同或b,
输出out5为~a与~b,
输出out6为~a或~b;
三、实验步骤
1、安装Quartus II软件;
2、建立Quartus II工程;
3、编写verilogHDL程序;
4、查看生成的结果;
四、实验结论
(把生成的RTL视图画上)
五、附录
(写verilogHDL程序)
实验二:组合逻辑实验
一、目的和要求
1、进一步掌握verilogHDL语言的语法;
2、掌握verilog的组合逻辑编程方法;
3、初步掌握使用modelsim软件进行仿真测试的方法;
二、实验内容
编写verilog模块实现7段数码管译码器74ls48的功能;
编写verilog测试模块对功能模块进行测试;
对输出波形进行分析;
对照波形分析对功能模块进行修订;
三、实验步骤
1、在modelsim下建立工程;
2、编写功能模块程序;
3、编写测试模块程序;
4、运行仿真分析输出波形完善设计;
四、实验结论
(画出一段输出波形并分析是否正确)
五、附录
(写verilog的功能模块和测试模块程序)
module ex74ls48(d,y);
input [3:0] d;
output [6:0] y;
reg [6:0] y;
always @ (d)
begin
case (d)
4'b0000:y=7'b1111110;
4'b0001:y=7'b0110000;
4'b0010:y=7'b1101101;
4'b0011:y=7'b1111001;
4'b0100:y=7'b0110011;
4'b0101:y=7'b1011011;
4'b0110:y=7'b0011111;
4'b0111:y=7'b1110000;
4'b1000:y=7'b1111111;
4'b1001:y=7'b1110011;
default:y=7'b0000000;
endcase
end
endmodule
`timescale 1ns/1ns
module test74ls48;
reg [3:0] d;
wire [6:0] y;
initial
begin
d=0;
repeat(10)
#100 d=d+1;
#100 $stop;
end
ex74ls48 ex1(d,y);
initial $monitor($time," d=%d y=%b",d,y);
endmodule
实验三:时序逻辑实验
一、目的和要求
1、进一步掌握verilogHDL语言的语法;
2、掌握verilog的时序逻辑编程方法;
3、掌握使用modelsim软件进行仿真测试的方法;
二、实验内容
编写verilog模块实现不带预置功能的十进制加法计数器功能;
编写verilog测试模块对功能模块进行测试;
对输出波形进行分析;
对照波形分析对功能模块进行修订;
三、实验步骤
1、在modelsim下建立工程;
2、编写功能模块程序;
3、编写测试模块程序;
4、运行仿真分析输出波形完善设计;
四、实验结论
(画出一段输出波形并分析是否正确)
五、附录
(写verilog的功能模块和测试模块程序)
module ex3(reset,clk,bcd,c);
input reset,clk;
output reg [3:0] bcd;
output reg c;
always @(posedge clk,negedge reset)
begin
if(!reset)
begin
bcd<=0;
c<=0;
end
else
if(bcd==9)
begin
bcd<=0;
c<=1;
end
else
begin
bcd<=bcd+1;
c<=0;
end
end
endmodule
`timescale 1ns/1ns
module ex3test;
reg clk,reset;
wire [3:0] bcd;
wire c;
always #50 clk<=~clk;
initial
begin
clk<=0;
reset<=1;
#50 reset<=0;
#50 reset<=1;
#2000 $finish;
end
ex3 ex1(reset,clk,bcd,c);
initial $monitor($time," bcd=%d c=%d",bcd,c);
endmodule
实验四:电子时钟设计实验
一、目的和要求
1、掌握verilogHDL语言的语法;
2、掌握verilog编程的方法;
3、掌握使用modelsim软件进行仿真测试的方法;
二、实验内容
编写verilog模块实现带预置功能的具有时分秒计时能力的电子时钟设计;
编写verilog测试模块对功能模块进行测试;
对输出波形进行分析;
对照波形分析对功能模块进行修订;
三、实验步骤
1、在modelsim下建立工程;
2、编写功能模块程序;
3、编写测试模块程序;
4、运行仿真分析输出波形完善设计;
四、实验结论
(画出一段输出波形并分析是否正确)
五、附录
(写verilog的功能模块和测试模块程序)
module ex3(reset,set,clk,s0,s1);
input reset,clk,set;
input [16:0] s0;
output reg [16:0] s1;
always @(posedge clk,negedge reset,negedge set)
begin
if(!reset)
s1<=0;
else
if(!set)
s1<=s0;
else
if(s1[5:0]==59)
begin
s1[5:0]<=0;
if
(s1[11:6]==59)
begin
s1[11:6]<=0;
if
(s1[16:12]==23)
s1[16:12]<=0;
else
s1[16:12]<=s1[16:12]+1;
end
else
s1[11:6]<=s1[11:6]+1;
end
else
s1[5:0]<=s1[5:0]+1;
end
endmodule
`timescale 1ns/1ns
module ex3test;
reg clk,reset,set;
reg [16:0] s0;
wire [16:0] s1;
always #50 clk<=~clk;
initial
begin
clk<=0;
reset<=1;
set<=1;
#50 reset<=0;
#50 reset<=1;
#10000 s0[16:12]<=20;s0[11:6]<=30;s0[5:0]<=40;
#50 set<=0;
#50 set<=1;
#10000 s0[16:12]<=23;s0[11:6]<=58;s0[5:0]<=50;
#50 set<=0;
#50 set<=1;
#20000 $finish;
end
ex3 ex1(reset,set,clk,s0,s1);
initial $monitor($time," s0=%d:%d:%d s1=%d:%d:%d",s0[16:12],s0[11:6],s0[5:0],s1[16:12],s1[11:6],s1[5:0]);
endmodule
|