verilog自加为什么会出现高阻态
之前在写自加逻辑时,仿真结果经常会出现高阻态,常常百思不得其解,这次简单分析一下。
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自加为什么会出现高阻态相关推荐
- Verilog中三态门(高阻态)的理解与例子
以前只知道电路的输出有高阻态,但是对高阻态的理解不够,对高阻态的用法也不清楚,直到用Verilog实现单端口SRAM时,才有了一个进一步的认识,记录如下: Verilog实现单端口SRAM的内容见:V ...
- verilog中的inout端口与三态门、高阻态的使用
高阻态 百度百科:高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电 ...
- 高阻态是0还是1_FPGA/ASIC笔试面试题集锦(1)知识点高频复现练习题
写在前面 正文内容 简述ASIC设计流程,并列举出各部分用到的工具? 简述FPGA的开发流程? 名词解释 数制转换 什么是竞争和冒险?如何消除? 2分频描述 简述建立时间和保持时间,画图表示? 简述触 ...
- 单片机小白学步系列(二十三) IO口原理知识补充:双向IO口、互补推挽、高阻态
由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识. ================================================= 双向IO口的输出:互补推挽 在 ...
- 吸电流、拉电流、灌电流、上拉电阻、下拉电阻、高阻态等基础知识普及
吸电流.拉电流输出.灌电流输出 拉即泄,主动输出电流,从输出口输出电流: 灌即充,被动输入电流,从输出端口流入: 吸则是主动吸入电流,从输入端口流入. 吸电流和灌电流就是从芯片外电路通过引脚流入芯片内 ...
- 吸电流、拉电流、灌电流、上下拉电阻、高阻态【】
吸电流.拉电流输出.灌电流输出 拉即泄,主动输出电流,从输出口输出电流: 灌即充,被动输入电流,从输出端口流入: 吸则是主动吸入电流,从输入端口流入. 吸电流和灌电流就是从芯片外电路通过引脚流入 ...
- 一个简单的分频器结果时钟信号总是呈现高阻态。
作为一个刚刚学习Verilog的小白,再写一个简单的分频器的时候出现了一个很大的问题,就是时钟信号一直呈现高阻态,后来发现这个是一个非常沙雕的错误.我在写testbench的时候仅仅写了一下时钟的产生 ...
- 拉电流、灌电流、吸电流、上下拉电阻和高阻态
吸电流.拉电流输出.灌电流输出 拉即泄,主动输出电流,从输出口输出电流: 灌即充,被动输入电流,从输出端口流入: 吸则是主动吸入电流,从输入端口流入. 吸电流和灌电流就是从芯片外电路通过引脚流入 ...
- 高阻态是0还是1_电力电子技术基础知识你真的学会了吗?来看看吧——器件(1)...
1.N型半导体与P型半导体 首先要明白N型半导体与P型半导体都是四价原子被杂质原子取代产生的. 之所以区分N型与P型,是因为N表示negative,代表其多子为电子,对应的,P表示positive,代 ...
最新文章
- Python 关键字 global、nonlocal、yield用法
- OpenCV(十八)霍夫变换(直线、线段与圆检测)
- 那些想坐等AI成熟再采用的公司,可能永远也跟不上AI浪潮
- 方法论之 如何解决一个问题
- 51php绑定多个域名,设置Wordpress站点绑定多域名访问 - Mr.bin的博客
- 三星手机Android9和10的区别,三星开始在Galaxy Note 9上测试Android 10
- SQL中的CASE WHEN语句
- DataGridView编辑后立即更新到数据库的两种方法
- 【转】SAP整合技术研究
- 图像凸性检测函数convexityDefects在Python2.7下使用opencv3.0的问题
- python程序开子进程打包成exe文件运行炸内存原因剖析
- Springsecurity之AuthenticationProvider
- C小项目 —— 学生信息管理系统
- 简历准备及面试技巧,你应该知道的一切
- python时间戳_Python-强大的模块功能库-No11
- cocos 微信登陆失败(笔记)
- IDEA插件系列(105):IDEA Mind Map插件——IDEA思维导图
- 基于区块链的二维码门禁系统成品演示视频
- 大数据应用之啤酒尿布
- 介绍一款非常好用的截图软件-《Snipaste》