2017-08-08 3 views
0

J'ai eu du mal à comprendre le code Verilog que j'essaie de réécrire. Plus précisément cette ligne:? Déclarations dans Verilog

assign x = (y) ? a | b | c : 1'b0; 

Je pense qu'il est une instruction if, mais je suis toujours pas entièrement sûr de savoir comment cela fonctionne, de sorte que toute traduction d'aide serait génial!

+0

[Bienvenue à StackOverflow] (https://stackoverflow.com/tour). S'il vous plaît lire notre page [demander] pour obtenir des conseils sur la façon d'améliorer votre question . Les grandes questions ont tendance à générer des réponses plus rapides et meilleures de la part de la communauté. – ochi

Répondre

1

c'est l'opérateur ternaire avec une sémantique similaire à d'autres langages de programmation. il peut à peu près être considéré comme if statment:

if (y) 
    x = a | b | c; 
else 
    x = 1'b0; 

bien en Verilog il est pas une substitution exacte car elle fait aussi des fonctionnalités spécifiques en présence de « x.

0

Il s'agirait en effet d'une instruction if-else qui implémenterait un mux. Vous pouvez voir ce code comme suit

How this would synthesize