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.

Son ok, j'ai compris maintenant. Son fondamentalement juste verilog être ennuyeux, mais un couple de conseils, juste au cas où quelqu'un trouve ce et a le même problème. 1. Ne mettez pas d'attribuer des états toujours des blocs de 2. Dans ce cas, le fil doit être reg 3. Fondamentalement, vous déclarez reg [4:0] s2 et d'attribuer la SOMME = s2[3:0] et COUT s2[4] 4. Puis son beaucoup plus facile de faire de la logique
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