硬件语言Verilog HDL牛客刷题day02 组合逻辑部分

1.VL11  4位数值比较器电路

1.题目:

某4位数值比较器的功能表如下。请用Verilog语言采用门级描述方式,实现此4位数值比较器。

 


2.解题代码:

`timescale 1ns/1ns

module comparator_4(
	input		[3:0]       A   	,
	input	   [3:0]		B   	,
 
 	output	 wire		Y2    , //A>B
	output   wire        Y1    , //A=B
    output   wire        Y0      //A<B
);

wire W2[0:3];
wire W1[0:3];
wire W0[0:3];

genvar i;
for(i=0;i<4;i=i+1)
	begin
		three_compare U1(
			.A (A[i]),
			.B (B[i]),
			.Y2 (W2[i]),
			.Y1 (W1[i]),
			.Y0 (W0[i])
		);
	end
assign Y2 = W2[3] | ((W1[3])&&(W2[2])) |  ((W1[3]) && (W1[2]) && (W2[1])) | ((W1[3]) && (W1[2]) && (W1[1]) && (W2[0]));
assign Y0 = W0[3] | ((W1[3])&&(W0[2])) |  ((W1[3]) && (W1[2]) && (W0[1])) | ((W1[3]) && (W1[2]) && (W1[1]) && (W0[0]));
assign Y1  = W1[3] & W1[2] & W1[1] &W1[0];

endmodule



 
//定义另外一个模块  判断三个数的关系
module three_compare(
	input A,  //输入值 1 或者 0 
	input B,  //输入值 1 或者 0
	output Y2, //假如Y2=1 , 这两个数大于
	output Y1, //假如Y1=1 ,这两个数等于 
	output Y0  //假如Y0=1 , 这两个数小于
);

assign Y2 = A & (!B);  //持续赋值 Y2 大于的标志
assign Y0 = (!A) & B;  //持续赋值 Y0 小于的标志
assign Y1 = !(Y2 | Y0);  //持续赋值 , 除非Y2 Y0 都不等于1  那时候Y1 =1
endmodule 



2.VL12 4bit超前进位加法器电路

 1.题目:


2.解题代码:

`timescale 1ns/1ns

module lca_4(
	input		[3:0]       A_in  ,
	input	    [3:0]		B_in  ,
    input                   C_1   ,
 
 	output	 wire			CO    ,
	output   wire [3:0]	    S
);

wire[3:0] G;
wire[3:0] P;
wire[3:0] C;

genvar i;
generate
    for(i=0;i<4;i=i+1)
        begin
            add_half U1(
				.A (A_in[i]),
				.B (B_in[i]),
				.C (G[i]),
				.D (P[i])
			);
			assign S[i] =  (i>0)  ?  P[i]^C[i-1] : P[i]^C_1;
			assign C[i] =  (i>0)  ?  G[i] | P[i] & C[i-1] : G[i] + P[i] & C_1;
			//assign C[i] = (i == 0) ? (G[i] | (P[i] & C_1)) : (G[i] | (P[i] & C[i-1])); 
            //assign S[i] = (i == 0) ? (P[i] ^ C_1) : (P[i] ^ C[i-1]);
			
        end
endgenerate
assign CO = C[3];


endmodule

module add_half(
input A,
input B,
output C,
output D
);
assign C = A & B;
assign D = A ^ B; 
endmodule



3.VL13 优先编码器电路①

1.题目:


2.解题代码

