模256计数器的路径验证
目录
一、问题
二、验证方案及效果
1、路径数量分析:
(1)计数模式:
(2)复位模式:
(3)置数模式:
2、路径验证方案及仿真
(1)验证1:计数模式的验证
(2)验证2:状态0的置数模式和复位模式的验证
(3)验证3:状态1、2、……、254、255的置数模式的验证
3、仿真结果分析
【附录】
testbench.v源码
一、问题
模256计数器(传统状态机)Verilog代码如下:
构造验证方案,使用最少的周期覆盖所有的路径。
二、验证方案及效果
1、路径数量分析:
由always块种条件判断语句可以得知:状态跳变由复位模式rst、置数模式load或计数模式下上升沿来控制,可以分类讨论:
(1)计数模式:
从0->1->2->……->255->0为一个循环,一共有256条路径。
(2)复位模式:
可以从任意一个状态跳回0状态,一共有256条路径。
(3)置数模式:
可以从任意两个状态之间跳变(当然自己也可以向自己跳变),因此一共有256*256种状态。
综上所述,整个状态机一共的路径有:256*256+256+256 = 66048种。
2、路径验证方案及仿真
经过对代码的分析可以得到状态机的状态转移有四种条件,分别是:
①rst == 1:从任何一种状态跳到0状态;
②load == 1:从任何一种状态跳到in决定的状态;
③(rst ==0 && load == 0 && counter == 255):从255状态跳变到0状态;
④(rst ==0 && load == 0 && counter < 255):状态编码由上升沿触发依次递增;
本着使用最少的周期来完整覆盖所有路径的原则,我试着用“一笔画”的思想用最少的重复路径的验证来实现所有路径的覆盖,我的方案如下:
(1)验证1:计数模式的验证
在条件(rst == 0 && load == 0 && counter < 256)下仿真256个时钟周期即可得到0->1->2->……->255->0循环的总共256条路径。状态转移图如下:
部分代码如下:
在(rst == 0 && load == 0 && counter < 256)的条件下延时256个周期,得到仿真波形如下:
复位后起始从状态0开始:
第256个周期从状态255回到状态0:
可以看到,测试1验证了0->1->2->……->255->0的循环。测试1总共仿真5140ns,周期PERIOD = 20ns,起始复位20ns,因此测试1总共用周期个。
(2)验证2:状态0的置数模式和复位模式的验证
为了验证在各个状态下rst复位的有效性,先使用load=1跳转到各个状态,再使用rst=1将状态复位为0。有状态转移图如下:
部分代码如下:
仿真结果截图:
可以看到,counter先是被置位in的状态,然后在rst信号的作用下回到状态0。测试2总共覆盖了256*2 = 512种路径。测试2仿真结束时间15380ns,总共消耗了个周期。
(3)验证3:状态1、2、……、254、255的置数模式的验证
在load=1的条件下,将状态1、2、3、……、254、255向其他255个状态和自身状态跳变,以验证load信号的有效性。状态转移图如下:
部分代码如下:
为了避免重复,上一层循环跳转过的状态再下一次循环不再重复,具体到代码就是j从i开始递增,而非从0开始。
仿真结果截图:
可以看到在循环过程种状态先从状态0跳转到待检测的状态,再通过load将状态跳到另一个状态,然后再通过load跳回待检测状态,遍历完所有256种状态,最后再load跳回状态0进行下一次循环。
这里有一个有意思的地方是:虽然检测3中待检测状态load回到状态0和检测2中某状态rst回到状态0看上去是相同的两个状态之间的跳转,但是它们所使用的条件是不同的,因此属于不同的路径。
测试3总共覆盖了256 + (255+254+253+……+1)*2 = 256 + 65280 = 65535条路径。测试3结束时总共仿真了1326080ns,消耗了(1326080/20)-512-256-1 = 65535个周期,理论和仿真结果两者相符合。
3、仿真结果分析
通过仿真发现,总共仿真了1326080ns,其中有20ns的初始化复位,总共消耗(1326080-20)/20 = 66303个周期,并且再测试3有状态0load到待检测状态重复的255个周期,所以真实覆盖到的路径有66303-255 = 66048条,恰好完整覆盖了所有的路径。
综上所述,受“一笔画”思想的启发,我提出的验证方案通过66303个周期实现了总共66408条路径的完整验证,但是还是有冗余周期255个。
【附录】
testbench.v源码
模256计数器的路径验证相关推荐
- EDA实验(Quartus Ⅱ+fpga) (二)---时序电路的设计-模可变计数器设计
前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码.使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6. (一)实验目的 (1)进一步熟悉E ...
- quartus仿真33:74161级联实现模60计数器
将60分解成6*10,分别用74161实现模6和模10计数器,再级联成模60计数器 利用OC进位端反相得到的信号输入到置位端,模6计数器的实现15-X+1=6,解得置数端需要准备的数为X=10=101 ...
- 对时序逻辑电路采用不同描述方式,ISE综合出来的电路(RTL Schematic)比较(以模5计数器为例)
目录 前言 行为级描述 Verilog HDL设计代码为: ISE综合 RTL Schematic Technology Schematic 状态机描述状态转移图 Verilog HDL代码 测试文件 ...
- 级联模60计数器(Verilog HDL语言描述)(仿真与综合)
目录 前言 模60计数器 Verilog HDL语言描述 测试文件 仿真波形 RTL Schematic Technology Schematic 前言 看这篇文章前,推荐先看看模10计数器和模6计数 ...
- 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)
目录 前言 模6计数器 Verilog HDL语言描述 测试文件 仿真电路图 RTL Schematic Technology Schematic 模10计数器 Verilog HDL语言描述 测试文 ...
- multisim仿真D触发器设计的模六计数器并在数码管显示0-5
D触发器设计的模6计数器 设计思路从000计数到101,并用卡诺图进行化简,没有输出为摩尔型 用quartus仿真看波形 BCD译码 选择74LS48芯片,将D触发器输出Q2Q1Q0对应接到输入管脚C ...
- quartus仿真25:JK触发器构成的模7计数器(分析)
分析是给出电路图分析逻辑功能 根据驱动方程写出状态转移方程绘制状态转移表 犯得两个错误 Q2Q1‾≠Q2‾⋅Q1‾\overline{Q_2Q_1}\neq\overline{Q_2} \cdot \ ...
- revit翻模中需要绘制路径和边界的构件(楼板,屋顶)怎么做不出错?
revit翻模中需要绘制路径和边界的构件(楼板,屋顶)怎么做不出错?在项目中新建楼板.屋顶时最好不要在其创建状态下进行,容易出错.具体操作如下: 这种情况下想保存新建的屋顶必须在编辑完成后绘制一个屋顶 ...
- 【数电】如何使用74LS112(或74LS74)构成一个十四分频器(模七计数器)
IT精英们,大家都学过数字电子技术吧,尽管这东西没用,不过这些基础课程对思维的培养还是很有好处的,我不爱上课,但不代表我不喜欢数电.我们实验课老师为了加强实验难度,把实验题改掉了,用74LS112(或 ...
最新文章
- 沈向、洋周明:神经自然语言处理进展综述:建模,学习,推理
- 技术社区_如何加入技术社区
- 2017.10.23 卡牌游戏 失败总结
- 谷歌Pixel 4“浴霸”相机模组细节曝光:包含一枚长焦镜头
- What’s the difference between system.web and system.webServer?
- 教你如何显示出文本文档的后缀名
- iOS开发从appStore下载历史版本
- 进程上下文切换 – 残酷的性能杀手(上)
- Industry工业软件开发平台设计A-1
- G.703接口和E1接口区别
- 【机器学习】使用 IQR、Z 分数、LOF 和 DBSCAN 检测异常值
- 基于ssm的网上问卷调查系统的实现与设计
- Chrome浏览器关闭地址栏的搜索记录
- OnePlus一加手机:测试
- 苹果史上8款最失败产品
- MSP430 单片机 SHT30 SHT31 温湿度传感器 MSP430F5529 MSP430G2553 程序
- 一个淘宝搜索接口,可接爬虫
- shell之if和else
- 这就是所谓的历史剧?
- 一个Linux下的网络模拟工具 Core
热门文章
- Java程序员必备的6款最佳开发工具, 你的最爱是哪款?
- wphone 开发 跳转应用市场 全景透视效果
- 多种解决:“Word无法启动转换器mswrd632.wpc”方法
- 码牛FFmpeg/直播/WebRtc音视频会议/视频编辑/音视频
- vivo手机光环助手下载游戏怎么打不开_全新5G自拍手机 vivo S6正式发布
- 天天静听ASMR-3.2.0——各种声音治疗你的失眠
- 苏州大学计算机复试python_2017年上岸苏州大学计算机,872考研经验,初复试经验分享贴!...
- 将Unicode编码转换为汉字
- 服务器清理虚拟内存工具,服务器清理虚拟内存工具
- 【附上解释】爬取A股所有上市公司的信息并存储到数据库或者是csv文件中