|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。" d. x; f8 U a% S) }" R
2、其中,fetch是外来时钟clk的8分频信号。 v' }# R( `9 O- F9 I: q
3、clk1信号用作指令寄存器的时钟信号。2 k! N1 T% O! X) m
4、alu_clk则用于触发算术逻辑运算单元(8位)。
6 t6 l2 e! W& D I$ l+ T: ^+ Z$ q( Z
按以上要求用verilog写出时钟发生器。: M1 r0 z% r9 I. G7 X! ?) X7 X
2 R K: i6 T- S& D以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:}
@2 x. f& f) _+ g8 nmodule clk_gen(clk,rst,fetch,clk1,alu_clk);- Y- \4 K+ J5 n6 G
input clk,rst;
8 \2 ]9 N# Y% P! B! n8 Xoutput fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址
, t( P( @2 e: f0 z9 o* Aoutput clk1; //控制指令寄存器,累加器,状态控制器的时钟4 S' e1 g: ] h% X2 m/ `/ r# t
output alu_clk; //控制算术逻辑运算单元的时钟
. C$ A* N0 H) A! u' d0 [9 ereg [2:0] count;
; e* S* @8 p& Greg fetch; f E) u- N2 V: i Q' T
reg alu_clk;
0 H6 z" a8 [1 O, ^: X0 q//reg [2:0] N;) }/ p: E$ I2 u
//reg clk1;: m8 N9 o1 U' U/ K( V' G' c% O0 [
assign clk1 = ~clk; //原输入,原输出+ t, l1 y1 N: C5 N
parameter N=8; //对clk进行八分频处理之后赋值给fetch
. |. @$ D2 Q* k- I$ c2 x, X( I- Falways @ (posedge clk)
" u, e+ y* f$ r* `; S; J begin, l' M7 H, z& r$ `
if (rst), ]; V2 ]. }+ e8 M
begin
, v9 r# s+ @& [+ p+ c, s, X! }! G fetch <= 1'b0; 5 ~% j! c& [8 Z1 S2 L0 c
//clk1 <= 1'b0;! f0 E& m& d* s I+ k* |$ ]
count <= 1'b0;8 G) D9 }* P1 A; F+ k/ k! K/ h# O% b( m
alu_clk <= 1'b0;0 q6 }4 A5 g4 b& @7 f5 m
end/ G3 W, @6 N. o7 i: E7 b: ~
else if(count<=(N/2-1)). s }% Z$ c w1 n
count <= count + 1;
) K/ {) f3 I8 K else
4 {: b; \2 y+ V, J, K9 k begin ) ~% b) @- \9 g" o/ U4 \: H
count <= 1'b0;
6 q! @0 N/ ~- {3 M: C6 M; X fetch <= ~clk;/ @; c6 y, B2 f
end M8 w1 N2 r- t
end
: b) y/ q, z2 q 7 E' T$ W# R E: P, E
endmodule |
|