A
atif.india
Guest
Salut,
Je vous écris un code pour assembler Ethernet où je dois d'abord lire la loc premier mémoire (32 bits) placer les données à 8 bits loc temp (changement toutes les deux cycles d'horloge), puis incrémente le pointeur de MEM et faire la même chose (ce fois, c'est seulement le poing 16 bits).J'ai utilisé contre mod pour la fin.Mon prog ressemble à ceci
assembleur module (données, STRT, du folklore, err2, CLK, RST, buf_data, buf_addr);
reg de sortie [07:00] données;
STRT entrée, CLK, la TVD;
reg sortie du folklore, err2;
entrée [31:0] buf_data;
sortie reg [08:00] buf_addr;
reg [31:0] cadre;
toujours @ (buf_data)
frame = buf_data;
reg [3:0] = MOD8 4'd0;
reg [02:00] Mod4 3'd0 =;
paramètre ralenti 3'd0 =;
= paramètre desadd 3'd1;
paramètre desadd2 3'd2 =;
= paramètre Sadd 3'd3;
reg [02:00] État;
toujours @ (posedge CLK)
commencer
if (TVD)
Etat = ralenti;
d'autre
affaire (d'Etat)
ralenti: if (START)
Etat = desadd;
d'autre
Etat = ralenti;
desadd:
if (MOD8 == 4'd8)
Etat = desadd2;
d'autre
commencer
Etat = desadd;
MOD8 = MOD8 4' D1;
fin
desadd2:if (Mod4 == 3'd4)Etat = Sadd;d'autrecommencerEtat = desadd2;Mod4 = Mod4 3 D1;fin
endcase
fin
toujours @ (Etat ou MOD8 ou Mod4 ou cadre)
commencer
affaire (d'Etat)
au repos:
commencer
data = 8'd0;
EOF = 1'd0;
err2 = 1'd0;
buf_addr = 9'd0;
fin
desadd:
commencer
cas (MOD8)
4'd0: data = [cadre 31:24];
4'd1: data = [cadre 31:24];
4'd2: data = [cadre 23:16];
4'd3: data = [cadre 23:16];
4'd4: data = [cadre 15:08];
4'd5: data = [cadre 15:08];
4'd6: data = [cadre 07:00];
4'd7: data = [cadre 07:00];
par défaut: data = 8'd0;
endcase
findesadd2:commencerbuf_addr = 9'd1;cas (Mod4)3'd0: data = [cadre 31:24];3'd1: data = [cadre 31:24];3'd2: data = [cadre 23:16];3'd3: data = [cadre 23:16];par défaut: data = 8'd0;endcasefin
endcase
fin
endmoduleQuand je commente sur l'état et l'utilisation que desadd2 desadd Je reçois la production proprement dite (les données sont prises à partir de tampon et est changé tous les deux cycles CLK), mais le moment je ajouter l'état suivant mon op disparaît complètement.Quel pourrait être le problème avec cette affaire.Un avertissement que je veux en venir, c'est qu'il ya problème avec déduire les verrous qui détient sa valeur perv dans un ou plusieurs trhu chemin toujours construire.
Je vous écris un code pour assembler Ethernet où je dois d'abord lire la loc premier mémoire (32 bits) placer les données à 8 bits loc temp (changement toutes les deux cycles d'horloge), puis incrémente le pointeur de MEM et faire la même chose (ce fois, c'est seulement le poing 16 bits).J'ai utilisé contre mod pour la fin.Mon prog ressemble à ceci
assembleur module (données, STRT, du folklore, err2, CLK, RST, buf_data, buf_addr);
reg de sortie [07:00] données;
STRT entrée, CLK, la TVD;
reg sortie du folklore, err2;
entrée [31:0] buf_data;
sortie reg [08:00] buf_addr;
reg [31:0] cadre;
toujours @ (buf_data)
frame = buf_data;
reg [3:0] = MOD8 4'd0;
reg [02:00] Mod4 3'd0 =;
paramètre ralenti 3'd0 =;
= paramètre desadd 3'd1;
paramètre desadd2 3'd2 =;
= paramètre Sadd 3'd3;
reg [02:00] État;
toujours @ (posedge CLK)
commencer
if (TVD)
Etat = ralenti;
d'autre
affaire (d'Etat)
ralenti: if (START)
Etat = desadd;
d'autre
Etat = ralenti;
desadd:
if (MOD8 == 4'd8)
Etat = desadd2;
d'autre
commencer
Etat = desadd;
MOD8 = MOD8 4' D1;
fin
desadd2:if (Mod4 == 3'd4)Etat = Sadd;d'autrecommencerEtat = desadd2;Mod4 = Mod4 3 D1;fin
endcase
fin
toujours @ (Etat ou MOD8 ou Mod4 ou cadre)
commencer
affaire (d'Etat)
au repos:
commencer
data = 8'd0;
EOF = 1'd0;
err2 = 1'd0;
buf_addr = 9'd0;
fin
desadd:
commencer
cas (MOD8)
4'd0: data = [cadre 31:24];
4'd1: data = [cadre 31:24];
4'd2: data = [cadre 23:16];
4'd3: data = [cadre 23:16];
4'd4: data = [cadre 15:08];
4'd5: data = [cadre 15:08];
4'd6: data = [cadre 07:00];
4'd7: data = [cadre 07:00];
par défaut: data = 8'd0;
endcase
findesadd2:commencerbuf_addr = 9'd1;cas (Mod4)3'd0: data = [cadre 31:24];3'd1: data = [cadre 31:24];3'd2: data = [cadre 23:16];3'd3: data = [cadre 23:16];par défaut: data = 8'd0;endcasefin
endcase
fin
endmoduleQuand je commente sur l'état et l'utilisation que desadd2 desadd Je reçois la production proprement dite (les données sont prises à partir de tampon et est changé tous les deux cycles CLK), mais le moment je ajouter l'état suivant mon op disparaît complètement.Quel pourrait être le problème avec cette affaire.Un avertissement que je veux en venir, c'est qu'il ya problème avec déduire les verrous qui détient sa valeur perv dans un ou plusieurs trhu chemin toujours construire.