|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、时钟发生器clkgen利用外来的时钟信号clk生成一系列时钟信号,clk1、fetch、alu_clk,并送往cpu的其他部件。2 \6 C8 Z4 v% u: h! p+ w4 z# N0 u
2、其中,fetch是外来时钟clk的8分频信号。
( C, j7 h3 a$ B/ S! D0 ?' K3、clk1信号用作指令寄存器的时钟信号。5 M$ S& b- t2 v7 x
4、alu_clk则用于触发算术逻辑运算单元(8位)。; M1 I% b( o) M, `& ]
/ e9 u& }# @6 o# J9 _/ T/ e
按以上要求用verilog写出时钟发生器。- t O9 m1 M1 F' c- k
# D# |9 G# C/ N+ O/ w
以下是我写的,但是呢,其中的alu_clk不知道要怎么写。请教大神,还有,如果代码写的不是很规范,写的不是很简洁,请帮改下,或许你的一句话就会帮我打开一扇窗户,让我更加了解verilog。谢谢!{:soso__187047450382421961_3:} % y0 w s+ W* M/ B% P, n
module clk_gen(clk,rst,fetch,clk1,alu_clk);
2 S+ a4 x- K0 x- j0 Linput clk,rst;3 _, I1 Z; I0 ?1 ?
output fetch; //clk的8分频,用来控制地址多路器,输出指令地址与数据地址4 B6 Q W+ |6 M5 ]2 S
output clk1; //控制指令寄存器,累加器,状态控制器的时钟
: k0 O" C. s" {output alu_clk; //控制算术逻辑运算单元的时钟
" T3 x8 k7 ^2 q5 K$ [+ U* {reg [2:0] count;2 r! I' J5 F- m; q/ K6 _. e
reg fetch;
- h! H- [2 ^- p. A% W' Wreg alu_clk;9 F# y4 i# z" _" ~9 |
//reg [2:0] N;
3 |. |7 ?% ~- }- r//reg clk1;
]( k2 {1 |# N7 l7 G, x' vassign clk1 = ~clk; //原输入,原输出
, U$ h3 x& I( w1 Mparameter N=8; //对clk进行八分频处理之后赋值给fetch. d+ R3 ]1 L k" C$ z7 s
always @ (posedge clk); ?0 G. K! |) {
begin
+ m5 g3 N+ \' m9 n$ d; v if (rst)
2 U9 w; J8 c/ t! ^ begin
1 I- [0 ? |0 \2 j fetch <= 1'b0;
" H4 Y R9 J {8 [% k+ P& h //clk1 <= 1'b0;
2 T" j8 L$ [" k# c count <= 1'b0;
4 L) G3 |& \9 } @# m alu_clk <= 1'b0;+ B$ o4 [; z. B6 [) R& ~
end9 n6 q* D; j* b1 ~6 \" X7 ]2 ^
else if(count<=(N/2-1))
6 X2 y$ T Y& j8 {) A9 ~8 c' q count <= count + 1;
+ b! w- ?" v& Z5 C$ _( z- u else0 |3 E2 q% W: D: j. T$ k
begin 4 m) M4 q/ Z- t; B( i
count <= 1'b0;
! ^5 ?% u5 x0 _' a. o$ }& ~, c fetch <= ~clk;
! G% [) Z6 P! x d+ Z8 Q* e end4 f0 T }) `8 F \
end( j% a. P1 M! d
* p" `- f R5 Q( ^! D# Hendmodule |
|