`timescale 1ns/1ns

module encoder_0(
   input      [8:0]         I_n   ,
   
   output reg [3:0]         Y_n   
);

always@(*)
    begin
        casex (I_n)
            9'b1_1111_1111 : Y_n= 4'b1111;
            9'b0_????_???? : Y_n= 4'b0110;
            9'b1_0???_???? : Y_n= 4'b0111;
            9'b1_10??_???? : Y_n= 4'b1000;
            9'b1_110?_???? : Y_n= 4'b1001;
            9'b1_1110_???? : Y_n= 4'b1010;
            9'b1_1111_0??? : Y_n= 4'b1011;
            9'b1_1111_10?? : Y_n= 4'b1100;
            9'b1_1111_110? : Y_n= 4'b1101;
            9'b1_1111_1110 : Y_n= 4'b1110;
            default: Y_n=4'b0000;
        endcase
    end
endmodule



4.VL14 用优先编码器①实现键盘编码电路

1.题目:

请使用优先编码器①实现键盘编码电路,可添加并例化题目中已给出的优先编码器代码。

10个按键分别对应十进制数0-9,按键9的优先级别最高;按键悬空时,按键输出高电平,按键按下时,按键输出低电平;键盘编码电路的输出是8421BCD码。

要求:键盘编码电路要有工作状态标志,以区分没有按键按下和按键0按下两种情况。

优先编码器真值表如下图:

 


2.解题代码:

`timescale 1ns/1ns
module encoder_0(
   input      [8:0]         I_n   ,
   
   output reg [3:0]         Y_n   
);

always @(*)begin
   casex(I_n)
      9'b111111111 : Y_n = 4'b1111;
      9'b0xxxxxxxx : Y_n = 4'b0110;
      9'b10xxxxxxx : Y_n = 4'b0111;
      9'b110xxxxxx : Y_n = 4'b1000;
      9'b1110xxxxx : Y_n = 4'b1001;
      9'b11110xxxx : Y_n = 4'b1010;
      9'b111110xxx : Y_n = 4'b1011;
      9'b1111110xx : Y_n = 4'b1100;
      9'b11111110x : Y_n = 4'b1101;
      9'b111111110 : Y_n = 4'b1110;
      default      : Y_n = 4'b1111;
   endcase    
end 
     
endmodule

module key_encoder(
      input      [9:0]         S_n   ,         
 
      output wire[3:0]         L     ,
      output wire              GS
);

wire[3:0] l_temp;
encoder_0 U1(
    .I_n (S_n[9:1]),
    .Y_n (l_temp)
);
assign L = ~l_temp;
assign GS = ~(S_n[0] & l_temp[3] & l_temp[2] & l_temp[1] & l_temp[0]); 


endmodule


5.VL15 优先编码器Ⅰ

1.题目:

下表是8线-3线优先编码器Ⅰ的功能表。

①请根据该功能表,用Verilog实现该优先编码器Ⅰ。

 


2.解题代码

`timescale 1ns/1ns

module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
    reg [2:0] Y_r;
    reg GS_r, EO_r;
    always@(*) begin
        casez({EI, I})
            9'b0_????_????: {Y_r, GS_r, EO_r} = 5'b000_0_0;
            9'b1_0000_0000: {Y_r, GS_r, EO_r} = 5'b000_0_1;
            9'b1_1???_????: {Y_r, GS_r, EO_r} = 5'b111_1_0;
            9'b1_01??_????: {Y_r, GS_r, EO_r} = 5'b110_1_0;
            9'b1_001?_????: {Y_r, GS_r, EO_r} = 5'b101_1_0;
            9'b1_0001_????: {Y_r, GS_r, EO_r} = 5'b100_1_0;
            9'b1_0000_1???: {Y_r, GS_r, EO_r} = 5'b011_1_0;
            9'b1_0000_01??: {Y_r, GS_r, EO_r} = 5'b010_1_0;
            9'b1_0000_001?: {Y_r, GS_r, EO_r} = 5'b001_1_0;
            9'b1_0000_0001: {Y_r, GS_r, EO_r} = 5'b000_1_0;
            default: {Y_r, GS_r, EO_r} = 5'b000_0_0;
        endcase
    end
    
    assign Y  = Y_r;
    assign GS = GS_r;
    assign EO = EO_r;
endmodule



6.VL16 使用8线-3线优先编码器工实现16线-4线优先编码器

1.题目 : 

请使用2片该优先编码器Ⅰ及必要的逻辑电路实现16线-4线优先编码器。优先编码器Ⅰ的真值表和代码已给出。

可将优先编码器Ⅰ的代码添加到本题答案中,并例化。


2.解题思路:

                2.1首先把16位的数据数据输入分为 2 个8 位的数据输入。当有一个 83线编码器工作时,另外一个不工作。 控制这个的数据位为E1 (高电平启动83编码器 ),  当一个83编码器运行之后的EO  输出为 0 .  所以我们可以使用 E1(使能输入)  EO(使能输出)来控制两个编码器的运行。 

                2.2EI EO 思路举例说明:

  EI(最开始的输入)  ->  编码器1  ->    EO1   ->  编码器2 EI   -> EO (最后的EO) 

                2.3然后是 15 位 到 8位 的83编码器 的输出,可以这样比喻, 当15位 到 8位的 83编码器使用  它的输出的3 位的数据直接 + 2'b1000  就行。 (自己想一想)

编码器1 (15-8位) 输出的3 位数据  B1
16-4 编码器输出 L[3:0];
wire[3:0] B1 ; //assign持续赋值 wire
B1 =  83编码器的输出  + 2'b1000/2'b0000;
   =  83编码器的输出  + GS1 (是否使用  ,使用 1, 没有使用0)
   

B1[3] = GS1;
L[3] = B1[3] = GS1;
L[3] = GS1;

                2.4 最后的16-4 编码器的输出结果是  两个编码器相 或。

                


3.解题遇到的问题

3.1  问题:  main.v:53:error:B1['sd3]在encoder_164中不是有效的l值。  main.v:31::B1['sd3]在这里被声明为wire。  main.v:55:错误:B1['sd3]在encoder_164中不是有效的l值。  main.v:31::B1['sd3]在这里被声明为wire。

错误原因:数据类型定义错误 或者 赋值类型错误

解决方法: 在always 过程块中被赋值的变量必须是 reg (寄存器型),用 assign 连续赋值的对象 必须定义成 wire(线型);


4.解题代码

`timescale 1ns/1ns
module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);

