(原創) 如何產生50MHz的時脈? (IC Design) (Verilog)

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

Verilog

1 /* 
2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3 
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 */
9 
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

wave


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,所以這是一定要會的基本動作。

posted on 2008-02-10 22:07  真 OO无双  阅读(13957)  评论(0编辑  收藏  举报

导航