概述
时序逻辑电路设计实例:
[例1]触发器设计实例
module dff( q, data, clk);
output q;
input data, clk;
reg q;
always @( posedge clk )
begin
q = data;
end
endmodule
[例2]. 电平敏感型锁存器设计实例之一
module latch1( q, data, clk);
output q;
input data, clk;
assign q = clk? data : q;
endmodule
[例3]. 带置位和复位端的电平敏感型锁存器设计实例之二
module latch2( q, data, clk, set, reset);
output q;
input data, clk, set, reset;
assign q= reset? 0 : ( set? 1:(clk? data : q ) );
endmodule
[例4]. 电平敏感型锁存器设计实例之三
module latch3( q, data, clk);
output q;
input data, clk;
reg q;
always @(clk or data)
begin
if(clk)
q=data;
end
endmodule
注意:有的综合器会产生一警告信息 告诉你产生了一个电平敏感型锁存器。因为我们设计的就是一个 电平敏感型锁存器,就不用管这个警告信息。
[例5]. 移位寄存器设计实例
module shifter( din, clk, clr, dout);
input din, clk, clr;
output [7:0] dout;
reg [7:0] dout;
always @(posedge clk)
begin
if(clr) //清零
dout = 8'b0;
else
begin
dout = dout<<1; //左移一位
dout[0] = din; //把输入信号放入寄存器的最低位
end
end
endmodule
[例6]. 八位计数器设计实例之一
module counter1( out, cout, data, load, cin, clk);
output [7:0] out;
output cout;
input [7:0] data;
input load, cin, clk;
reg [7:0] out;
always @(posedge clk)
begin
if( load )
out = data;
else
out = out + cin;
end
assign cout= & out & cin;
//只有当out[7:0]的所有各位都为1
//并且进位cin也为1时才能产生进位cout
endmodule
[例7]. 八位计数器设计实例之二
module counter2( out, cout, data, load, cin, clk);
output [7:0] out;
output cout;
input [7:0] data;
input load, cin, clk;
reg [7:0] out;
reg cout;
reg [7:0] preout;
//创建8位寄存器
always @(posedge clk)
begin
out = preout;
end
/****计算计数器和进位的下一个状态,
注意:为提高性能不希望加载影响进位****/
always @( out or data or load or cin )
begin
{cout, preout} = out + cin;
if(load)
preout = data;
end
endmodule
最后
以上就是生动冰棍为你收集整理的时序逻辑电路设计实例的全部内容,希望文章能够帮你解决时序逻辑电路设计实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复