|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。" P& }7 g! v9 w D& b7 l- z& K
2、其中,fetch是外来时钟clk的8分频信号。
! _% v1 o! e v/ N3、clk1信号用作指令寄存器的时钟信号。3 t. |; B+ c3 j3 l3 M) m# d. B) f
4、alu_clk则用于触发算术逻辑运算单元(8位)。
' K' A: v+ s4 r5 W5 \5 q' b e- E: \
按以上要求用verilog写出时钟发生器。( C& t6 r$ V1 u+ r% |
+ V( T' k& K' ?; y d2 B7 d3 `, j以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:} 5 N) ^6 f" @. N1 I" k- \+ a
module clk_gen(clk,rst,fetch,clk1,alu_clk);
3 h/ C4 K; `* t( Zinput clk,rst;+ }5 | D: m" h y k% _
output fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址1 {. B* I* G/ R! T
output clk1; //控制指令寄存器,累加器,状态控制器的时钟
; A3 q8 ]' M7 ]8 c4 l; B( Eoutput alu_clk; //控制算术逻辑运算单元的时钟 i4 E0 F# u4 [; x4 l% _' _
reg [2:0] count;
2 W# }. T; L$ o. m0 qreg fetch;
0 j7 @: }4 }. w7 x4 breg alu_clk;- i( k: W- ]: L
//reg [2:0] N;) R# F5 M: ^+ O
//reg clk1;
4 o6 J$ D. E# t$ Y+ K; q* D8 Zassign clk1 = ~clk; //原输入,原输出, h& T; w, C4 d- V3 H
parameter N=8; //对clk进行八分频处理之后赋值给fetch
+ E; i5 @8 W7 f5 v0 ?* Halways @ (posedge clk)
3 t, ~2 E3 w1 M6 c6 U `/ p begin
, v; E3 r# T- L6 |4 k1 X4 ?9 R if (rst)& `. i0 w3 H! `9 M/ _" ~% S8 q: p
begin8 v9 o: Q4 X% D+ n# Z4 ~
fetch <= 1'b0; 9 @! H8 Z2 Z$ |0 C
//clk1 <= 1'b0;* A9 V" ]" n+ W8 c/ G
count <= 1'b0;( p. |& O9 N- J
alu_clk <= 1'b0;0 e: ^3 ]9 a- a! r
end( I- e$ T$ f; k" p
else if(count<=(N/2-1))' l/ Q- F, Z/ l/ H4 E: w6 ?
count <= count + 1;: C% R6 _) I2 a) g5 Y
else
2 }% q/ h T+ ~2 \ _9 h begin
1 ?7 y' [& M2 H: f: d+ _ count <= 1'b0;
9 y; w' l: n/ c S6 O3 G t fetch <= ~clk;' Z, n( u9 o! a6 d0 B
end
+ [) E) m C0 F; M+ L end
: ^: _6 {/ V& }! O6 o0 y
5 Y: w e) R7 z! \' Lendmodule |
|