Abstract
DE2預設為50MHz,在寫Testbench時,該如何產生50MHz的時脈(clock)呢?

Verilog

1 /* 

2 (C) OOMusou 2008 http://oomusou.cnblogs.com

4 Filename    : Clk_50M.v

5 Compiler    : ModelSim SE 6.1f

6 Description : Demo how to generate 50MHz clock

7 Release     : 02/10/2008 1.0

8 */

10 module Clk_50M;

11 

12 reg clk;

13 

14 parameter clkper = 20; // 20ns = 50MHz

15 // parameter clkper = 10 // 10ns = 100MHz

16 

17 initial

18 begin

19   clk = 1;

20 end

21 

22 always

23 begin

24   # (clkper / 2) clk = ~clk;

25 end

26 

27 endmodule

Waveform


14行

parameter clkper = 20; // 20ns = 50MHz

// parameter clkper = 10 // 10ns = 100MHz

50MHz相當於週期20ns,而100MHz相當於週期10ns,這裡使用parameter,日後若要更改時脈,只要修改parameter即可。

17行

initial

begin

  clk = 1;

end

一開始先將clk設為1。

22行

always

begin

  # (clkper / 2) clk = ~clk;

end

所謂的周期20ns,表示每10ns就會0變成1,1變成0。


Conclusion

為什麼要自己產生clock呢?在寫testbench時,只要是循序電路,除了接好連線外,接下來就是產生所需要的clock,所以這是一定要會的基本動作。