assign EO = EI&~I[7]&~I[6]&~I[5]&~I[4]&~I[3]&~I[2]&~I[1]&~I[0];

assign GS = EI&(I[7] | I[6] | I[5] | I[4] | I[3] | I[2] | I[1] | I[0]);
//assign GS = EI&(| I);
         
endmodule

module encoder_164(
   input      [15:0]      A   ,
   input                  EI  ,
   
   output wire [3:0]      L   ,
   output wire            GS  ,
   output wire            EO    
);

wire[2:0] A1;
wire[2:0] B1;
wire Gs1,Gs2;
wire EO1;

encoder_83 U1(
    .EI (EO1),
    .I  (A[7:0]),
    .Y  (A1[2:0]),
    .GS (Gs1),
    .EO (EO)
);

encoder_83 S2(
    .EI (EI),
    .I  (A[15:8]),
    .Y  (B1[2:0]),
    .GS (Gs2),
    .EO (EO1)
);



assign L[3] = Gs2;
assign L[2] = A1[2] | B1[2];
assign L[1] = A1[1] | B1[1];
assign L[0] = A1[0] | B1[0];
assign GS = Gs1 | Gs2;





endmodule


7.VL17 用3-8译码器实现全减器

1.题目:

请使用3-8译码器和必要的逻辑门实现全减器,全减器接口图如下,A是被减数,B是减数,Ci是来自低位的借位,D是差,Co是向高位的借位。

  

 3-8译码器代码如下,可将参考代码添加并例化到本题答案中。

module decoder_38(
   input             E      ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output reg       Y0n    ,  
   output reg       Y1n    , 
   output reg       Y2n    , 
   output reg       Y3n    , 
   output reg       Y4n    , 
   output reg       Y5n    , 
   output reg       Y6n    , 
   output reg       Y7n    
);

always @(*)begin
   if(!E)begin
      Y0n = 1'b1;
      Y1n = 1'b1;
      Y2n = 1'b1;
      Y3n = 1'b1;
      Y4n = 1'b1;
      Y5n = 1'b1;
      Y6n = 1'b1;
      Y7n = 1'b1;
   end  
   else begin
      case({A2,A1,A0})
         3'b000 : begin
                     Y0n = 1'b0; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b001 : begin
                     Y0n = 1'b1; Y1n = 1'b0; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b010 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b0; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b011 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b0; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b100 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b0; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b101 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b0; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b110 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b1;
                  end 
         3'b111 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b0;
                  end 
         default: begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end
      endcase  
   end 
