|
- module hc96( //异步复位与预设输入的5位移位寄存器 VCC:Pin5 GND:Pin12
- input SI, //移位输入 Pin9
- input [4:0] D, //[5位宽] 预设值输入 Pin:7,6,4,3,2
- input CLK, //上升沿移位时钟 Pin1
- input PE, //异步高电平:预设模式(禁止移位) 低电平:允许移位 Pin8
- input MR, //异步低电平:Q清零(复位) Pin16
- output reg [4:0] Q //[5位宽] 移位输出 Pin:10,11,13,14,15
- );
- initial Q = ~5'd0;
- wire [4:0] j;
- genvar i;
- generate
- for(i=0;i<5;i=i+1) begin:k
- assign j[i] = PE & D[i];
- always @(posedge CLK or posedge j[i] or negedge MR) begin
- if(!MR) begin
- Q[i] <= 1'b0;
- end else if(j[i]) begin
- Q[i] <= 1'b1;
- end else if(CLK && !PE) begin
- if(i == 0) begin
- Q[i] <= SI;
- end else begin
- Q[i] <= Q[i-1];
- end
- end
- end
- end
- endgenerate
- endmodule
- module main(
- input SI,
- input [4:0] D,
- input CLK,
- input PE,
- input MR,
- output [4:0] Q
- );
- hc96 hc96(
- .SI(SI),
- .D(D),
- .CLK(CLK),
- .PE(PE),
- .MR(MR),
- .Q(Q)
- );
- endmodule
复制代码 |
|