羽蒙 发表于 2014-8-15 15:20:07

Verilog HDL 建模技巧 低级建模 仿顺序操作·思路篇12 - 再一次组织起来

4. 4 : 再


一次“组织”起来:

这一章,我们要讲 effect_module 和 flashing_module 组织起来,然后命名为“done”
代码如下:

1.module done
2.(
3.    CLK, RSTn,
4.    Start_Sig, Done_Sig,
5.    Q,
6.    Right_Done, Left_Done,//用于观察
7.    Right_Start, Left_Start    //用于观察
8.);
9.   
10.    input CLK;
11.    input RSTn;
12.    input Start_Sig;
13.    output Done_Sig;
14.    output Left_Done;
15.    output Right_Done;
16.    output Right_Start;
17.    output Left_Start;
18.    output Q;
19.   
20.    /*******************************/
21.   
22.    wire Right_Start_Sig;
23.    wire Left_Start_Sig;
24.    wire Right_Done_Sig;
25.    wire Left_Done_Sig;
26.   
27.    effect_module U3
28.    (
29.      .CLK( CLK ),
30.      .RSTn( RSTn ),
31.      .Start_Sig( Start_Sig ),// in from top
32.      .Done_Sig( Done_Sig ),   // out to top
33.      .Right_Start_Sig( Right_Start_Sig ),   // out to U2
34.      .Left_Start_Sig( Left_Start_Sig ),    // out to U2
35.      .Right_Done_Sig( Right_Done_Sig ),    // in from U2
36.      .Left_Done_Sig( Left_Done_Sig )       // in from U2
37.    );
38.   
39.    /*************************************/
40.   
41.    flashing_module U4
42.    (
43.      .CLK( CLK ),
44.      .RSTn( RSTn ),
45.      .Right_Start_Sig( Right_Start_Sig ),   // in from U1
46.      .Left_Start_Sig( Left_Start_Sig ),       // in from U1
47.      .Right_Done_Sig( Right_Done_Sig ),    // out to U1
48.      .Left_Done_Sig( Left_Done_Sig ),      // out to U1
49.      .Q( Q )                            // out to top
50.    );
51.   
52.    /*************************************/
53.   
54.    //用于观察
55.    assign Left_Done = Left_Done_Sig;
56.    assign Right_Done = Right_Done_Sig;
57.    assign Right_Start = Right_Start_Sig;
58.    assign Left_Start = Left_Start_Sig;
59.   
60.endmodule

这是第二层的组织了,到这里基本上我们已经完成如下图的效果

1. `timescale 1 ns/ 1 ns
2. module done_vlg_tst();
3. reg CLK;
4. reg RSTn;
5. reg Start_Sig;
6.                                             
7. wire Done_Sig;
8. wire Q;
9. wire Left_Done;
10.wire Right_Done;
11.wire Right_Start;
12.wire Left_Start;
13.done i1
14.(
15. .CLK(CLK),
16. .Done_Sig(Done_Sig),
17. .Q(Q),
18. .RSTn(RSTn),
19. .Start_Sig(Start_Sig),
20. .Left_Done( Left_Done ),
21. .Right_Done( Right_Done ),
22. .Right_Start( Right_Start ),
23. .Left_Start( Left_Start )
24.);
25.
26.initial                                                
27.beginRSTn = 0; #20; RSTn = 1;end
28.
29.initial
30.beginCLK = 1; forever #20 CLK = ~CLK;end
31.
32.initial
33.beginStart_Sig = 1;end
34.                                                
35.endmodule

Sunlife 发表于 2014-8-15 21:42:23

CLK = 1; forever #20 CLK = ~CLK;end
页: [1]
查看完整版本: Verilog HDL 建模技巧 低级建模 仿顺序操作·思路篇12 - 再一次组织起来