J'essaye d'implémenter le retard inertiel dans SystemVerilog pour générer un signal valid_inputs avec le critère suivant 1. valid_inputs devrait aller à '1' après un certain délai (disons 15 unités) si aucune entrée n'est X/Z 2. valid_inputs devrait aller à '0' immédiatement si atleast une entrée devient X/Zmettre en œuvre le retard inertiel de plusieurs façons
J'essaie ci-dessus avec 2 implémentations:
module test (a, b, y);
input a, b;
output y;
wire temp;
assign temp = ^{a,b};
bit valid_inputs_temp, valid_inputs_2;
wire valid_inputs;
always @(temp)
begin
if (temp === 1'b1 || temp === 1'b0)
begin
valid_inputs_temp <= 1'b1;
end
else
begin
valid_inputs_temp <= 1'b0;
end
end
assign #(15,0) valid_inputs = valid_inputs_temp;
always @(temp)
begin
if (temp === 1'b1 || temp === 1'b0)
begin
#15 valid_inputs_2 <= 1'b1;
end
else
begin
valid_inputs_2 <= 1'b0;
end
end
endmodule
Alors que le signal valid_inputs fonctionne parfaitement, mais je Ne suis pas tout à fait sûr pourquoi valid_inputs_2 ne fonctionne pas exactement la même chose? Y a-t-il un moyen de mettre en œuvre le délai inertiel en utilisant toujours le code de procédure?
Veuillez noter que bien que je puisse modifier l'instruction d'affectation dans le code ci-dessus de telle sorte que j'élimine totalement le bloc toujours-début correspondant, pour quelque raison je dois utiliser le style de codage toujours-début.
Merci, Vinayak
est un moyen de vérifier plus concise et significative pour x/z dans un signal. Reportez-vous à la norme IEEE Std 1800-2102, Fonctions du système vectoriel 20,9 bits – toolic
Des délais peuvent également être ajoutés en utilisant un bloc 'specified'. – toolic
Quelle est la raison de l'utilisation de l'expression min/max dans le délai? au lieu de '# (15,0)', vous pouvez juste utiliser '# 15'. Il devrait vous rapprocher de la deuxième mise en œuvre. Aussi, ne ** pas ** utiliser des assighments non-bloquants dans ces blocs, utilisez '=' au lieu de ''<='. ce n'est pas vhdl. Et dans le premier cas, vous avez un délai imposé pour '1' et '0', pensant que dans le second cas, seul '1' est retardé. Ajouter # 15 à la deuxième clause aussi bien. – Serge