深入基本门电路

http://www.cnblogs.com/yuphone/archive/2010/10/25/1860871.html

1 同步复位的D出发器

  
  
1 module test
2 (
3 input rst_n,
4 input clk,
5 input d,
6 output reg q
7 );
8
9   always @( posedge clk)
10   begin
11 if (rst_n)
12 q <= 1 ' b0;
13 else
14 q <= d;
15 end
16
17 endmodule

深入基本门电路_第1张图片

2 异步复位的D触发器

module test
(
 input rst_n,
 input clk,
 input d,
 output reg q
);

always @(posedge clk,negedge rst_n)
begin
 if(!rst_n)
  q<=1'b0;
 else
  q<=d;
end

endmodule

深入基本门电路_第2张图片

3 T触发器

module test
(
 input rst_n,
 input clk,
 input T,
 output reg q
);

always @(posedge clk,negedge rst_n)
begin
 if(!rst_n)
  q<=1'b0;
 else if(T)
  q<= ~q;
end

endmodule

深入基本门电路_第3张图片

深入基本门电路_第4张图片

4 JK 触发器

深入基本门电路_第5张图片

5 RS触发器

深入基本门电路_第6张图片

 6 存储器

  
  
// Listing 4.6
module reg_file
#(
parameter B = 8 , // number of bits
W = 2 // number of address bits
)
(
input wire clk,
input wire wr_en,
input wire [W - 1 : 0 ] w_addr, r_addr,
input wire [B - 1 : 0 ] w_data,
output wire [B - 1 : 0 ] r_data
);

// signal declaration
reg [B - 1 : 0 ] array_reg [ 2 ** W - 1 : 0 ];

// body
// write operation
always @( posedge clk)
if (wr_en)
array_reg[w_addr]
<= w_data;
// read operation
assign r_data = array_reg[r_addr];

endmodule

深入基本门电路_第7张图片

7 带时能端的异步复位DFF

  
  
// Listing 4.3
module d_ff_en_1seg
(
input wire clk, reset,
input wire en,
input wire d,
output reg q
);

// body
always @( posedge clk, posedge reset)
if (reset)
q
<= 1 ' b0;
else if (en)
q
<= d;

endmodule
  
  
// Listing 4.4
module d_ff_en_2seg
(
input wire clk, reset,
input wire en,
input wire d,
output reg q
);

// signal declaration
reg r_reg, r_next;

// body
// D FF
always @( posedge clk, posedge reset)
if (reset)
r_reg
<= 1 ' b0;
else
r_reg
<= r_next;

// next-state logic
always @ *
if (en)
r_next
= d;
else
r_next
= r_reg;

// output logic
always @ *
q
= r_reg;

endmodule
深入基本门电路_第8张图片

你可能感兴趣的:(深入基本门电路)