|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。- u( S$ @& z5 g( }' \
2、其中,fetch是外来时钟clk的8分频信号。" |) A- V9 _5 E1 I2 Z; R: Q
3、clk1信号用作指令寄存器的时钟信号。
$ P( L' _ s6 v& I( X. N4、alu_clk则用于触发算术逻辑运算单元(8位)。' N# i; K& |! ?
0 p j+ c% C* q+ X按以上要求用verilog写出时钟发生器。. x, v& N; n7 z" k* M8 g5 ^
; Z" P5 @8 @) O6 B7 `2 g
以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:}
3 R' C) D k8 l# `8 [' T5 F8 gmodule clk_gen(clk,rst,fetch,clk1,alu_clk);
# p* l8 s8 h8 D* Zinput clk,rst;0 J% i9 p S) W- q5 r
output fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址" J6 |$ @& K; x1 u# a
output clk1; //控制指令寄存器,累加器,状态控制器的时钟
v, F" A) K1 P+ ~output alu_clk; //控制算术逻辑运算单元的时钟% J' t' d7 u+ o( t: B
reg [2:0] count;9 \+ O" J$ x: Q( \# o Y. `
reg fetch;
8 G# n) \# f. _' i) s; S* N/ creg alu_clk;0 P% g# O+ }0 ^+ d( k3 k
//reg [2:0] N;6 { E" K2 J1 D. |! B: L3 A& M: V8 V
//reg clk1;$ Y" Q% V; _ O" @
assign clk1 = ~clk; //原输入,原输出
8 e: S, F+ N; [: {) I- Y, v. Bparameter N=8; //对clk进行八分频处理之后赋值给fetch
" ~5 U7 W) S- N' e o: C4 valways @ (posedge clk)3 H, C/ x+ }; h9 f
begin% M& n- ~+ c5 ^1 h. e
if (rst)
* u5 Q6 v8 N& v begin
" F1 D9 K/ A, b& I# A% o# R fetch <= 1'b0;
& F& X0 c- i' ]& `5 G6 N8 \( v //clk1 <= 1'b0;) O) ~* d- h2 A- q+ ^: p s
count <= 1'b0;
7 y/ t" d1 p! ^9 N8 z7 U alu_clk <= 1'b0;
4 m0 U8 i/ Z* o. i end& ~' Z3 R" p+ {, K- b9 B% H
else if(count<=(N/2-1))' z# b* v- b$ M g9 v0 c* y
count <= count + 1;$ t# Q1 K* u$ @8 p, |! A
else$ K' _, m4 h/ g- o4 V3 ~; A" O
begin 8 I Y! a& S+ Q0 L8 L
count <= 1'b0;
6 ]- P- V5 H: h2 H3 Y fetch <= ~clk;
- r; M% q$ N) K0 C2 U end: Z9 g; P" B8 d% i9 N4 r
end
5 e, j! Q2 @+ _# c2 y4 n- \4 |
# F$ q# ~5 [( D5 ~; E$ Vendmodule |
|