end    
     
endmodule

2.解题代码

`timescale 1ns/1ns

module decoder_38(
   input             E      ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output reg       Y0n    ,  
   output reg       Y1n    , 
   output reg       Y2n    , 
   output reg       Y3n    , 
   output reg       Y4n    , 
   output reg       Y5n    , 
   output reg       Y6n    , 
   output reg       Y7n    
);

always @(*)begin
   if(!E)begin
      Y0n = 1'b1;
      Y1n = 1'b1;
      Y2n = 1'b1;
      Y3n = 1'b1;
      Y4n = 1'b1;
      Y5n = 1'b1;
      Y6n = 1'b1;
      Y7n = 1'b1;
   end  
   else begin
      case({A2,A1,A0})
         3'b000 : begin  
                     Y0n = 1'b0; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b001 : begin
                     Y0n = 1'b1; Y1n = 1'b0; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b010 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b0; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b011 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b0; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b100 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b0; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b101 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b0; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b110 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b1;
                  end 
         3'b111 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b0;
                  end 
         default: begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end
      endcase  
   end 
end    
     
endmodule

module decoder1(
   input             A     ,
   input             B     ,
   input             Ci    ,
   
   output wire       D     ,
   output wire       Co         
);
    wire Y0n,Y1n,Y2n,Y3n,Y4n,Y5n,Y6n,Y7n;
    decoder_38 decoder_1(
   .E(1)      ,
   .A0(Ci)     ,
   .A1(A)     ,
   .A2(B)     ,
   
   .Y0n(Y0n)    ,  
   .Y1n(Y1n)    , 
   .Y2n(Y2n)    , 
   .Y3n(Y3n)    , 
   .Y4n(Y4n)    , 
   .Y5n(Y5n)    , 
   .Y6n(Y6n)    , 
   .Y7n(Y7n)    
);

    assign D = ~(Y1n&Y2n&Y4n&Y7n);
    assign Co = ~(Y1n&Y4n&Y5n&Y7n);
endmodule


8.VL18 实现3-8译码器①

1.题目:

下表是74HC138译码器的功能表.

请用基础门电路实现该译码器电路,用Verilog将电路描述出来。基础门电路包括:非门、多输入与门、多输入或门。


2.解题代码

`timescale 1ns/1ns

module decoder_38(
   input             E1_n   ,
   input             E2_n   ,
   input             E3     ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output wire       Y0_n   ,  
   output wire       Y1_n   , 
   output wire       Y2_n   , 
   output wire       Y3_n   , 
   output wire       Y4_n   , 
   output wire       Y5_n   , 
   output wire       Y6_n   , 
   output wire       Y7_n   
);

wire [7:0] Y;
wire EN;
//首先是公式  就是真值表转 公式 因为  38 译码器的输出 是低电平,没事我们两边加上一个  ~ 就和之前的列出公式差不多了, 只要列出 输出为0 的。
//列出输出的公式
//使用或门  第一个为输出的值 第二第三为  相或的参数
//第一个为使能输出, 标准的正常的使能为 E3=1  ,E2_n =0  ,  E1_n =0;

and(EN,E3 , ~E2_n, ~E1_n); 
//  输出 0 的真值表的公式
and(Y[0],EN,~A0,~A1,~A2);
and(Y[1],EN,A0,~A1,~A2);
and (Y[2] , EN , ~A0,A1,~A2);
and (Y[3] , EN , A0,A1,~A2);
and (Y[4] , EN , ~A0,~A1,A2);
and (Y[5] , EN , A0,~A1,A2);
and (Y[6] , EN , ~A0,A1,A2);
and (Y[7] , EN , A0,A1,A2);

//非门 ,因为两边加了一个非门
not (Y0_n , Y[0]);
not (Y1_n , Y[1]);
not (Y2_n , Y[2]);
not (Y3_n , Y[3]);
not (Y4_n , Y[4]);
not (Y5_n , Y[5]);
not (Y6_n , Y[6]);
not (Y7_n , Y[7]);


endmodule


9.VL19 使用3-8译码器①实现逻辑函数

1.题目:

下表是74HC138译码器的功能表

