FPGA学习笔记之数字电路篇二

                                                  第三章    组合逻辑电路的应用

3.1 编码器的verilog代码

module Digital_Encoder
(
    I,A
);
input [7:0] I;
output [2:0] A;
reg [2:0] A;
always @(*)
begin
    case(I)
    8'b0000_0001:A=3'b000;
    8'b0000_0010:A=3'b010;
         *
         *
         *
    8'b1000_0000:A=3'b111;
    default:A=3'b000;
end
endmodule

   优先编码器的verilog代码

module Digital_Encoder
(
    I,A
);
input [7:0] I;
output [2:0] A;
reg [2:0] A;
always @(*)
begin
  if(I[7]==1'b0)
        A=3'b000;
      *
      *
      *
  else if(I[0]==1'b0)
            A=3'b111;
  else
        A=3'b000;
end
endmodule

3.2 译码器的verilog代码

译码器和编码器大同小异。

3.3 数据选择器的verilog代码

module Selector
(
    A,D0,D1,D2,D3,
    D4,D5,D6,D7,Y
);
input D0,D1,D2,D3,D4,D5,D6,D7;
input [2:0] A;
output [7:0] Y;
reg [7:0] Y;
always @(*)
begin
    case(A)
        3'b000:Y=D0;
        *
        *
        *
        3'b111:Y=D7;
        default:Y=1'b0;
        endcase
end
endmodule

3.4 数值比较器的verilog代码

module Digital_Comparator
(
    A,B,F
);
input [3:0] A;
input [3:0] B;
output [2:0] F;
reg [2:0] F;
always @(*)
begin
    if(A>B)
        F=3'b001;
    else if(A==B)
        F=3'b010;
    else
        F=3'b100;
end
endmodule

3.5加法器的verilog代码

module Digital_Adder
(
    A,B,S
);
input [3:0] A;
input [3:0] B;
output [3:0] S;
always @(*)
begin
    S=A+B;
end
endmodule

猜你喜欢

转载自blog.csdn.net/Archar_Saber/article/details/81606784