|
- module hc591( //集电极(漏极)开路的八位二进制计数器 VCC:Pin16 GND:Pin8
- input CCLK, //上升沿计数器+1 Pin11
- input CCLKEN,//低电平使能CCLK 高电平禁止计数 Pin12
- input CCLR, //异步下降沿(低电平) 清零计数器 Pin10
- input RCLK, //上升沿将计数器的值装入寄存器 Pin13
- input E, //低电平使能Q输出寄存器的值,高电平高阻 Pin14
- output RCO, //计数器等于255则输出低电平,其余高电平 Pin9
- output [7:0] Q //[8位宽] 输出Q Pin:7,6,5,4,3,2,1,15
- );
- reg [7:0] i = 8'd0; //计数器
- reg [7:0] j = 8'd0; //寄存器
- assign RCO = !(&i);
- genvar l;
- generate
- for(l=0;l<8;l=l+1) begin:gen
- assign Q[l] = (E || j[l]) ? 1'bz : 1'b0;
- end
- endgenerate
- always @(posedge CCLK or negedge CCLR) begin
- if(!CCLR) begin
- i <= 8'd0;
- end else if(!CCLKEN) begin
- i <= i + 8'd1;
- end
- end
- always @(posedge RCLK) begin
- j <= i;
- end
- endmodule
- module main(
- input clk,
- output out
- );
- hc591 hc591(
- .CCLK(clk),
- .CCLKEN(1'b0),
- .CCLR(1'b1),
- .RCLK(),
- .E(1'b0),
- .RCO(out),
- .Q()
- );
- endmodule
复制代码
|
|