②请使用3-8译码器①和必要的逻辑门实现函数L=(~A)·C+A·B

可在本题答案中添加并例化3-8译码器①代码,3-8译码器①代码如下:

module decoder_38(
   input             E1_n   ,
   input             E2_n   ,
   input             E3     ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output wire       Y0_n   ,  
   output wire       Y1_n   , 
   output wire       Y2_n   , 
   output wire       Y3_n   , 
   output wire       Y4_n   , 
   output wire       Y5_n   , 
   output wire       Y6_n   , 
   output wire       Y7_n   
);
wire E ;
assign E = E3 & ~E2_n & ~E1_n;
assign  Y0_n = ~(E & ~A2 & ~A1 & ~A0);
assign  Y1_n = ~(E & ~A2 & ~A1 &  A0);
assign  Y2_n = ~(E & ~A2 &  A1 & ~A0);
assign  Y3_n = ~(E & ~A2 &  A1 &  A0);
assign  Y4_n = ~(E &  A2 & ~A1 & ~A0);
assign  Y5_n = ~(E &  A2 & ~A1 &  A0);
assign  Y6_n = ~(E &  A2 &  A1 & ~A0);
assign  Y7_n = ~(E &  A2 &  A1 &  A0);
     
endmodule


2.解题代码

`timescale 1ns/1ns

module decoder_38(
   input             E1_n   ,
   input             E2_n   ,
   input             E3     ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output wire       Y0_n   ,  
   output wire       Y1_n   , 
   output wire       Y2_n   , 
   output wire       Y3_n   , 
   output wire       Y4_n   , 
   output wire       Y5_n   , 
   output wire       Y6_n   , 
   output wire       Y7_n   
);
wire E ;
assign E = E3 & ~E2_n & ~E1_n;
assign  Y0_n = ~(E & ~A2 & ~A1 & ~A0);
assign  Y1_n = ~(E & ~A2 & ~A1 &  A0);
assign  Y2_n = ~(E & ~A2 &  A1 & ~A0);
assign  Y3_n = ~(E & ~A2 &  A1 &  A0);
assign  Y4_n = ~(E &  A2 & ~A1 & ~A0);
assign  Y5_n = ~(E &  A2 & ~A1 &  A0);
assign  Y6_n = ~(E &  A2 &  A1 & ~A0);
assign  Y7_n = ~(E &  A2 &  A1 &  A0);
     
endmodule

module decoder0(
   input             A     ,
   input             B     ,
   input             C     ,
   
   output wire       L
);

wire       Y0_n   ;  
wire       Y1_n   ; 
wire       Y2_n   ; 
wire       Y3_n   ; 
wire       Y4_n   ; 
wire       Y5_n   ; 
wire       Y6_n   ; 
wire       Y7_n   ;
 
decoder_38 U0(
   .E1_n   (1'b0),
   .E2_n   (1'b0),
   .E3     (1'b1),
   .A0     (C),
   .A1     (B),
   .A2     (A),
   
   .Y0_n   (Y0_n),  
   .Y1_n   (Y1_n), 
   .Y2_n   (Y2_n), 
   .Y3_n   (Y3_n), 
   .Y4_n   (Y4_n), 
   .Y5_n   (Y5_n), 
   .Y6_n   (Y6_n), 
   .Y7_n   (Y7_n)
);
 
assign L = ~(Y1_n & Y3_n & Y6_n & Y7_n);

endmodule



10.VL20 数据选择器实现逻辑电路

1.题目:

数据选择器代码如下,可在本题答案中添加并例化此数据选择器。

module data_sel(
   input             S0     ,
   input             S1     ,
   input             D0     ,
   input             D1     ,
   input             D2     ,
   input             D3     ,
   
   output wire        Y    
);

assign Y = ~S1 & (~S0&D0 | S0&D1) | S1&(~S0&D2 | S0&D3);
     
endmodule

 


 2.解题思路:

D1 = ~D2 

D1 = C

D2 = ~C


3.解题代码

`timescale 1ns/1ns

module data_sel(
   input             S0     ,
   input             S1     ,
   input             D0     ,
   input             D1     ,
   input             D2     ,
   input             D3     ,
   
   output wire        Y    
);

