关于FPGA(verilog)电平检测模块的易错点分析
reg F1,F2; // F2 Previous State, F1 Current State
always@(posedge CLK or negedge RSTn)
if(!RSTn)
begin
F1<='b0;//(注意复位时F1;F2都是等于0的!)
F2<='b0;
end
else
begin
F1<= A;
F2<= F1;
end wire Aup = F1 & !F2;
wire Adown = F2 & !F1;
这个模块可以用来检测A输入口的“上跳变”以及“下跳变”
现在,开始分析:
1、假设:A的默认值,也就是初始值为0;
第一个时钟来临时,F1=0;F2=0;所以Aup = 0 & 1 = 0;Adown = 0 & 1 =0;的这完全没有问题。
2、假设:A的默认值,也就是初始值为1;
第一个时钟来临时,F1=1;F2=0;所以Aup = 1 & 1 = 1;Adown = 0 & 0 =0;
这个时候就有问题了,本来在第一个时钟A是没有发生变化的,但是Aup却等于1,被认为有一个上跳变。
这就是,检测模块要注意的问题。这种问题会导致,你发现计数时问什么会“无缘无故”多一个。问题就在这里。
这个问题如何预防呢?首先我们必须搞清楚,我们所检测的这个引脚是默认0还是1.如果是1的话我们应该这么写。
reg F1,F2; // F2 Previous State, F1 Current State
always@(posedge CLK or negedge RSTn)
if(!RSTn)
begin
F1<='b1;(注意复位时F1;F2都是等于1的!)
F2<='b1;
end
else
begin
F1<= A;
F2<= F1;
end wire Aup = F1 & !F2;
wire Adown = F2 & !F1;
第一个时钟来临时,F1=1;F2=1;所以Aup = 1 & 0 = 0;Adown = 1 & 0 =0;的这样就没有问题了。
总结:这个检测模块容易出问题的地方就是在第一个时钟的时候,但是如果搞清楚检测引脚的初始状态,我们根据这个状态来选择这个模块的写法就不会出问题。
当然如果这个检测引脚既不是高电平也不是低电平,也就是高组态。那么两种写法都可以
咯。因此,我们反方思维一下,如果我们写测试文件(产生激励信号)时,不清楚应该个输入赋什么值的时候,
这样写就是一个不错的选择——A <= 1'bz;(将输入设为不确定状态)。
关于FPGA(verilog)电平检测模块的易错点分析的更多相关文章
- [课堂实践与项目]NavigationController与TabBarController的综合使用及易错点分析(包含消息提醒,app更新)
陈述:我们在使用tabbarController的时候,我们总会和NavagationController联合起来.但是不联合的时候又是什么样的一种pool的情况呢?我们就单单的 TabBarCont ...
- Java易错知识点(1) - 关于ArrayList移除元素后剩下的元素会立即重排
帮一个网友解答问题时,发现这样一个易错知识点,现总结如下: 1.易错点: ArrayList移除元素后,剩下的元素会立即重排,他的 size() 也会立即减小,在循环过程中容易出错.(拓展:延伸到所有 ...
- 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...
- 基于FPGA的VGA可移植模块终极设计【转】
本文转载自:http://www.cnblogs.com/lueguo/p/3373643.html 略过天涯 基于FPGA的VGA可移植模块终极设计 一.VGA的诱惑 首先,VGA的驱动,这事, ...
- [FPGA]Verilog 60s秒表计时器(最大可计时间长达9min)
[FPGA]Verilog 60s秒表计时器 1.引述 这次的实验来自于本人本科课程数电结课时的自选题目.由于这次上传是后知后觉,学校已将小脚丫板子回收,所以在这篇文章中没法贴出代码结果的效果图了,但 ...
- STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- FPGA Verilog HDL 系列实例--------步进电机驱动控制
[连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...
- Nginx 反向代理、后端检测模块
简介: Nginx 反向代理模块:ngx_http_proxy_module.ngx_http_upstream_module 后端检测模块:nginx_http_upstream_check_mod ...
- 一个基于深度学习回环检测模块的简单双目 SLAM 系统
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12634631.html 写在前面 最近在搞本科毕设,关于基于深度学 ...
随机推荐
- 关于DateTime.Now.Ticks
DataTime.Now.Ticks 的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来所经历的以 100 纳秒为间隔的间隔数,可用于较精确的计时. 1秒=1000豪秒 1毫秒=10 ...
- DevExpress - cxGrid 使用方法
如何设置多选,并对多个选中行进行数据处理. 1.首先需要将需要获取的字段的列添加到 Grid 中,例如 grdDemoColumn1. 2.将 Grid 的 OptionsSelection 中的 C ...
- event级别设置Resumable Space Allocation
每日一贴,今天的内容关键字为event级别 设置Resumable Space Allocation 设置Resumable Space Alloc ...
- 漫谈C#之关键字
每一种语言都有非常多的关键字,而且这些关键字也都大同小异,不过毕竟还是有些许的不一样.有些关键字大家碰到的多了,自然就熟悉了,但是有些关键字用得不大多,或者是新引入的,所以就不大熟悉了.我平常在用的时 ...
- Zend Studio / Ecliplse插件StartExplorer
Install site.zip (quick and simple way) Locate zip file under site\target in Project Explorer, Start ...
- mysql 优化工具
explain profiling 建议提供以下信息 show table status like 'audit';show create table audit;show index from a ...
- java面试笔试谈
例一: public class Inc { public static void main(String[] args) { Inc inc=new Inc(); int i=5; inc.ferm ...
- 小白日记25:kali渗透测试之提权(五)--利用配置不当提权
利用配置不当提权 与漏洞提权相比,更常见的方法.在大部分企业环境下,会有相应的补丁更新策略,因此难以通过相应漏洞进行入侵.当入侵一台服务器后,无法照当相应的补丁进行提权,可通过寻找是否存在配置不当进行 ...
- python(5) - 冒泡排序
data = [10, 4, 33, 21, 54, 3, 8, 11, 5, 22, 2, 1, 17, 13] ''' 思路:有多少个元素就循环多少次,每次循环从第一个元素开始与它后面的元素比较, ...
- 【安卓面试题】在一个Activity启动另一个Activity和在Service中启动一个Activity有什么区别
在Activity中可以直接使用Intent启动另一个Activity 显式Intent intent = new Intent(context, activity.class) 隐式 Intent ...