|
楼主 |
发表于 2013-1-27 14:08:56
|
显示全部楼层
D触发器
【例9.16】带同步清0、同步置1的D触发器
module DFF2(q,qn,d,clk,set,reset);
input d,clk,set,reset;
output q,qn;
reg q,qn;
always @(posedge clk)
begin
if (reset) begin
q <= 0; qn <= 1; //同步清0,高电平有效
end
else if (set) begin
q <=1; qn <=0; //同步置1,高电平有效
end
else begin
q <= d; qn <= ~d;
end
end
endmodule
【例9.15】带异步清0、异步置1的D触发器
module DFF1(q,qn,d,clk,set,reset);
input d,clk,set,reset;
output q,qn;
reg q,qn;
always @(posedge clk or negedge set or negedge reset)
begin
if (!reset) begin
q <= 0; //异步清0,低电平有效
qn <= 1;
end
else if (!set) begin
q <= 1; //异步置1,低电平有效
qn <= 0;
end
else begin
q <= d;
qn <= ~d;
end
end
endmodule
【例9.14】基本D触发器
module DFF(Q,D,CLK);
output Q;
input D,CLK;
reg Q;
always @(posedge CLK)
begin
Q <= D;
end
endmodule
【例10.16】引入了D触发器的长帧同步时钟的产生
module longframe2(clk,strb);
parameter delay=8;
input clk;
output strb;
reg[7:0] counter;
reg temp;
reg strb;
always@(posedge clk)
begin
if(counter==255) counter=0;
else counter=counter+1;
end
always@(posedge clk)
begin
strb=temp; //引入一个触发器
end
always@(counter)
begin
if(counter<=(delay-1)) temp=1;
else temp=0;
end
endmodule |
|