Verilog描述时序逻辑电路
2018-07-19 本文已影响0人
打着石膏脚的火星人
一、分类:米利型和穆尔型时序电路:
米利型:O = h(I,S); 穆尔型: O = h(S)
二、时序逻辑电路功能的表达:激励方程式,转换方程组,输出方程组。
module shift74x194_beh(
input S1,S0,
input CP,CR,
input Dsl,Dsr,//串行数据输入
input [3:0] D,
output reg [3:0] Q
);
always @(posedge CP,negedge CR)
if(~CR) Q <= 4'b0000;
else
case({S1,S0})
2'b00: Q <= Q;
2'b01: Q <= { Q[2:0], Dsr}; //右移
2'b10: Q <= {Dsl,Q[3:1]}; //左移
2'b11: Q <= D; //并行置数
endcase
endmodule
3.jpg
module counter74x161_beh(
input CEP,CTP,PE,CP,CR,
input [3:0]D,
output TC,
output reg [3:0]Q
);
wire CE;
assign CE = CEP & CET;
assign TC = CET & PE & (Q == 4'b1111);
always @(posedge CP,negedge CR)
if(~CR) Q <= 4'b0000;
else if(~PE) Q <= D;
else if(CE) Q <= Q+1'b1;
else Q <= Q;
endmodule
//通用的可逆计数器
module updowncount_beh
#(parameter n = 4
)
(
input Load,Up_down,En,CP,
input [n-1:0]D,
output reg[n-1:0] Q
);
integer direction;
always @(posedge CP)
begin
if(Up_down)
direction <= 1;
else
direction <= -1;
if(Load)
Q <= D; //同步置数
else if(En)
Q <= Q + direction;
else
Q <= Q;
end
endmodule