|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。
0 W! d3 }. _! d$ R& g$ I! p2、其中,fetch是外来时钟clk的8分频信号。" D9 C' _5 `4 s3 c3 b
3、clk1信号用作指令寄存器的时钟信号。
F9 e4 i9 ?/ |8 N. c4、alu_clk则用于触发算术逻辑运算单元(8位)。
5 j. y* T/ W) W2 b$ T- }) X
5 D6 h4 _7 u L, R+ P4 ]按以上要求用verilog写出时钟发生器。
0 Q. ~: L7 _/ `$ R% r, n9 ^) u4 {+ x* b& L
以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:}
3 _* f3 f( v* [; n& |module clk_gen(clk,rst,fetch,clk1,alu_clk);9 m; w; b; g2 u* n
input clk,rst;
1 M, r3 \1 e, S' Poutput fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址! P7 f6 s7 {0 {
output clk1; //控制指令寄存器,累加器,状态控制器的时钟
5 d6 M9 A3 O! h3 X; v' Joutput alu_clk; //控制算术逻辑运算单元的时钟1 H) f/ ~# J: r7 R; a
reg [2:0] count;
" m: T$ Q3 w6 |- Nreg fetch;
1 j7 B$ ^$ O% Nreg alu_clk;
4 L1 p) w3 w3 Q8 ^$ |//reg [2:0] N;
5 Y0 z7 M8 ?- H, |! y; M//reg clk1;, O. R9 s4 p x4 v, z1 s
assign clk1 = ~clk; //原输入,原输出
; d" ~. G' r7 eparameter N=8; //对clk进行八分频处理之后赋值给fetch
- F$ V& W+ [1 l! |' Talways @ (posedge clk)9 T4 W0 X: h4 n( ~ Y- i
begin4 j4 v. B. }2 c) J0 }9 N
if (rst)
7 j$ a3 @& D# h. `9 Y3 c) K begin
8 y- ?. B2 E! Q) O fetch <= 1'b0; 2 s; w0 q6 x* B% |+ R7 I/ K
//clk1 <= 1'b0;, q" z* R: r$ g
count <= 1'b0;
, V) f0 [# O6 V0 K$ H$ u) `7 S alu_clk <= 1'b0;5 K' Y( q7 a, d
end
: `$ H: ~; h& X8 |) u1 [- J$ E else if(count<=(N/2-1))7 T# s% p; ?* W k! f% B
count <= count + 1;
: ]+ A3 ]' c: ]8 B. R else
/ g( S0 E! i. c begin : R% o5 k. @& I# c
count <= 1'b0;. C6 m. \+ v* ~2 Z6 t8 q6 G6 i! n
fetch <= ~clk;
) t- |, R& I Q" |" N) ~ end
4 K* o5 _' `7 @ end
g! e2 o* E1 | 7 P$ `+ ^' @, h5 N5 ~( {& M& b4 x
endmodule |
|