|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。
4 c1 i, t' N# A2、其中,fetch是外来时钟clk的8分频信号。6 j0 V* G- d- G) g9 K2 _. d
3、clk1信号用作指令寄存器的时钟信号。2 {, s8 l: p& n5 ^8 {( ^
4、alu_clk则用于触发算术逻辑运算单元(8位)。
& S' z2 E9 V( p- Y2 _2 Y- {9 ~9 N9 t g/ Y6 z. e0 {! w
按以上要求用verilog写出时钟发生器。/ @% m- Q: b+ {7 Y- A& D- H
# U, p- Q; F% A9 d, Q+ X* I以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:} # V8 N+ l5 Z) q2 u/ p$ C- a
module clk_gen(clk,rst,fetch,clk1,alu_clk);
+ X* ?& p! V" O: n! Y; }input clk,rst;* {; ~. ]; A* |$ y) G s
output fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址4 X) i) j t C9 }
output clk1; //控制指令寄存器,累加器,状态控制器的时钟
4 ^, ^5 g0 R. m9 X; z; G0 g. s- Goutput alu_clk; //控制算术逻辑运算单元的时钟) G$ c9 ^- s6 I1 A/ `7 V5 }
reg [2:0] count;
( ]" t4 ]& p2 z$ Lreg fetch;
# f: i* [; ~5 E/ U+ f {3 Hreg alu_clk;
/ k4 E7 q j9 p H$ s/ `9 g//reg [2:0] N;( @1 F. u" }5 E
//reg clk1;3 `3 z! c; E0 D5 q' e n
assign clk1 = ~clk; //原输入,原输出7 \5 P9 d! u/ P* Z
parameter N=8; //对clk进行八分频处理之后赋值给fetch
, i3 q+ i6 x ~3 Xalways @ (posedge clk)
, L" C+ }2 l9 s7 d+ `' W0 V+ [1 ~ begin6 H5 ^/ r3 N5 Q7 A9 g
if (rst)/ o$ m2 r: b7 [) E7 G- v
begin1 P. ^* R$ n2 Z3 J8 i) g
fetch <= 1'b0; # T3 y; V* g, @1 ]
//clk1 <= 1'b0;
8 |0 E: s8 ~, `" t' q) Z count <= 1'b0;8 [8 s0 U! z5 D* I
alu_clk <= 1'b0;- L; Y+ j" I5 h5 }, d* v
end
( B; A) d$ h8 b. S! ] else if(count<=(N/2-1))
) g% `) g1 p& t) X/ U: ]0 G2 G- l+ ]; j count <= count + 1;
5 [0 E* q, X( F6 E8 t, b else( W. g6 V- a3 V' c
begin
7 x8 z. ?/ K* Q2 R count <= 1'b0;, h( g9 V/ j& H8 P- h
fetch <= ~clk;$ h5 p5 u- [! _
end, y4 P1 x7 I+ Y8 u1 ]. [
end
9 V1 S! l2 }7 J2 v1 W
5 ], N2 X& C& }. h. vendmodule |
|