module scrolling(clk,reset,L0,L1,L2,L3,L4); input clk,reset; output reg[6:0]L0,L1,L2,L3,L4; parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8; reg[3:0] c_st,n_st; wire pm; CNT U1(clk,reset,pm); always @( posedge pm or posedge reset) begin if(reset) c_st<=s0; else c_st<=n_st; end always @(c_st) begin case(c_st) s0: begin L0<=7'b1111001;n_st<=s1; end s1: begin L0<=7'b0100100;L1<=7'b1111001;n_st<=s2; end s2: begin L0<=7'b0110000;L1<=7'b0100100;L2<=7'b1111001;n_st<=s3; end s3: begin L0<=7'b0011001;L1<=7'b0110000;L2<=7'b0100100;L3<=7'b1111001;n_st<=s4; end s4: begin L0<=7'b0010010;L1<=7'b0011001;L2<=7'b0110000;L3<=7'b0100100;L4<=7'b1111001;n_st<=s5; end s5: begin L1<=7'b0010010;L2<=7'b0011001;L3<=7'b0110000;L4<=7'b0100100;L0<=7'b1111001;n_st<=s6; end s6: begin L2<=7'b0010010;L3<=7'b0011001;L4<=7'b0110000;L0<=7'b0100100;L1<=7'b1111001;n_st<=s7; end s7: begin L3<=7'b0010010;L4<=7'b0011001;L0<=7'b0110000;L1<=7'b0100100;L2<=7'b1111001;n_st<=s8; end s8: begin L4<=7'b0010010;L0<=7'b0011001;L1<=7'b0110000;L2<=7'b0100100;L3<=7'b1111001;n_st<=s4; end default:n_st<=s0; endcase end endmodule module CNT(clk,reset,PM);//计数器实现1s input clk,reset; output PM; reg FULL; reg[25:0] Q1; always @(posedge clk or posedge reset) if(reset) begin Q1<=0;FULL<=0; end else if(LD) begin Q1<=0;FULL<=1; end else begin Q1<=Q1+1; FULL=0; end assign LD = (Q1==26'D49999999); assign PM = FULL; endmodule
时间: 2023-06-23 10:10:32 浏览: 26
这段代码实现了一个带有滚动效果的数码管显示,使用了一个计数器模块CNT来实现1秒的计时,当计数器计满10秒时,将LD信号置高,使得数码管重新开始滚动显示。在滚动显示过程中,通过case语句对不同的状态进行处理,依次将要显示的数码管状态分别赋值给L0、L1、L2、L3、L4。当显示完最后一个状态后,又回到了最初的状态,实现了循环滚动的效果。
相关问题
module scrolling(clk,reset,L0,L1,L2,L3,L4); input clk,reset; output reg[6:0]L0,L1,L2,L3,L4; parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8; reg[3:0] c_st,n_st; wire pm; CNT U1(clk,reset,pm); always @( posedge pm or posedge reset) begin if(reset) c_st<=s0; else c_st<=n_st; end always @(c_st) begin case(c_st) s0: begin L0<=7'b1111001;n_st<=s1; end s1: begin L0<=7'b0100100;L1<=7'b1111001;n_st<=s2; end s2: begin L0<=7'b0110000;L1<=7'b0100100;L2<=7'b1111001;n_st<=s3; end s3: begin L0<=7'b0011001;L1<=7'b0110000;L2<=7'b0100100;L3<=7'b1111001;n_st<=s4; end s4: begin L0<=7'b0010010;L1<=7'b0011001;L2<=7'b0110000;L3<=7'b0100100;L4<=7'b1111001;n_st<=s5; end s5: begin L1<=7'b0010010;L2<=7'b0011001;L3<=7'b0110000;L4<=7'b0100100;L0<=7'b1111001;n_st<=s6; end s6: begin L2<=7'b0010010;L3<=7'b0011001;L4<=7'b0110000;L0<=7'b0100100;L1<=7'b1111001;n_st<=s7; end s7: begin L3<=7'b0010010;L4<=7'b0011001;L0<=7'b0110000;L1<=7'b0100100;L2<=7'b1111001;n_st<=s8; end s8: begin L4<=7'b0010010;L0<=7'b0011001;L1<=7'b0110000;L2<=7'b0100100;L3<=7'b1111001;n_st<=s4; end default:n_st<=s0; endcase end endmodule module CNT(clk,reset,PM);//计数器实现1s input clk,reset; output PM; reg FULL; reg[25:0] Q1; always @(posedge clk or posedge reset) if(reset) begin Q1<=0;FULL<=0; end else if(LD) begin Q1<=0;FULL<=1; end else begin Q1<=Q1+1; FULL=0; end assign LD = (Q1==26'D49999999); assign PM = FULL; endmodule给这段代码注释
注释如下:
```
module scrolling(clk,reset,L0,L1,L2,L3,L4); // 定义模块,输入为时钟信号clk、复位信号reset,输出为五个七段数码管的显示信号L0~L4
input clk,reset; // 定义输入信号
output reg[6:0]L0,L1,L2,L3,L4; // 定义输出信号,七段数码管使用7位二进制表示
parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8; // 定义状态参数,用于状态转移
reg[3:0] c_st,n_st; // 定义当前状态和下一个状态,用于状态转移
wire pm; // 定义输出信号,用于计数器实现1s
CNT U1(clk,reset,pm); // 实例化计数器模块,名称为U1
always @( posedge pm or posedge reset) begin // 在计数器模块输出变化或复位信号变化时执行
if(reset) c_st<=s0; // 如果复位信号为1,则将当前状态赋值为0
else c_st<=n_st; // 否则将当前状态赋值为下一个状态
end
always @(c_st) begin // 在当前状态变化时执行
case(c_st) // 根据当前状态进行分支处理
s0: begin L0<=7'b1111001;n_st<=s1; end // 当当前状态为0时,将L0设为数字1,下一个状态为1
s1: begin L0<=7'b0100100;L1<=7'b1111001;n_st<=s2; end // 当当前状态为1时,将L0设为数字2,L1设为数字1,下一个状态为2
s2: begin L0<=7'b0110000;L1<=7'b0100100;L2<=7'b1111001;n_st<=s3; end // 当当前状态为2时,将L0设为数字3,L1设为数字2,L2设为数字1,下一个状态为3
s3: begin L0<=7'b0011001;L1<=7'b0110000;L2<=7'b0100100;L3<=7'b1111001;n_st<=s4; end // 当当前状态为3时,将L0设为数字4,L1设为数字3,L2设为数字2,L3设为数字1,下一个状态为4
s4: begin L0<=7'b0010010;L1<=7'b0011001;L2<=7'b0110000;L3<=7'b0100100;L4<=7'b1111001;n_st<=s5; end // 当当前状态为4时,将L0设为数字5,L1设为数字4,L2设为数字3,L3设为数字2,L4设为数字1,下一个状态为5
s5: begin L1<=7'b0010010;L2<=7'b0011001;L3<=7'b0110000;L4<=7'b0100100;L0<=7'b1111001;n_st<=s6; end // 当当前状态为5时,将L1设为数字5,L2设为数字4,L3设为数字3,L4设为数字2,L0设为数字1,下一个状态为6
s6: begin L2<=7'b0010010;L3<=7'b0011001;L4<=7'b0110000;L0<=7'b0100100;L1<=7'b1111001;n_st<=s7; end // 当当前状态为6时,将L2设为数字5,L3设为数字4,L4设为数字3,L0设为数字2,L1设为数字1,下一个状态为7
s7: begin L3<=7'b0010010;L4<=7'b0011001;L0<=7'b0110000;L1<=7'b0100100;L2<=7'b1111001;n_st<=s8; end // 当当前状态为7时,将L3设为数字5,L4设为数字4,L0设为数字3,L1设为数字2,L2设为数字1,下一个状态为8
s8: begin L4<=7'b0010010;L0<=7'b0011001;L1<=7'b0110000;L2<=7'b0100100;L3<=7'b1111001;n_st<=s4; end // 当当前状态为8时,将L4设为数字5,L0设为数字4,L1设为数字3,L2设为数字2,L3设为数字1,下一个状态为4
default: n_st<=s0; // 如果当前状态不在0~8之间,则将下一个状态赋值为0
endcase
end
endmodule
module CNT(clk,reset,PM); // 定义计数器模块,输入为时钟信号clk、复位信号reset,输出为计数器实现1s的信号PM
input clk,reset; // 定义输入信号
output PM; // 定义输出信号
reg FULL; // 定义满位信号
reg[25:0] Q1; // 定义计数器寄存器,25位二进制表示
always @(posedge clk or posedge reset) // 在时钟上升沿或复位信号变化时执行
if(reset) begin Q1<=0;FULL<=0; end // 如果复位信号为1,则将计数器寄存器和满位信号都赋值为0
else if(LD) begin Q1<=0;FULL<=1; end // 如果LD信号为1,则将计数器寄存器和满位信号都赋值为1
else begin Q1<=Q1+1; FULL=0; end // 否则计数器寄存器加1,满位信号为0
assign LD = (Q1==26'D49999999); // 如果计数器寄存器的值为49999999,则LD信号为1,表示计数器已经计数1s
assign PM = FULL; // 将满位信号赋值给输出信号
endmodule
```
移动端设置overflow:scroll后scrollTop失效并一直为0
在移动端,如果你想要使用 `overflow:scroll` 实现滚动条功能,需要同时设置元素的高度,并保证元素内部有足够多的内容超出元素高度,才能正确响应 `scrollTop` 属性。否则,`scrollTop` 属性会一直为0,无法实现滚动效果。
同时,为了兼容不同移动设备,建议使用 `-webkit-overflow-scrolling: touch;` 来优化滚动性能。完整的样式代码如下所示:
```css
.scrollable {
height: 200px; /* 设置元素高度 */
overflow: scroll; /* 开启滚动条 */
-webkit-overflow-scrolling: touch; /* 优化滚动性能 */
}
```
另外,如果你的元素内容是动态加载的,需要在加载完成后重新计算元素高度,以确保 `scrollTop` 属性可以正确响应。可以使用以下JS代码实现:
```js
var element = document.getElementById('scrollable-element');
element.addEventListener('load', function() {
element.style.height = element.scrollHeight + 'px';
});
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)