Brug for hjælp i denne verilog kode

V

victoria_jitesh

Guest
Fortæl mig i, hvorfor i mit følgende kode forsinkelse signal værdi ikke at få opdateret i tilfælde af begivenheden på strt_bo signal.`tidshorisont 1ns / 1ps [/ b ]///////////////////////////////////////// /////////////////////////////////////////
/ / Firma:
/ / Ingeniør:
/ /
/ / Create Date: 18:07:41 06/23/2008
/ / Design Navn:
/ / Module Name: backof
/ / Projekt Navn:
/ / Target Devices:
/ / Tool versioner:
/ / Beskrivelse::
/ /
/ / Dependencies:
/ /
/ / Revision:
/ / Revision 0.01 - File Created
/ / Yderligere kommentarer:
/ /
////////////////////////////////////////////////// ////////////////////////////////
modul bcof (RST, xmit_over, strt_bo, strt_def, err1);
input rst;
input xmit_over;
input strt_bo;
output reg strt_def;
output reg err1;

reg [9:0] forsøg = 0;
reg [9:0] collattempt = 0;
reg [9:0] slot_cnt_int;parameter RUN = 1'b1, IDLE = 1'b0;reg [9:0] slot_time = 7'b1111111;
/ / wire [19:0] del;
reg [20:0] forsinkelse;
reg temp = 0;

reg t1;
wire t2;

tildele t2 = strt_bo | xmit_over;
/ / Random Number OUTPUT GENERATION LOGIC
//=======================================
/ / Bemærk: collattempt er ikke tilfældig.generator output.
altid @ (posedge strt_bo)
begynd
collattempt = collattempt 1;
sag (collattempt)
0: begynde
slot_cnt_int <= 0;
delay = slot_cnt_int * slot_time;
ende
1: begynder
slot_cnt_int <= 2;
delay = slot_cnt_int * slot_time;
ende
2: begynde
slot_cnt_int <= 4;
delay = slot_cnt_int * slot_time;
ende
3: begynder
slot_cnt_int <= 8;
delay = slot_cnt_int * slot_time;
ende
4: begynde
slot_cnt_int <= 16;
delay = slot_cnt_int * slot_time;
ende
5: begynde
slot_cnt_int <= 32;
delay = slot_cnt_int * slot_time;
ende
6: begynde
slot_cnt_int <= 64;
delay = slot_cnt_int * slot_time;
ende
7: begynde
slot_cnt_int <= 127;
delay = slot_cnt_int * slot_time;
ende
8: begynde
slot_cnt_int <= 127;
delay = slot_cnt_int * slot_time;
ende
9: begynde
slot_cnt_int <= 127;
delay = slot_cnt_int * slot_time;
ende
10: begynder
slot_cnt_int <= 127;
delay = slot_cnt_int * slot_time;
ende
default: begynde
slot_cnt_int <= 255;
delay = slot_cnt_int * slot_time;
ende
endcase
/ / delay = slot_cnt_int * slot_time;
ende
/ / tildel del = slot_cnt_int * slot_time;

altid @ (t1, temp, forsinkelse, RST, forsøg, T2, slot_cnt_int)
begynd
t1 = t2;
if (rst == 1)
begynd
strt_def = 1'b0;
err1 = 1'b0;
ende
anden
sag (t1)
RUN:
begynd
forsøg = forsøg 1;
if (forsøg == 17)
begynd
err1 = 1'b1;
forsøg = 0;
ende
anden
begynd
while (forsinkelse! = 0)
begynd
temp = temp 1;
delay = forsinkelse-1;
ende
strt_def = 1'b1;
ende
endeIDLE:
begynd
t1 = strt_bo | xmit_over;
ende

endcase
ende
endmodule

 
Kan du give en testbench, der viser problemet?

Jeg har ikke undersøgt din kode, men jeg kan se en blanding af blokering '=' og ikke-blokerende '<=' opgaver.Det er normalt en dårlig ting.

Arrangementet udtryk i begyndelsen af dit andet 'altid' blok ser mistænkelige ud.Ønsker du alle de forskellige signaler udløser den blok?Dette og det indbyggede ', mens' loop vil sandsynligvis forhindre en vellykket syntese.

 

Welcome to EDABoard.com

Sponsor

Back
Top