|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。
, B2 {, w% j8 W( f) D$ s2、其中,fetch是外来时钟clk的8分频信号。& W# y# X2 E+ h; L9 c
3、clk1信号用作指令寄存器的时钟信号。
5 v4 Y3 j0 R7 Z) R9 \1 U4、alu_clk则用于触发算术逻辑运算单元(8位)。2 [3 e# n6 z, \9 G
& {. s" G- ]& y4 M$ w
按以上要求用verilog写出时钟发生器。
K' E3 O4 X5 |. R- B- H( A- z8 e$ y7 z$ m
以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:}
/ O6 N4 r0 l" {0 p* _module clk_gen(clk,rst,fetch,clk1,alu_clk);; y1 K" g2 b# @/ i& V$ E
input clk,rst;
& O# Z1 o# K+ Koutput fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址
! u" V, a b7 K& f5 }output clk1; //控制指令寄存器,累加器,状态控制器的时钟
& `& R% ^+ S2 Y Coutput alu_clk; //控制算术逻辑运算单元的时钟/ {: @( G. ?5 _$ L( G
reg [2:0] count;
7 V( [* f+ z3 g) j% q6 Lreg fetch;6 i# O# ^# i- V. e$ \4 `/ O6 ?
reg alu_clk;
: p& \' S& _" U- i# f% N9 {//reg [2:0] N;: |# I, b. A/ w3 \8 H
//reg clk1;# b# a x; ?. y4 N5 v0 L
assign clk1 = ~clk; //原输入,原输出
0 e. ^! B4 f- G( C6 y! zparameter N=8; //对clk进行八分频处理之后赋值给fetch
2 @' T& t1 v$ v+ j5 c3 X" zalways @ (posedge clk)* S( E7 j6 m8 m2 y; Q" m+ x, L; L- N
begin7 L+ ]3 c! ~4 ^9 B# [+ Y
if (rst)
; h* Z0 M! L1 B. M$ x( ]# { begin8 t0 C+ |- M2 i$ [6 m( w
fetch <= 1'b0; / I f: z* {) H# ]" W" I- x4 H
//clk1 <= 1'b0;
: y5 N# S, g, U- D count <= 1'b0;/ m, B. {; }7 [( V+ p4 h
alu_clk <= 1'b0;# m' O5 i$ C- Z3 k1 g' V
end7 z% e) f$ Y' F: N4 Z) f$ a) a8 j* s
else if(count<=(N/2-1))8 m. Z# }* H; T4 L" G7 ]
count <= count + 1;
& b, K! r7 Q3 E2 N else
2 S- V7 e* K) A' W: Y& H- S begin
8 M4 ?. A8 J0 d+ u# @3 P8 [ count <= 1'b0;# c( A! S, o- D- w) p* n$ f& M
fetch <= ~clk;5 l1 U# Z$ b; r5 o, t
end
3 E; w& m- k6 @; G! k end
; z- b) a% L2 b$ R) O% C 1 V& |. t4 u; s% y
endmodule |
|