Potrebujete pomoč pri tem verilog koda

V

victoria_jitesh

Guest
Prosim, povejte mi, zakaj v mojem naslednjo kodo takoj signal, da ne bova vrednosti posodobljene v primeru dogodka strt_bo signal."časovnem 1ns / 1ps [/ b ]///////////////////////////////////////// /////////////////////////////////////////
/ / Podjetje:
/ / Engineer:
/ /
/ / Create Date: 18:07:41 06/23/2008
/ / Design Name:
/ / Module Name: hrbtni
/ / Ime projekta:
/ / Target Devices:
/ / Orodje različice:
/ / Opis::
/ /
/ / Odvisnosti:
/ /
/ / Revizija:
/ / Revision 0.01 - File Created
/ / Dodatni Komentarji:
/ /
////////////////////////////////////////////////// ////////////////////////////////
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] poskus = 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;
/ / žica [19:0] del;
reg [20:0] zamudo;
reg temp = 0;

reg t1;
wire t2;

dodeliti t2 = strt_bo | xmit_over;
/ / RANDOM LOGIC ŠTEVILO OUTPUT GENERATION
//=======================================
/ / Opomba: collattempt ni naključno ne.generator output.
Vedno @ (posedge strt_bo)
začeti
collattempt = collattempt 1;
primeru (collattempt)
0: začetek
slot_cnt_int <= 0;
zamuda = slot_cnt_int * slot_time;
konec
1: začetek
slot_cnt_int <= 2;
zamuda = slot_cnt_int * slot_time;
konec
2: začeti
slot_cnt_int <= 4;
zamuda = slot_cnt_int * slot_time;
konec
3: začetek
slot_cnt_int <= 8;
zamuda = slot_cnt_int * slot_time;
konec
4: začetek
slot_cnt_int <= 16;
zamuda = slot_cnt_int * slot_time;
konec
5: začetek
slot_cnt_int <= 32;
zamuda = slot_cnt_int * slot_time;
konec
6: začetek
slot_cnt_int <= 64;
zamuda = slot_cnt_int * slot_time;
konec
7: začetek
slot_cnt_int <= 127;
zamuda = slot_cnt_int * slot_time;
konec
8: začetek
slot_cnt_int <= 127;
zamuda = slot_cnt_int * slot_time;
konec
9: začetek
slot_cnt_int <= 127;
zamuda = slot_cnt_int * slot_time;
konec
10: začetek
slot_cnt_int <= 127;
zamuda = slot_cnt_int * slot_time;
konec
default: začetek
slot_cnt_int <= 255;
zamuda = slot_cnt_int * slot_time;
konec
endcase
/ / zakasnitev = slot_cnt_int * slot_time;
konec
/ / dodeli del = slot_cnt_int * slot_time;

Vedno @ (t1, temp, zamude, RST, poskus, t2, slot_cnt_int)
začeti
t1 = t2;
if (rst == 1)
začeti
strt_def = 1'b0;
err1 = 1'b0;
konec
še
primeru (t1)
RUN:
začeti
poskus poskus = 1;
if (poskus == 17)
začeti
err1 = 1'b1;
poskus = 0;
konec
še
začeti
while (zamuda! = 0)
začeti
temp = temp 1;
zamuda = zamude-1;
konec
strt_def = 1'b1;
konec
konecIDLE:
začeti
t1 = strt_bo | xmit_over;
konec

endcase
konec
endmodule

 
Ali lahko zagotovi, da testbench kaže problem?

Nisem študiral kodo, vendar vidim mešanico blokiranja '=' in ne-blokiranje '<=' naloge.To je navadno slaba stvar.

Izraz dogodek na začetku svojega drugega "vedno" blok izgleda sumljivo.Ali res želite vse te različne signali sprožijo blok?To in vgrajenih ", medtem ko" zanka se bo verjetno preprečuje uspešno sintezo.

 

Welcome to EDABoard.com

Sponsor

Back
Top