Impossible d’obtenir la sortie après avoir sélectionné sel = 5’b101 à partir du multiplexeur

Shreyas Patel

Impossible d’obtenir la sortie après avoir sélectionné sel = 5’b101 à partir du multiplexeur


module ram_mux(yout,data_in,enable,sel,clk);
input [3:0] data_in;
output [3:0] yout;
input enable,clk;
reg enable0,enable1,enable2,enable3,enable4,enable5,enable6,enable7;
input [2:0] sel;
wire [3:0] register [7:0];
reg [3:0] mux_input [7:0];
wire [3:0] temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;
data_register  a6 (register[5],data_in,enable,clk);
buffer         a14 (temp5,register[5],enable5);
mux            a17 (yout,temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7,sel);
[email protected](clk)
begin

$monitor($time,"register[5]=%b,temp5=%b,enable=%b,enable5=%b,yout=%b,sel=%b",register[5],temp5,enable,enable5,sel);
#30 enable5=1;
endmodule
module data_register(yout,data_in,enable,clk);
input clk,enable;
input [3:0] data_in;
output [3:0] yout;
reg [3:0] yout;
always @(clk)
begin 
    if(enable==1)
    begin 
    yout=data_in;
//  $monitor($time,"yout=%b,data_in=%b,enable=%b",yout,data_in,enable);
    end

    else 
    yout=4'b0000;
end
endmodule
module buffer(y_output,x_input,enable);
input [3:0] x_input;
output [3:0] y_output;
reg [3:0] y_output;
input enable;
initial 
begin 
assign y_output = enable? x_input : 4'b0000;
//$monitor($time,"y_output=%b,x_input=%b,enable=%b",y_output,x_input,enable);
end
endmodule
module mux(yout,temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7,sel);
input [3:0] temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;
input [2:0] sel;
output [3:0] yout;
reg [3:0] yout;
initial 
begin 
case (sel)
     3'b000:yout=temp0;
      3'b001:yout=temp1;
      3'b010:yout=temp2;
      3'b011:yout=temp3;
      3'b100:yout=temp4;
      3'b101:yout=temp5;
      3'b110:yout=temp6;
      3'b111:yout=temp7;
      default:yout=4'b0000;
endcase
//$monitor($time,"yout=%b,sel=%b,temp5=%b,temp4=%b",yout,sel,temp5,temp4);
end
endmodule

Comme enable=1, register[5]==data_insera exécuté. Comme enable5==1, temp5==register[5] ////temp5 loaded with temp5.

Mais quand je sélectionne sel=4'b101dans le multiplexeur dans le banc de test, je ne peux pas obtenir yout.

Comment puis-je resoudre ceci?

Keelan

J’ai modifié votre article en mettant en retrait le code avec quatre espaces et en entourant le code en ligne avec `backticks`. Veuillez présenter votre question de manière agréable la prochaine fois. Voici de l’aide .

Réponses


 pjc50

Votre bloc mux devrait utiliser always @(*)plutôt que initial.

Shreyas Patel

désolé monsieur pour les ennuis mais merci pour l’aide que ce post m’aide beaucoup. merci beaucoup une erreur aussi stupide que j’avais faite mais un certain temps vous savez notre erreur, nous pouvons identifier ce codage

 

#à, #la, =, 5’b101, après, avoir, d’obtenir, du, impossible, multiplexeur, partir, sel, sélectionné, sortie

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *