module touch_led(// input sys_clk, input sys_rst_n, input touch_key, output reg led );reg touch_key_d0;reg touch_key_d1;reg switch;wire touch_en;//assign touch_en = (~touch_key_d1) & touch_key_d0;//always @ (posedge sys_clk or negedge sys_rst_n) begin if(sys_rst_n == 1'b0) begin touch_key_d0 <= 1'b0; touch_key_d1 <= 1'b0; end else begin touch_key_d0 <= touch_key; touch_key_d1 <= touch_key_d0; end end//always @ (posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n == 1'b0) switch <= 1'b0; else begin if (touch_en) switch <= ~switch; else switch <= switch; endend//always @ (posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n == 1'b0) led <= 1'b1; else begin if (switch) led <= 1'b0; else led <= 1'b1; endendendmodule
2条回答 默认 最新
关注
引用 皆我百晓生 小程序回复内容作答:
这段代码是一个触摸按键控制LED灯亮灭的模块。下面是每个always模块的作用注释:
- always模块:根据系统时钟和复位信号对touch_key_d0和touch_key_d1进行更新
- 如果复位信号sys_rst_n为低电平(0),则将touch_key_d0和touch_key_d1都设置为低电平(0)
- 否则,将touch_key_d0设置为当前触摸按键的状态,将touch_key_d1设置为上一次的触摸按键状态
- always模块:根据系统时钟和复位信号对switch进行更新
- 如果复位信号sys_rst_n为低电平(0),则将switch设置为低电平(0)
- 否则,如果触摸使能信号touch_en为真,则将switch取反,否则保持原值
- always模块:根据系统时钟和复位信号对led进行更新
- 如果复位信号sys_rst_n为低电平(0),则将led设置为高电平(1)
- 否则,如果switch为真,则将led设置为低电平(0),否则将led设置为高电平(1)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 osm下载到arcgis出错
- ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
- ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
- ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
- ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
- ¥15 QQ邮箱过期怎么恢复?
- ¥15 登录他人的vue项目显示服务器错误
- ¥15 (标签-android|关键词-app)
- ¥15 comsol仿真压阻传感器
- ¥15 Python线性规划函数optimize.linprog求解为整数