// positive edge-triggered one-bit dtype module dff(q, data, clock); output q; input data, clock; reg q; always @(posedge clock) q = data; endmodule // dff // gate-level description of shift register that delays the input signal // 3 clock cycles module shift1( q, data, clock); output q; input data, clock; wire q1,q2,q3; dff mod1( q1, data, clock); dff mod2( q2, q1, clock); dff mod3( q3, q2, clock); dff mod4( q, q3, clock); endmodule // shift // behavioural-level description of shift register that delays the input // signal 3 clock cycles module shift2( q, data, clock); output q; input data, clock; reg [2:0] regMem; reg q; always @(posedge clock) {q, regMem} = {regMem, data}; endmodule // shift2 module stimulus; reg data, clock; wire q1,q2; initial begin clock = 1'b0; forever #2 clock = ~clock; end shift1 shiftmod1( q1, data, clock); shift2 shiftmod2( q2, data, clock); initial begin data = 1'b0; forever #4 data = ~data; end initial #1 forever #2 $display($time, " clk = %b data = %b q1 = %b q2 = %b ", clock, data, q1, q2); initial #40 $finish; endmodule <div align="center"><br /><script type="text/javascript"><!-- google_ad_client = "pub-7293844627074885"; //468x60, Created at 07. 11. 25 google_ad_slot = "8619794253"; google_ad_width = 468; google_ad_height = 60; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><br /> </div>