verilog - 如何在verilog中实现“posedge异步复位逻辑”?
问题描述
我知道可以像这样实现高级异步重置:
always@(posedge clk or posedge rst)
begin
if (rst==1)
但是如何实现posedge异步复位,即在复位沿出现的那一刻,总是立即阻塞复位的逻辑?
我写了下面的逻辑:
always@(posedge clk or posedge rst)
begin
rst_pre<=rst;
if(!rst_pre && rst) // to test if rst is posedge
//execute reset logic here...
但问题是,always 块是在一个意想不到的高频下触发的,我终于发现,虽然只有 1 个 rst posege,但 always 块被 rst 信号触发的次数远远超过 1 次。(使用 Altera cyclone 10LP 和 quartus 18 进行测试)
我认为我用来实现posedge异步重置的方法不稳定,谁能告诉我我该怎么做才能解决这个问题?
解决方案
您要实现的是异步重置。它可以是posedge
或negedge
。
always@(posedge clk or posedge rst)
begin
if (rst)
// do the reset
else begin
// your normal execution logic
end
end
如果要使用negedge
重置,则可以使用:
always@(posedge clk or negedge rst)
begin
if (~rst)
// do the reset
else begin
// your normal execution logic
end
end
除此之外,重置没有什么复杂的。在这两种情况下, on posedge
/ negedge
ofrst
都会触发块并进行重置。
推荐阅读
- javascript - 使用 Ajax 捕获 IP 地址
- dart - 如何在 Flutter 中使用 SQFlite 进行数据库插入
- node.js - npm WARN bootstrap@4.2.1 需要 jquery@1.9.1 - 3 的对等点,但没有安装
- sql - 使用 T-SQL 从字符串中删除字母
- selenium-webdriver - 单击超链接时出现linkText问题
- javascript - 动态填充
- 从身份证
- javascript - jQueryUI DatePicker - 将点击事件添加到 minDate 和 maxDate 之外的日期
- json - 格式化列表视图并链接到 OOTB 预览功能?
- javascript - 如何通过javascript更改背景颜色?
- r - 在ggplot2中确定同一geom_point图中多条线的斜率