Subversion Repositories ngs

Rev

Rev 23 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. // clocker module for simulation
  2.  
  3. module clocker(
  4.  
  5.         input  wire clk1,
  6.         input  wire clk2,
  7.  
  8.         input  wire clksel,
  9.         input  wire divsel,
  10.  
  11.         output wire clkout
  12. );
  13.  
  14. /*
  15. ъръ сы Є№ ЄєЄ яхЁхъы■ўшЄ№ ъыюъш?
  16. ёэрўрыр clksel ЁхёшэїЁшь яю т√їюфэюьє ъыюъє, ъръ яЁющф╕Є -
  17. т√їюфэющ ъыюъ т√ъы■ўшыш
  18. яюЄюь яю эютюьє тїюфэюьє ъыюъє єцх яЁюЁхёшэїЁхээюх яЁюуюэ хь
  19. х∙х Ёрч ЁхёшэїЁ  - ш ъръ яЁю°ыю, тъы■ўрхь т√їюф юя Є№
  20. */
  21. /*
  22. * т√°х эряшёрэр їєхЄр!11
  23. */
  24.  
  25.  
  26.         wire midck,ck;
  27.  
  28.         reg cksel,midsel;
  29.         reg ckon;
  30.  
  31.         reg divby2,idiv;
  32.  
  33.  
  34.  
  35.         initial
  36.         begin
  37.                 ckon = 1'b1;
  38.                 cksel = 1'b0;
  39.                 midsel = 1'b0;
  40.         end
  41.  
  42.  
  43.  
  44.         assign midck = midsel ? clk2 : clk1;
  45.  
  46.         always
  47.         begin
  48.                 @(negedge ck);
  49.  
  50.                 if( cksel!=clksel )
  51.                 begin
  52.                         ckon   <= 1'b0;
  53.                         midsel <= clksel;
  54.  
  55.                         repeat(2) @(negedge midck);
  56.  
  57.                         ckon  <= 1'b1;
  58.                         cksel <= midsel;
  59.                 end
  60.         end
  61.  
  62.         assign ck = ckon ? (cksel ? clk2 : clk1) : 1'b0;
  63.  
  64.  
  65.  
  66.         initial
  67.         begin
  68.                 divby2 = 1'b0;
  69.                 idiv=1'b0;
  70.         end
  71.  
  72.         always @(posedge ck)
  73.                 divby2 <= ~divby2;
  74.  
  75.  
  76.         always @(posedge divby2)
  77.                 idiv <= divsel;
  78.  
  79.  
  80.         assign clkout = idiv ? divby2 : ck;
  81.  
  82.  
  83.  
  84. endmodule
  85.  
  86.