Additionneur BCD en Verilog
Je suis en train d'écrire un Additionneur BCD en Verilog, mais j'ai de la difficulté avec l'un des modules. Plus précisément, l'additionneur qui prend deux chiffres BCD et les ajoute. Donc, l'idée est que si la somme des deux chiffres est inférieure ou égale à neuf, puis c'est correct. Toutefois, si elle est plus grande, alors un décalage de 6 doit être ajouté. Voici mon code Verilog:
module DIGITADD(
input [3:0] IN_A,
input [3:0] IN_B,
input CIN,
output reg COUT,
output reg [3:0] SUM
);
wire s2, c2;
always @ ( * )
begin
assign {c2, s2} = IN_A + IN_B + CIN;
if(s2 <= 9 && c2 == 0) begin
assign {COUT, SUM} = {c2, s2};
end
else if({c2, s2} > 9) begin
assign {COUT, SUM} = {c2, s2 + 6};
end
end
endmodule
De toute façon, quand j'essaie de faire la synthèse, dans Xilinx, j'obtiens les erreurs suivantes:
ERREUR:HDLCompilers:247 - "DIGITADD.v" de la ligne 33 de Référence scalaires fil 'c2' n'est pas un reg ou variable lvalue
ERREUR:HDLCompilers:247 - "DIGITADD.v" de la ligne 33 de Référence scalaires fil 's2' n'est pas un reg ou variable lvalue
ERREUR:HDLCompilers:42 - "DIGITADD.v" la ligne 33 Illégale gauche de la procédure d'attribuer
J'ai essayé de changer certaines choses, comme le changement du fil à reg, mais je ne peux toujours pas le faire fonctionner. Toute aide est appréciée.
Vous pouvez ajouter votre propre réponse et il faut l'accepter. De cette façon, cette question n'apparaît pas sur la question sans réponse de la liste.
Ok merci. Je ne savais pas que, dans le cas où ses pas évident, je suis encore un peu nouveau pour cette.
OriginalL'auteur DemonicImpact | 2010-11-14
Vous devez vous connecter pour publier un commentaire.
Ok, j'ai compris, le bon code est ci-dessous. Fondamentalement, voir le commentaire que j'ai fait sur ma question pour quelques conseils à retenir. C'est drôle comment beaucoup plus simple c'est par rapport à la pagaille que j'avais précédemment.
OriginalL'auteur DemonicImpact
En texte brut, n'ont pas d'affectation continuelle comme "attribuer" instruction dans un bloc de procédure c'est à dire toujours ou initiale.
N'oubliez pas la règle et la vie est belle 🙂
OriginalL'auteur JYasir