Προς το περιεχόμενο

Ερώτηση σχεδιασμού καταχωρητή


footballer20

Προτεινόμενες αναρτήσεις

Καλησπέρα...

 

Θα ήθελα να σχεδιάσω ένα καταχωρητή 4 bits με σειριακή είσοδο και παράλληλη έξοδο σε Verilog ο οποίος να έχει ασύγχρονη είσοδο καθαρισμού(reset)...Πως μπορώ να κάνω ταυτόχρονα reset όλα τα flip flops του καταχωρητή???Χρησιμοποιώντας την εντολή {if(reset) q<=4'b0000;} μου μηδενίζει τα flip flops όπως βλέπω στις κυματομορφές αλλά το κάνει σταδιακά(φαίνεται σα να ολισθαίνει το πρώτο 0 στα υπόλοιπα) και δεν τα μηδενίζει όλα ταυτόχρονα....Σκέφτηκα μήπως έκανα προσπέλαση ξεχωριστά σε όλα flip flops αλλά τα έχω δηλώσει ως q[3:0] (διανύσματα δηλαδή) και δεν καταφέρνω να έχω πρόσβαση σε κάθε μία συνιστώσα για να τη μηδενίσω...Καμιά ιδέα??

 

Σας ευχαριστώ εκ των προτέρων για το χρόνο σας και αναμένω τις απαντήσεις σας...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα...

 

Θα ήθελα να σχεδιάσω ένα καταχωρητή 4 bits με σειριακή είσοδο και παράλληλη έξοδο σε Verilog ο οποίος να έχει ασύγχρονη είσοδο καθαρισμού(reset)...Πως μπορώ να κάνω ταυτόχρονα reset όλα τα flip flops του καταχωρητή???Χρησιμοποιώντας την εντολή {if(reset) q<=4'b0000;} μου μηδενίζει τα flip flops όπως βλέπω στις κυματομορφές αλλά το κάνει σταδιακά(φαίνεται σα να ολισθαίνει το πρώτο 0 στα υπόλοιπα) και δεν τα μηδενίζει όλα ταυτόχρονα....Σκέφτηκα μήπως έκανα προσπέλαση ξεχωριστά σε όλα flip flops αλλά τα έχω δηλώσει ως q[3:0] (διανύσματα δηλαδή) και δεν καταφέρνω να έχω πρόσβαση σε κάθε μία συνιστώσα για να τη μηδενίσω...Καμιά ιδέα??

 

Σας ευχαριστώ εκ των προτέρων για το χρόνο σας και αναμένω τις απαντήσεις σας...

 

 

Δες ένα παράδειγμα ενός 8-bit register με ασύγχρονο reset για να καταλάβεις:

 

>
module 8BIT_REG( DI, CLK, RST, DO); 
 input [7:0] DI; 
 input CLK, RST; 
 output [7:0] DO; 
 reg [7:0] DO; 

 always @( posedge CLK or posedge RST) 
   if (RST == 1'b1) 
     DO = 8'b00000000; 
   else 
     DO = DI; 
endmodule 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι κάτι παρόμοιο είχα γράψει και εγώ, απλά το πρόβλημά μου είναι ότι στις κυματομορφές ο καταχωρητής δεν μηδενίζεται αμέσως μόλις εφαρμόζεται reset=0 αλλά σταδιακά μηδενίζεται(1111 -> 0111 -> 0011 -> 0001 -> 0000) και δεν ξερω κατά πόσο είναι σωστό αυτό αφού το reset είναι ασύγχρονο...Μπορεί να είναι και θέμα του testbench μου αφού ο κώδικάς φαίνεται σωστός....

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι κάτι παρόμοιο είχα γράψει και εγώ, απλά το πρόβλημά μου είναι ότι στις κυματομορφές ο καταχωρητής δεν μηδενίζεται αμέσως μόλις εφαρμόζεται reset=0 αλλά σταδιακά μηδενίζεται(1111 -> 0111 -> 0011 -> 0001 -> 0000) και δεν ξερω κατά πόσο είναι σωστό αυτό αφού το reset είναι ασύγχρονο...Μπορεί να είναι και θέμα του testbench μου αφού ο κώδικάς φαίνεται σωστός....

 

Κάτι λάθος στο tb σου είναι. Το ασύγχρονο με το σύγχρονο reset επίσης δεν έχει σχέση με αυτό που περιγράφεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάτι λάθος στο tb σου είναι. Το ασύγχρονο με το σύγχρονο reset επίσης δεν έχει σχέση με αυτό που περιγράφεις.

 

Πώς θα πρέπει τότε να είναι το testbench ώστε να φαίνεται ότι το reset είναι ασύγχρονο???

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάνε post το tb σου να σου πω.

 

Αυτό έχω γράψει ως testbench:

 

module SIPO_register_testbench;

 

reg clk;

reg clr;

reg sin;

wire [3:0] q;

 

SIPO_register S0(clk,clr,sin,q);

 

always

#100 clk=~clk;

initial

begin

clk=1'b0;

clr=1'b0;

 

#400 sin=1'b0;

#800 sin=1'b1;

 

#1500 clr=1'b1;

 

end

initial #7000 $finish;

 

endmodule

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό έχω γράψει ως testbench:

 

module SIPO_register_testbench;

 

reg clk;

reg clr;

reg sin;

wire [3:0] q;

 

SIPO_register S0(clk,clr,sin,q);

 

always

#100 clk=~clk;

initial

begin

clk=1'b0;

clr=1'b0;

 

#400 sin=1'b0;

#800 sin=1'b1;

 

#1500 clr=1'b1;

 

end

initial #7000 $finish;

 

endmodule

 

Το ασύγχρονο με το σύγχρονο reset δεν έχει καμία σχέση με αυτό που περιγράφεις ως πρόβλημα, σου το έγραψα και παραπάνω! Αν κρίνω από το όνομα του σήματος στο ΤΒ σου αυτό που έχεις υλοποιήσει είναι CLEAR και οχι RST. Τελικά τι είναι; Κανε post και τον κώδικα του καταχωρητή και βάλτους σε Tags για να διαβάζονται.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...