如何設計D Latch與D Flip-Flop? (Verilog)
Abstract
記憶元件的基礎:D Latch與D Flip-Flop。
記憶元件的基礎:D Latch與D Flip-Flop。
D Latch
Method 1:
使用continuous assignment:
使用continuous assignment:
d_latch.v / Verilog
1 /* 2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_latch.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d latch7 Release : 08/09/2008 1.08 */
9
10 module d_latch (11 input rst_n,12 input en,13 input d,14 output q15 );16
17 assign q = (!rst_n) ? 0 :18 (en) ? d : q;19 endmodule
3
4 Filename : d_latch.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d latch7 Release : 08/09/2008 1.08 */
9
10 module d_latch (11 input rst_n,12 input en,13 input d,14 output q15 );16
17 assign q = (!rst_n) ? 0 :18 (en) ? d : q;19 endmodule
Method 2:
使用always block:
d_latch2.v / Verilog
1 /* 2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_latch2.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d latch7 Release : 08/09/2008 1.08 */
9
10 module d_latch2 (11 input rst_n,12 input en,13 input d,14 output reg q15 );16
17 always@(rst_n, en, d, q) begin
18 if (!rst_n)19 q = 0;20 else if (en)21 q = d;22 end
23
24 endmodule
3
4 Filename : d_latch2.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d latch7 Release : 08/09/2008 1.08 */
9
10 module d_latch2 (11 input rst_n,12 input en,13 input d,14 output reg q15 );16
17 always@(rst_n, en, d, q) begin
18 if (!rst_n)19 q = 0;20 else if (en)21 q = d;22 end
23
24 endmodule
D Flip-Flop
Method 1:
使用always block
Method 1:
使用always block
d_ff.v / Verilog
1 /* 2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_ff.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d flip-flop7 Release : 08/09/2008 1.08 */
9
10 module d_ff (11 input clk,12 input rst_n,13 input en,14 input d,15 output reg q16 );17
18 always@(posedge clk or negedge rst_n)19 if (!rst_n)20 q <= 0;21 else if (en)22 q <= d;23 24 endmodule
3
4 Filename : d_ff.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d flip-flop7 Release : 08/09/2008 1.08 */
9
10 module d_ff (11 input clk,12 input rst_n,13 input en,14 input d,15 output reg q16 );17
18 always@(posedge clk or negedge rst_n)19 if (!rst_n)20 q <= 0;21 else if (en)22 q <= d;23 24 endmodule
Method 2:
使用Mega function
d_ff_mf.v / Verilog
1 /* 2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_ff_mf.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d flip-flop with Mega function7 Release : 08/11/2008 1.08 */
9
10 module d_ff_mf (11 input clk,12 input rst_n,13 input en,14 input d,15 output q16 );17
18 lpm_ff # (.lpm_width(1))19 df (20 .clock(clk),21 .aclr(!rst_n),22 .enable(en),23 .data(d),24 .q(q)25 );26
27 endmodule
3
4 Filename : d_ff_mf.v5 Compiler : Quartus II 7.2 SP36 Description : Demo how to write d flip-flop with Mega function7 Release : 08/11/2008 1.08 */
9
10 module d_ff_mf (11 input clk,12 input rst_n,13 input en,14 input d,15 output q16 );17
18 lpm_ff # (.lpm_width(1))19 df (20 .clock(clk),21 .aclr(!rst_n),22 .enable(en),23 .data(d),24 .q(q)25 );26
27 endmodule
沒有留言:
張貼留言