EDA365电子论坛网
标题:
时钟发生器
[打印本页]
作者:
微笑的记忆
时间:
2012-9-21 16:20
标题:
时钟发生器
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。
& q7 u% m, s; {/ C' m
2、其中,fetch是外来时钟clk的8分频信号。
/ F7 W& a0 ?. g
3、clk1信号用作指令寄存器的时钟信号。
2 ` Z' [( {6 w7 N2 A
4、alu_clk则用于触发算术逻辑运算单元(8位)。
: W- A M+ e/ x7 v5 I' P
% m! `2 ]: G% O2 s% j
按以上要求用verilog写出时钟发生器。
# ^" |# |1 J2 K8 c' M! S
$ Z2 h, B8 V4 W" Y6 J, ^
以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:}
2 |) I' I/ v. r2 |% R9 T, {- k" Q
module clk_gen(clk,rst,fetch,clk1,alu_clk);
; @2 U9 v1 K4 h* h0 k x
input clk,rst;
0 ^) M3 c6 S- y& l$ c3 X4 a
output fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址
& f) N/ s; X \0 g( {) R( z
output clk1; //控制指令寄存器,累加器,状态控制器的时钟
/ v8 T! Y. d5 e! R7 q
output alu_clk; //控制算术逻辑运算单元的时钟
. B* T+ T8 D H; J- @, W
reg [2:0] count;
7 X) |; T$ J5 v
reg fetch;
" L6 }9 _: ^+ J+ s" Y/ a: H
reg alu_clk;
* d9 ]# X$ G" Q! T. R4 _
//reg [2:0] N;
, g8 r7 h& d% @/ ^7 E8 i2 @
//reg clk1;
; v5 u {2 y- }
assign clk1 = ~clk; //原输入,原输出
9 _0 b1 h7 z7 K5 D% b
parameter N=8; //对clk进行八分频处理之后赋值给fetch
( y) w7 q9 H9 g0 P
always @ (posedge clk)
6 ~# M4 S( T" e# v% y
begin
* _/ b/ Y2 a, O$ m
if (rst)
Z! c1 r; l- ]* f; n
begin
/ N1 p7 d. \0 V- p( I/ A
fetch <= 1'b0;
5 z# S$ ], ~6 S$ |( d+ C, i
//clk1 <= 1'b0;
, C2 ~, W# K5 G& b6 g* C
count <= 1'b0;
5 q0 [ e, d. q/ F
alu_clk <= 1'b0;
* M% l+ j# x: p8 G& @1 `
end
' N1 s2 s' K. [# B& g
else if(count<=(N/2-1))
6 ]( K- K$ R- @, @: p( `# S& u
count <= count + 1;
% _4 l; }# M+ M+ I
else
! `1 k; z1 i8 @
begin
# u6 B6 A* t7 }5 Z; K4 o
count <= 1'b0;
) t7 h2 s# d. x3 Q: e- N8 X" d
fetch <= ~clk;
9 ~7 w k% G1 A$ h
end
* ?/ R3 m( @* v0 `3 ]3 N, [- K
end
. \- F5 I, f/ m; x8 d" x
- i5 D4 |. O; ~
endmodule
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2