實驗一:基本邏輯門實驗
一、目的和要求
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
|