assign Y = ~S1 & (~S0&D0 | S0&D1) | S1&(~S0&D2 | S0&D3);
     
endmodule

module sel_exp(
   input             A     ,
   input             B     ,
   input             C     ,
   
   output wire       L            
);

data_sel c1(
    .S0(A),
    .S1(B),
    .D0(0),
    .D1(~C),
    .D2(C),
    .D3(1),
    .Y(L) );


endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4004.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cortex-A7常用汇编指令

Cortex-A7常用汇编指令 本节我们将介绍一些常用的 Cortex-A7汇编指令&#xff0c;如果想系统的了解 Cortex-A7的所有汇 编指令请参考《 ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition.pdf》的 A4章节。 处理器内部数据传输指令 使用处理器做的最多事情就是…

黑马点评笔记(自用)

1.优惠卷秒杀 &#xff08;1&#xff09;全局唯一ID 订单如果用自增&#xff0c;容易被猜到交易量&#xff0c;且数据量大的话分成多个表&#xff0c;都是自增&#xff0c;容易出现重复。所以用全局ID生成器&#xff0c;Redis独立自增不会重复&#xff0c;但安全性不保证&#…

Vue Nginx 配置跨域

1、方案1&#xff1a;Nginx配置跨域&#xff0c;Vue不用配置vite代理 1.nginx 配置SSL证书 listen *:443;server_name gitlab.xxxxxx.com;server_tokens off; ## Dont show the nginx version number, a security best practicessl on;ssl_certificate /etc/gitlab/xxxxxx.c…

俺的面试qwq

1.JavaScript的基本数据类型都有什么? 布尔型、数值型、字符串、数组、null、undefined、object、symbol 2.数组方法pop()push() unshift() shift()的作用? pop()删除最后一个元素、push()在数组最后增加元素、unshift()在数组最前面增加元素、shift()删除第一个元素 3.box-s…

【ChatGPTAIGC研讨社】“iPhone时刻”:未来已来

文章目录前言一、ChaGPT&AIGC研讨社简介二、ChatGPT&AIGC研讨社的优势1.丰富充实的资料库Github开源&#xff1a;[ChatGPT_Project](https://github.com/shawshany/ChatGPT_Project)飞书资料库2.重量级嘉宾3.工作机会4.投资资源总结前言 去年年末&#xff0c;ChatGPT以…

Linux编译器-gcc/g++ 使用

在介绍gcc/g的使用前我们先了解一下两者的不同 gcc时主要编译c语言&#xff0c;而g主要编译c的&#xff0c;但是两者的选项是相同的&#xff0c;因此我们以gcc和c语言为例来讲解。背景知识 gcc和g都是编译器其核心作用将文本类文件翻译成二进制可执行 那么其过程是怎样的&…

dolphinscheduler 2.0.6 资源中心改造方案二:通过NFS挂载共享目录

目录调度资源中心存储概要安装NFS服务器客户端调度验证关闭SFTP开关&#xff08;可忽略&#xff09;重新上传资源文件worker执行任务验证服务器woker客户端worker其它nfs共享目录的配置文件/etc/exports说明调度资源中心存储概要 针对现有的单机存储可以做哪些扩展&#xff1f;…

免费1年服务器,部署个ChatGPT专属网页版

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 白皮袄个免费1年服务器&#xff0c;部署个ChatGPT专属网页版&#xff01; api.openai.com port 443: Connection timed out 你是…

【统计学习】25个必须掌握的数据分析基础概念

16个必须掌握的数据分析基础概念1. 描述性统计2. 假设性检验2.1 参数检验2.2 非参数检验3. 置信度分析4. 列联表分析5. 相关分析6. 方差分析7. 回归分析8. 聚类分析9. 判别分析10. 主成分分析11. 因子分析12. 时间序列分析13. 生存分析14. 典型相关分析15. ROC分析16. 偏差-方差…

MATLAB中quiver函数用法

