FPGA入门实验-DE0开发板-实验二-译码器组合逻辑

一、实验任务

        ①放置2个2-4译码器模块,则总共有2组SW, 每组2个,2组LED,每组4个,每组SW分别控 制其对应的LED组。

        ②参照代码,设计一个3-8译码器,完成类似的拨码开关实验。注意代码中的信号宽度设定。

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

二、实验过程

        任务一:放置2个2-4译码器模块,则总共有2组SW,每组2个,2组LED,每组4个,每组SW分别控制其对应的LED组。

        首先新建bdf文件使其成为顶层文件,之后新建RTL文件,编写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;

        之后在建成的bdf文件里放置两个input,1个output[3..0]。注意:bdf文件中input 的线是绿色框的线,output与译码器连接的线要用红色框的。

        

        这里注意线网式的标记方法

        • 导线命名方法:导线上右键,properties,name,然后设定 名称,中括号表示该导线是一个bus的一部分。

        • 线网的选择使用 两个点号“..”,例如图中的inW[1..0],表示其包含了inW[0]和inW[1]两根导线。

        • 这种使用导线的名称来进行连接电路的方法叫做网(络)标(号)式连接。

        最后上板子验证

        

        任务二:设计一个3-8译码器,完成类似的拨码开关实验

        还是要先建bdf文件,然后编写3-8译码器RTL代码,代码如下

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文件里,放置三个input,一个output[7..0],bdf图如下,这里也是要注意连线不同

 然后分配管脚,上板子验证(DE0板子管脚分配图我会放在最后)

最后上板子验证

        任务三:用4个拨码开关控制一个7段译码器的数字,从 0-9-A-F,共16个数字和字母。

         还是要先建bdf文件,然后编写数码管RTL代码,其中数码管原理图如下

                 RTL代码

              

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图

引脚分配图

上板子验证

DE0相关原理图

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值