module led8_module ( CLK, RSTn, LED_Out ); input CLK; input RSTn; output [7:0]LED_Out; parameter T10MS = 23'd1_250_000; reg [22:0]Count; //Delay reg [7:0]rLED_Out; always @ ( posedge CLK or negedge RSTn ) if( !RSTn ) begin Count <= 23'd0; rLED_Out <= 8'b0000_0011; end else if( Count == T10MS - 1'b1) begin Count <= 23'd0; if(rLED_Out == 8'b0000_0000 ) rLED_Out <= 8'b0000_0011; else rLED_Out <= {rLED_Out[1:0],rLED_Out[7:2]}; end else Count <= Count + 1'b1; assign LED_Out = rLED_Out; endmodule module water ( CLK,RSTn,LED_Out ); input CLK; input RSTn; output [7:0]LED_Out; led8_module U1 ( .CLK(CLK), // input CLK .RSTn(RSTn) , // input RSTn .LED_Out(LED_Out) // output [7:0] LED_Out--to top ); endmodule
时间: 2024-03-18 17:40:36 浏览: 125
以下是对提供的代码的注释:
```
module led8_module ( CLK, RSTn, LED_Out );
// 定义一个模块,包含 3 个端口:CLK,RSTn 和 LED_Out
input CLK; // 输入端口 CLK
input RSTn; // 输入端口 RSTn
output [7:0]LED_Out; // 输出端口 LED_Out,为 8 位二进制数
parameter T10MS = 23'd1_250_000; // 定义一个参数 T10MS,为 23 位的十进制数 1_250_000
reg [22:0]Count; // 定义一个寄存器 Count,为 23 位的二进制数
reg [7:0]rLED_Out; // 定义一个寄存器 rLED_Out,为 8 位二进制数
always @ ( posedge CLK or negedge RSTn ) // 声明一个总是块,当 CLK 上升沿或 RSTn 下降沿时执行
if( !RSTn ) // 如果 RSTn 为低电平,执行以下操作
begin
Count <= 23'd0; // 将 Count 寄存器清零
rLED_Out <= 8'b0000_0011; // 将 rLED_Out 寄存器赋值为二进制数 0000 0011
end
else if( Count == T10MS - 1'b1) // 如果 Count 寄存器的值等于参数 T10MS 减 1 ,执行以下操作
begin
Count <= 23'd0; // 将 Count 寄存器清零
if(rLED_Out == 8'b0000_0000 ) // 如果 rLED_Out 寄存器的值为二进制数 0000 0000,执行以下操作
rLED_Out <= 8'b0000_0011; // 将 rLED_Out 寄存器赋值为二进制数 0000 0011
else // 否则执行以下操作
rLED_Out <= {rLED_Out[1:0],rLED_Out[7:2]}; // 将 rLED_Out 寄存器的值右移 2 位并在左侧添加原来的后两位
end
else // 如果 Count 寄存器的值不等于 T10MS 减 1,执行以下操作
Count <= Count + 1'b1; // 将 Count 寄存器加 1
assign LED_Out = rLED_Out; // 将 rLED_Out 寄存器的值赋给 LED_Out 输出端口
endmodule
module water ( CLK,RSTn,LED_Out );
// 定义一个模块,包含 3 个端口:CLK,RSTn 和 LED_Out
input CLK; // 输入端口 CLK
input RSTn; // 输入端口 RSTn
output [7:0]LED_Out; // 输出端口 LED_Out,为 8 位二进制数
led8_module U1 ( // 实例化 led8_module 模块
.CLK(CLK), // 输入端口 CLK
.RSTn(RSTn), // 输入端口 RSTn
.LED_Out(LED_Out) // 输出端口 LED_Out,连接到顶层模块
);
endmodule
```
阅读全文