文章目录
实验1:项目创建、编译和下载
实验内容:设计一根可编程导线,用1个拨码开关控制所有的LED灯亮灭
新建bdf文件,放入1个input管脚,再放入10个output管脚和input相连。
RTL图:
查阅DE0手册中的管脚对应,指派管脚,编译下载。
实验2:FPGA译码器组合逻辑
1.2个2-4译码器控制LED
1.用Verilog编写2-4译码器:
module dec_2to4(
IN ,
OUT);
input [2-1:0] IN ;
output [4-1:0] OUT ;
reg [4-1:0] OUT ;
always @ (IN) begin
case(IN)
2'b00: OUT = 4'b 0001;
2'b01: OUT = 4'b 0010;
2'b10: OUT = 4'b 0100;
2'b11: OUT = 4'b 1000;
endcase
end
endmodule // module dec_2to4;
2.为代码文件创建符号(symbol),用于在bdf文件中调用。
3.放入input和output,连线,指派管脚
RTL图:
2.1个3-8译码器控制LED
1.用Verilog编写3-8译码器:
module decoder(
IN,
OUT
);
input [2:0]IN;
output [7:0]OUT;
reg [7:0]OUT;
always @ (IN) begin
case(IN)
3'b000: OUT = 8'b00000001;
3'b001: OUT = 8'b00000010;
3'b010: OUT = 8'b00000100;
3'b011: OUT = 8'b00001000;
3'b100: OUT = 8'b00010000;
3'b101: OUT = 8'b00100000;
3'b110: OUT = 8'b01000000;
3'b111: OUT = 8'b10000000;
endcase
end
endmodule
2.为代码文件创建符号(symbol),用于在bdf文件中调用。
3.放入input和output,连线,指派管脚,编译下载。
RTL图:
3.4个拨码开关控制7段数码管
1.用Verilog编写4-7译码器:
module dec4_7(
IN,
OUT);
input [3:0]IN;
output [6:0]OUT;
reg [6:0]OUT;
always @ (IN) begin
case(IN)
4'b0000: OUT = 7'b1000000;
4'b0001: OUT = 7'b1111001;
4'b0010: OUT = 7'b0100100;
4'b0011: OUT = 7'b0110000;
4'b0100: OUT = 7'b0011001;
4'b0101: OUT = 7'b0010010;
4'b0110: OUT = 7'b0000010;
4'b0111: OUT = 7'b1111000;
4'b1000: OUT = 7'b0000000;
4'b1001: OUT = 7'b0010000;
4'b1010: OUT = 7'b0001000;
4'b1011: OUT = 7'b0000011;
4'b1100: OUT = 7'b1000110;
4'b1101: OUT = 7'b0100001;
4'b1110: OUT = 7'b0000110;
4'b1111: OUT = 7'b0001110;
endcase
end
endmodule
2.为代码文件创建符号(symbol),用于在bdf文件中调用。
3. 放入input和output,连线,指派管脚
RTL图:
实验3:计数器波形仿真和signalTap
1.设计一个0-17的计数器
1.用Verilog写出0-17计数器,并生成symbol
module cnt_0to17(
CLK , // clock
CNTVAL, // counter value
OV ); // overflow
input CLK;
output [4:0] CNTVAL;
output OV;
reg [4:0] CNTVAL;
reg OV;
always @ (posedge CLK) begin
if(CNTVAL >= 17)
CNTVAL <= 0;
else
CNTVAL <= CNTVAL + 1'b1;
end
always @ (CNTVAL) begin
if(CNTVAL == 17)
OV = 1'b1;
else
OV = 1'b0;
end
endmodule // module cnt_0to17
2.新建bdf文件,连线,编译
3.用SignalTap验证