FPGA 电路开发入门实验(实验2:FPGA译码器组合逻辑 )

学生实验

  • 1、放置2个2-4译码器模块,则总共有2组SW,每组2个,2组LED,每组4个,每组SW分别控制其对应的LED组。
  • 2、参照代码,设计一个3-8译码器,完成类似的拨码开关实验。注意代码中的信号宽度设定。
  • 3、自行查阅手册中的7段译码器管脚对应关系,用4个拨码开关控制一个7段译码器的数字,从0-9-A-F,共16个数字和字母

1、放置2个2-4译码器模块,则总共有2组SW,每组2个,2组LED,每组4个,每组SW分别控制其对应的LED组。
首先编写verilog代码如下:

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;

画BDF图:
在这里插入图片描述
观察RTL Viewer:
在这里插入图片描述
再编译下载之后可得结果:
SW0,SW1控制LED0-LED3
SW2,SW3控制LED4-LED5
当SW0,SW1,SW2,SW3均为零时LED0和LED4亮
在这里插入图片描述
当SW0为1,SW1为1,SW2,为1,SW3为0时LED1和LED5亮
在这里插入图片描述
实验结果与预期一致,实验正确。

2.下面设计一个3-8译码器,完成类似的拨码开关实验。

编写3-8译码器的Verilog代码如下:

module dec_3to8(
IN  ,
OUT);
input  [3-1:0] IN  ;
output [8-1:0] OUT ;

reg [8-1:0] OUT ;

always @ (IN) begin
  case(IN)
    3'b000: OUT = 8'b 0000_0001;
    3'b001: OUT = 8'b 0000_0010;
    3'b010: OUT = 8'b 0000_0100;
    3'b011: OUT = 8'b 0000_1000;
	3'b100: OUT = 8'b 0001_0000;
	3'b101: OUT = 8'b 0010_0000;
	3'b110: OUT = 8'b 0100_0000;
	3'b111: OUT = 8'b 1000_0000;
  endcase
end

endmodule // module dec_3to8;

bdf原理图:
在这里插入图片描述
RTL Viewer:
在这里插入图片描述
编译下载后结果图:
当SW2,SW1,SW0均为1时,经过译码器后结果应该为LED7亮:
在这里插入图片描述
结果与设想一致,验证了实验的正确性。

3、自行查阅手册中的7段译码器管脚对应关系,用4个拨码开关控制一个7段译码器的数字,从0-9-A-F,共16个数字和字母

首先编写7段译码管Verilog代码如下:

module bcd7seg(
IN,
OUT);

input [3:0] IN;
output [7:0] OUT;
reg [7:0] OUT;

always @(IN) begin
    case(IN)
	    4'b0000: OUT = 8'b11000000;   //  0
		4'b0001: OUT = 8'b11111001;   //  1
		4'b0010: OUT = 8'b10100100;   //  2
		4'b0011: OUT = 8'b10110000;   //  3
		4'b0100: OUT = 8'b10011001;   //  4
		4'b0101: OUT = 8'b10010010;   //  5
		4'b0110: OUT = 8'b10000010;   //  6
		4'b0111: OUT = 8'b11111000;   //  7
		4'b1000: OUT = 8'b10000000;   //  8
		4'b1001: OUT = 8'b10010000;   //  9
		4'b1010: OUT = 8'b00001000;   //  A
		4'b1011: OUT = 8'b00000000;   //  B
		4'b1100: OUT = 8'b01000110;   //  C
		4'b1101: OUT = 8'b01000000;   //  D
		4'b1110: OUT = 8'b00000110;   //  E
		4'b1111: OUT = 8'b00001110;   //  F
	endcase
end

endmodule

bdf原理图为:
在这里插入图片描述
RTL Viewer:
在这里插入图片描述
在这里,我们用拨码开关SW3,SW2,SW1,SW0控制数码管,其中数字A~F我们加小数点来提醒。

当我们输入SW0为1,其余为0时,数码管显示为1:
在这里插入图片描述
当我们输入SW3,SW2,SW1,SW0均为1时,数码管显示F:
在这里插入图片描述
实验结果与设想一致,验证了实验的正确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值