之前在写自加逻辑时,仿真结果经常会出现高阻态,常常百思不得其解,这次简单分析一下。

always@(negedge clk_ad or negedge rst_n)begin
if(!rst_n)beginCNT_SIGNAL <= 10'b0;score_reg_signal <= 0;
end
else if(cs)beginif(CNT_SIGNAL<SIGNAL)beginscore_reg_signal <= score_reg_signal+score_reg_point;CNT_SIGNAL <= CNT_SIGNAL + 1'b1;endelse beginCNT_SIGNAL <= 0;score_reg_signal <= 0;end
end
else begin
end

这样一个简单的自加逻辑,输出的结果是这样的

可以看到,在第一轮自加过程中,输出结果一直是高阻态,分析原因是没有给寄存器赋初值导致的。虽然我们在rst中设置了寄存器结果为零,但实际上并没有给寄存器的输入赋初值,实际上综合出来的电路是这样的。

可以看到,rst只能控制CLRN端,寄存器的输入D由一个选择器控制是清0还是累加。

选择器的控制信号是由比较器产生的

if(CNT_SIGNAL<SIGNAL)

这就意味着第一轮自加时,自加的信号并不知道自己的初始值是多少,所以即使在自加也一直是高阻态。

直到清0,它才有确定的初始输入值0。所以后续也就可以正常输出了。

此外,如果用initial进行初始化

initial beginscore_reg_signal = 0;score_reg_signal_buff = 0;
endalways@(negedge clk_ad or negedge rst_n)begin
//initialize target_reg and xnor_reg_14bit
if(!rst_n)beginfull <= 1'b0;CNT_SIGNAL <= 10'b0;xnor_reg_point <= 0;score_reg_signal <= 0;
end
else if(cs)beginif(CNT_SIGNAL<SIGNAL)beginxnor_reg_point <= data_in ^ target_reg[CNT_SIGNAL];score_reg_point <= score_wire_point;score_reg_signal <= score_reg_signal+score_reg_point;CNT_SIGNAL <= CNT_SIGNAL + 1'b1;full <= 1'b0;endelse beginfull <= 1'b1;CNT_SIGNAL <= 0;score_reg_signal <= 0;score_reg_signal_buff <= score_reg_signal;end
end
else beginfull <= 1'b0;
end
end

输出结果会变成这样

说明只要进入自加的if,就会被判断为没有初值

verilog自加为什么会出现高阻态相关推荐

  1. Verilog中三态门(高阻态)的理解与例子

    以前只知道电路的输出有高阻态,但是对高阻态的理解不够,对高阻态的用法也不清楚,直到用Verilog实现单端口SRAM时,才有了一个进一步的认识,记录如下: Verilog实现单端口SRAM的内容见:V ...

  2. verilog中的inout端口与三态门、高阻态的使用

    高阻态 百度百科:高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电 ...

  3. 高阻态是0还是1_FPGA/ASIC笔试面试题集锦(1)知识点高频复现练习题

    写在前面 正文内容 简述ASIC设计流程,并列举出各部分用到的工具? 简述FPGA的开发流程? 名词解释 数制转换 什么是竞争和冒险?如何消除? 2分频描述 简述建立时间和保持时间,画图表示? 简述触 ...

  4. 单片机小白学步系列(二十三) IO口原理知识补充:双向IO口、互补推挽、高阻态

    由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识. ================================================= 双向IO口的输出:互补推挽 在 ...

  5. 吸电流、拉电流、灌电流、上拉电阻、下拉电阻、高阻态等基础知识普及

    吸电流.拉电流输出.灌电流输出 拉即泄,主动输出电流,从输出口输出电流: 灌即充,被动输入电流,从输出端口流入: 吸则是主动吸入电流,从输入端口流入. 吸电流和灌电流就是从芯片外电路通过引脚流入芯片内 ...

  6. 吸电流、拉电流、灌电流、上下拉电阻、高阻态【】

    吸电流.拉电流输出.灌电流输出 拉即泄,主动输出电流,从输出口输出电流: 灌即充,被动输入电流,从输出端口流入: 吸则是主动吸入电流,从输入端口流入.    吸电流和灌电流就是从芯片外电路通过引脚流入 ...

  7. 一个简单的分频器结果时钟信号总是呈现高阻态。

    作为一个刚刚学习Verilog的小白,再写一个简单的分频器的时候出现了一个很大的问题,就是时钟信号一直呈现高阻态,后来发现这个是一个非常沙雕的错误.我在写testbench的时候仅仅写了一下时钟的产生 ...

  8. 拉电流、灌电流、吸电流、上下拉电阻和高阻态

    吸电流.拉电流输出.灌电流输出 拉即泄,主动输出电流,从输出口输出电流: 灌即充,被动输入电流,从输出端口流入: 吸则是主动吸入电流,从输入端口流入.    吸电流和灌电流就是从芯片外电路通过引脚流入 ...

  9. 高阻态是0还是1_电力电子技术基础知识你真的学会了吗?来看看吧——器件(1)...

    1.N型半导体与P型半导体 首先要明白N型半导体与P型半导体都是四价原子被杂质原子取代产生的. 之所以区分N型与P型,是因为N表示negative,代表其多子为电子,对应的,P表示positive,代 ...

最新文章

  1. Python 关键字 global、nonlocal、yield用法
  2. OpenCV(十八)霍夫变换(直线、线段与圆检测)
  3. 那些想坐等AI成熟再采用的公司,可能永远也跟不上AI浪潮
  4. 方法论之 如何解决一个问题
  5. 51php绑定多个域名,设置Wordpress站点绑定多域名访问 - Mr.bin的博客
  6. 三星手机Android9和10的区别,三星开始在Galaxy Note 9上测试Android 10
  7. SQL中的CASE WHEN语句
  8. DataGridView编辑后立即更新到数据库的两种方法
  9. 【转】SAP整合技术研究
  10. 图像凸性检测函数convexityDefects在Python2.7下使用opencv3.0的问题
  11. python程序开子进程打包成exe文件运行炸内存原因剖析
  12. Springsecurity之AuthenticationProvider
  13. C小项目 —— 学生信息管理系统
  14. 简历准备及面试技巧,你应该知道的一切
  15. python时间戳_Python-强大的模块功能库-No11
  16. cocos 微信登陆失败(笔记)
  17. IDEA插件系列(105):IDEA Mind Map插件——IDEA思维导图
  18. 基于区块链的二维码门禁系统成品演示视频
  19. 大数据应用之啤酒尿布
  20. 介绍一款非常好用的截图软件-《Snipaste》

热门文章

  1. 马化腾与王健林一起逛街,醉翁之意在新零售
  2. 给学妹的 Java 学习路线
  3. 【iOS开发】—— KVC
  4. WEB开发中常见的漏洞
  5. 【去后厂村开游戏厅吧】基于pp-tinypose的体感飙车避障游戏
  6. 每天坚持跑步5公里,一个月身体会有什么明显变化
  7. LSM6DS3驱动编写——learn form sparkfun company
  8. Ranorex中Reports报告不能生成
  9. 远程桌面与终端服务的区别和联系以及修改他们的端口
  10. 禅道测试用例自动化录入