Si vous n'êtes pas familier avec accolades {}
, ils sont des opérateurs de concaténation. Vous pouvez lire à leur sujet dans le document IEEE Std for Verilog (par exemple, 1800-2009, Section 11.4.12).
assign pc_plus_4 = {pc[31],pcinc};
Cette concatène le MSB de pc
avec tous les bits de pcinc
pour assembler le signal pc_plus_4
. Cependant, dans ce cas, étant donné que pcinc
et pc_plus_4
sont tous les deux 32 bits de large, pc[31]
est ignoré. Un bon outil de pelage vous informera que le RHS est de 33 bits et que le LHS est de 32 bits, et que le bit le plus significatif sera perdu. La ligne peut être plus simplement codé comme:
assign pc_plus_4 = pcinc;
La dernière ligne est une erreur de compilation pour un simulateur j'utilise. Vous n'avez pas explicitement déclaré la largeur du signal branch_aadr
et la largeur de la constante 0
n'est pas spécifiée.
Où exactement vous coincez-vous? – Marty