目录 语法 说明 示例 创建箭头图 禁用自动缩放 绘制梯度和等高线 指定箭头颜色 指定箭头图的坐标区 在创建后修改箭头图 quiver函数的功能是绘制箭头图或向量图。 语法 quiver(X,Y,U,V) quiver(U,V) quiver(___,scale) quiver(___,LineSpec) quiver(___,LineSpec,fi…

List和list迭代器的模拟实现

list的使用 我们list表示带头双向循环链表。 我们再找我们的list中每个数据的位置&#xff0c;就不可以再用我们的下标[]了。 我们就必须用迭代器。 void test_list1() {list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);list<int>:…

MySQL基础-视图

文章目录MySQL基础-视图一、数据库对象二、视图概念三、视图的使用1、创建视图2、查看视图3、修改视图4、修改/删除视图四、总结MySQL基础-视图 一、数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元&#xff0c;以行和列的形式存在&#xff0c;列就是字段&#xff0c;行…

STM32输出PWM波控制电机转速,红外循迹避障智能车+L298N的详细使用手册、接线方法及工作原理,有代码

智能循迹红外避障小车 本设计的完整的系统主要包括STM32单片机最小系统、L298n电机驱动&#xff0c;超声波 &#xff0c;舵机 &#xff0c;红外模块等。寻迹小车相信大家都已经耳熟能祥了。 我们在这里主要讲一下L298N驱动电机和单片机输出PWM控制电机转速。 本设计软件系统采…

这个时候了,你还不会不知道JavaMail API吧

一、概述 1.1 简述 JavaMail API 顾名思义&#xff0c;提供给开发者处理电子邮件相关的编程接口&#xff0c;它是Sun发布的用来处理email的API&#xff0c;其提供独立于平台且与协议无关的框架来构建邮件和消息传递应用。JavaMail API 提供了一组抽象类&#xff0c;用于定义组…

第十四届蓝桥杯三月真题刷题训练——第 24 天

目录 第 1 题&#xff1a;旋转 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码&#xff1a; 思路&#xff1a; 第 2 题&#xff1a;附近最小_单调队列模板 代码&#xff1a; 第 3 题&#xff1a;扫地机器人_二分 题目描述 输入描述 输出描述 输入输出样…

【蓝桥杯】​蓝桥杯——每日四道编程题(两道真题+两道模拟)​| 第 二 天

专栏&#xff1a; 蓝桥杯——每日四道编程题&#xff08;两道真题两道模拟&#xff09; “蓝桥杯就要开始了&#xff0c;这些题刷到就是赚到” ₍ᐢ..ᐢ₎♡ 另一个专栏&#xff1a; 蓝桥杯——每日四道填空题&#xff08;两道真题两道模拟题&#xff09; 目录 第一道真题&…

Kafka 基础整理、 Springboot 简单整合

定义&#xff1a; Kafka 是一个分布式的基于发布/订阅默认的消息队列是一个开源的分布式事件流平台&#xff0c;被常用用于数据管道、流分析、数据集成、关键任务应用 消费模式&#xff1a; 点对点模式 (少用) 消费者主动拉取数据&#xff0c;消息收到后清除消息 发布/订阅模式…

【蓝桥杯嵌入式】第十四届蓝桥杯嵌入式[模拟赛2]客观题及详细题解

题1 解析 USART_CR1:控制寄存器1&#xff0c;其中的M位定义了数据字的长度&#xff0c;由软件对其设置和清零。USART_CR2:控制寄存器2。USART_BRR:波特率寄存器。USART_DR:数据寄存器。 (如果现场不记得&#xff0c;可以查阅芯片手册) 答案: A 题2 解析 在STM32微控制器中&a…

每日学术速递3.29

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.CC3D: Layout-Conditioned Generation of Compositional 3D Scenes 标题&#xff1a;CC3D&#xff1a;合成 3D 场景的布局条件生成 作者&#xff1a;Sherwin Bahmani, Jeong Joon …

五、MyBatis各种查询功能

MyBatis的各种查询功能 如果查询出的数据只有一条&#xff0c;可以通过 实体类对象接收List集合接收Map集合接收 如果查询出的数据有多条&#xff0c;一定不能用实体对象接收&#xff0c;会抛TooManyResultsException&#xff0c;可以通过 实体类类型的List集合接收Map类型的L…