Verilog: XOR tous les signaux du vecteur ensemble


13

Disons qu'on me donne un vecteur wire large_bus[63:0]de largeur 64. Comment puis-je XOR les signaux individuels ensemble sans les écrire tous:

assign XOR_value = large_bus[0] ^ large_bus[1] ^ ... ^ large_bus[63] ?

Je suis particulièrement intéressé à le faire pour les vecteurs où la largeur est spécifiée par a localparam.

Réponses:


14

Les opérateurs binaires comme &, |, ^ et quelques autres peuvent également être unaires dans verilog, ce qui est assez pratique. Ils effectuent des opérations au niveau du bit sur l'opérande et renvoient une valeur de bit unique. Voir par exemple les opérateurs de réduction sur asic-world.com.

reg [63:0] large_bus;

wire xor_value;
assign xor_value = ^large_bus;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.