SystemC problème
simerab14
Messages postés
3
Statut
Membre
-
simerab14 Messages postés 3 Statut Membre -
simerab14 Messages postés 3 Statut Membre -
Bonjour,
je désire affecter le résultat d'une opération à un signal. voici le programme :
sc_uint<37> fifo; // signal sur qui sera effectuée l'opération.
sc_uint<32> msb; // signal qui recevra le résultat de l'opération
// affichage résultat sans affectation, cet affichage donne le résultat attendu
std::cout << std::hex
<< (sc_uint<32>) ((fifo >> 4) & 0xFF000000);
// affectation puis affichage
msb = (sc_uint<32>) ((fifo >> 4) & 0x00FF000000);
std::cout << std::hex
<< msb;
// l'affichage de msb après affectation du résultat de l'opération, n'est pas correct, car msb contient 0.
Comment se fait-il que la même opération donne un résultat différent, selon qu'on l'affiche directement ou qu'on l'affecte ? Ce qui m'intéresse, c'est comment récupérer le résultat correct et l'affecter à un signal tel que msb ?
Merci à tous ceux qui peuvent m'aider.
je désire affecter le résultat d'une opération à un signal. voici le programme :
sc_uint<37> fifo; // signal sur qui sera effectuée l'opération.
sc_uint<32> msb; // signal qui recevra le résultat de l'opération
// affichage résultat sans affectation, cet affichage donne le résultat attendu
std::cout << std::hex
<< (sc_uint<32>) ((fifo >> 4) & 0xFF000000);
// affectation puis affichage
msb = (sc_uint<32>) ((fifo >> 4) & 0x00FF000000);
std::cout << std::hex
<< msb;
// l'affichage de msb après affectation du résultat de l'opération, n'est pas correct, car msb contient 0.
Comment se fait-il que la même opération donne un résultat différent, selon qu'on l'affiche directement ou qu'on l'affecte ? Ce qui m'intéresse, c'est comment récupérer le résultat correct et l'affecter à un signal tel que msb ?
Merci à tous ceux qui peuvent m'aider.
2 réponses
Salut ne sacahnt pas ce qu'est sc_uint, je ne sais comment te répondre.
Par exemple, si c'est un pointeur, ça ne m'étonne pas. Exemple, un char* cout t'affichera la chaine qu'il contient (et non la valeur du pointeur) par contre, lors d'une affectation il prendra bien en compte la valeur du pointeur.
Bref, pour dire que l'opérateur << de cout n'a pas forcément les même comportement que l'opérateur d'assignement '='.
En plus, vu que sc_uint a tout l'air d'une classe, il y a des chance que cet opérateur ait été surchargé.
Par exemple, si c'est un pointeur, ça ne m'étonne pas. Exemple, un char* cout t'affichera la chaine qu'il contient (et non la valeur du pointeur) par contre, lors d'une affectation il prendra bien en compte la valeur du pointeur.
Bref, pour dire que l'opérateur << de cout n'a pas forcément les même comportement que l'opérateur d'assignement '='.
En plus, vu que sc_uint a tout l'air d'une classe, il y a des chance que cet opérateur ait été surchargé.