做直播网站vps可以吗/洛阳网站seo
文章目录
- 编写测试验证程序
- 波形产生
- 值序列
- 重复模式
- 测试验证程序实例
- 从文本文件中读取向量
- 实例:时序检测器
测试验证程序用于测试和验证设计方法的正确性。Verilog 提供强有力的结构来说明测试验证程序。
编写测试验证程序
测试验证程序有三个主要目的:
- 产生模拟激励(波形);
- 将输入激励加入到测试模块并收集其输出响应;
- 将响应输出与期望值进行比较。
典型的测试验证程序形式如下:
module test_bench;// 通常测试验证程序没有输入和输出端口Local_reg_and_net_declarationsGenerate_waveforms_using_initial_&_always_statementsInstantiate_module_under_testMonitor_output_and_compare_with_expected_values
endmodule
测试中,通过在测试验证程序中进行实例化,激励自动加载于测试模块。
波形产生
有两种产生激励值的主要方法:
- 产生波形,并在确定的离散时间间隔加载激励;
- 根据模块状态产生激励,即根据模块的输出响应产生激励。
通常需要两类波形。一类是具有重复模式的波形,例如时钟波形,另一类是一组指定的值确定的波形。
值序列
产生值序列的最佳方法是使用 initial
语句。例如:
initialbeginReset = 0;#100 Reset = 1;#80 Reset = 0;#30 Reset = 1;end
生成的波形如下图所示:
如果使用非阻塞性过程赋值产生如上所示的波形,则写法如下:
initialbeginReset <= 0;Reset <= #100 1;Reset <= #180 0;Reset <= #210 1;end
重复模式
重复模式的生成通过使用如下形式的连续赋值形式加以简化:
assign #(PERIOD/2) Clock = ~ Clock;
但是这种做法并不完全正确。问题在于 Clock
是一个线网(只有线网能够在连续赋值中被赋值),它的初始值是 z,并且,z 等于 x,~ x 等于 x。因此 Clock
的值永远固定为值 x。
下面是一个完整的时钟产生器模块:
module Gen_Clk_A(Clk_A);output Clk_A;reg Clk_A;parameter tPERIOD = 10;initialClk_A = 0;always #(tPERIOD/2) Clk_A = ~ Clk_A;
测试验证程序实例
下面是 2-4 解码器和它的测试验证程序:
`timescale 1ns/1ns
module Dec2x4(A, B, Enable, Z);input A, B, Enable;output[0:3] Z;wire Abar, Bbar;not #(1, 2)V0(Abar, A);V1(Bbar, B);nand #(4, 3)N0(Z[0], Enable, Abar, Bbar);N0(Z[1], Enable, Abar, B);N0(Z[2], Enable, A, Bbar);N0(Z[3], Enable, A, B);
endmodulemodule Dec_Test;reg Da, Db, Dena;wire[0:3] Dz;Dec2x4 D1(Da, Db, Dena, Dz);initialbeginDena = 0;Da = 0;Db = 0;#10 Dena = 1;#10 Da = 1;#10 Db = 1;#10 Da = 0;#10 Db = 0;#10 $stop;endalways@(Dena or Da or Db or Dz)$display("At time %t, input is %b%b%b, output is %b", $time, Da, Db, Dena, Dz);
endmodule
从文本文件中读取向量
可用 $readmemb
系统任务从文本文件中读取向量(可能包含输入激励和输出期望值)。下面为测试 3 位全加器电路的例子。假定文件 "test.vec"
包含如下两个向量:
向量的前三位对应于输入 A,接下来的三位对应于输入 B,再接下来的位是进位,八到十位是期望的求和结果,最后一位是期望进位值的输出结果。下面是全加器模块和相应的测试验证程序:
module Adder1Bit(A, B, Cin, Sum, Cout);input A, B, Cin;output Sum, Cout;assign Sum = (A ^ B) ^ Cin;assign Cout = (A ^ B) | (A & Cin) | (B & Cin);
endmodulemodule Adder3Bit(First, Second, Carry_In, Sum_Out, Carry_Out);input[0:2] First, Second;input Carry_In;output[0:2] Sum_Out;output Carry_Out;wire[0:1] Car;Adder1BitA1(First[2], Second[2], Carry_In, Sum_Out[2], Car[1]),A1(First[1], Second[1], Car[1], Sum_Out[1], Car[0]),A1(First[0], Second[0], Car[0], Sum_Out[0], Carry_Out);
endmodulemodule TestBench;parameter BITS = 11, WORDS = 2;reg[1:BITS] Vmem[1:WORDS];reg[0:2] A, B, Sum_Ex;reg Cin, Cout_Ex;integer J;wire[0:2] Sum;wire Cout;Adder3Bit F1(A, B, Cin, Sum, Cout);initialbegin$readmemb("test.vec", Vmem);for(J=1, J<=WORDS; J=J+1)begin{A, B, Cin, Sum_Ex, Cout_Ex} = Vmem[J]#5;if((Sum !== Sum_Ex) || (Cout !== Cout_Ex))$display("****Mismatch on vector %b ****", Vmem[J]);else$display("No mismatch on vector %b", Vmem[J]);endend
endmodule
测试模块中首先定义存储器 Vmem
,字长对应于每个向量的位数,存储器字数对应于文件中的向量数。
实例:时序检测器
检测数据线上连续三个 1 的序列。在时钟的每个下沿检查数据,状态图如下:
module Count3_1s(Data, Clock, Detect3_1s);input Data, Clock;output Detect3_1s;integer Count;reg Detect3_1s;initial beginCount = 0;Detect3_1s = 0;endalways@(negedge Clock) beginif(Data == 1)Count = Count + 1;elseCount = 0;if(Count >= 3)Detect3_1s = 1;else:Detect3_1s = 0;end
endmodulemodule Top;reg Data, Clock;wire Detect;integer Out_File;Count3_1s F1(Data, Clock, Detect);initial beginClock = 0;forever#5 Clock = ~ Clock;endinitial beginData = 0;#5 Data = 1;#40 Data = 0;#10 Data = 1;#40 Data = 0;#20 $stop;endinitial beginOut_File = $fopen("results.vectors");$montitor(Out_File, "Clock = %b, Data = %b, Detect = %b", Clock, Data, Detect);end
endmodule
相关文章:

Verilog 入门(八)(验证)
文章目录 编写测试验证程序波形产生值序列重复模式 测试验证程序实例从文本文件中读取向量实例:时序检测器 测试验证程序用于测试和验证设计方法的正确性。Verilog 提供强有力的结构来说明测试验证程序。 编写测试验证程序 测试验证程序有三个主要目的:…...

vue3 vue-router 导航守卫 (五)
在Vue 3中,导航守卫仍然是一个重要的概念,用于在路由切换时执行一些特定的逻辑。Vue Router提供了多个导航守卫,包括全局守卫、路由独享守卫和组件内守卫。可以在路由切换时执行一些特定的逻辑,例如身份验证、权限控制、数据加载等…...

Git命令---查看远程仓库
介绍 使用git命令查看绑定的远程仓库。 命令 git remote -v...

12.8作业
1. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是…...

算法:有效的括号(入栈出栈)
时间复杂度 O(n) 空间复杂度 O(n∣Σ∣),其中 Σ 表示字符集,本题中字符串只包含 6 种括号 /*** param {string} s* return {boolean}*/ var isValid function(s) {const map {"(":")","{":"}","["…...

vxworks常用的指令归纳
目的:方便自己查阅 tftpboot 0x10000000 vxworks bootelf 0x10000000 ifconfig "gem0 dowm" ifconfig "gem0 inet 192.168.0.81" ifconfig "gem0 lladdr 01:02:03:04:05:06:07" ifconfig "gem0 up" ld 0,1,"…...

线性回归实战
3.1 使用正规方程进行求解 3.1.1 简单线性回归 公式 : y w x b y wx b ywxb 一元一次方程,在机器学习中一元表示一个特征,b表示截距,y表示目标值。 使用代码进行实现: 导入包 import numpy as np import matp…...

stm32 使用18B20 测试温度
用18b20 测试温度是非常常用的,不过18B20的调试不是这么容易的,有些内容网上很多的,不再重复说了,我先把波形说一下,再说程序部分: 整个都温度数据的顺序是: 1.700uS的低电平复位并测试18B20的…...

【Delphi】一个函数实现ios,android震动功能 Vibrate(包括3D Touch 中 Peek 震动等)
一、前言 我们在开发移动端APP的时候,有时可能需要APP能够提供震动功能,以便提醒操作者,特别是ios提供的3D Touch触感功能,操作者操作时会有触感震动,给操作者的感觉很友好。那么,在Delphi的移动端FMX开发中…...

国产Type-C PD芯片—接口快充取电芯片
常用USB PDTYPE-C受电端,即设备端协议IC芯片(PD Sink,也叫PD诱骗芯片),诱导取电芯片。 产品介绍 LDR6328: ◇ 采用 SOP-8 封装 ◇ 兼容 USB PD 3.0 规范,支持 USB PD 2.0 ◇ 兼容 QC 3.0 规范&#x…...

pytorch学习6-非线性变换(ReLU和sigmoid)
系列文章目录 pytorch学习1-数据加载以及Tensorboard可视化工具pytorch学习2-Transforms主要方法使用pytorch学习3-torchvisin和Dataloader的使用pytorch学习4-简易卷积实现pytorch学习5-最大池化层的使用pytorch学习6-非线性变换(ReLU和sigmoid)pytorc…...

详解Keras3.0 Models API: Whole model saving loading
1、save方法 Model.save(filepath, overwriteTrue, **kwargs) 将模型另存为.keras文件 参数说明 filepath: 保存模型的路径。必须以.keras结尾overwrite:布尔值,表示是否覆盖已存在的文件。默认为 True,即覆盖已存在的文件。save_format…...

Spring Cloud Gateway 网关的基础使用
1. 什么是网关?网关有什么用? 在微服务架构中,网关就是一个提供统一访问地址的组件,它解决了内部微服务与外部的交互问题。网关主要负责流量的路由和转发,将外部请求引到对应的微服务实例上。同时提供身份认证、授权、…...

小米手机锁屏时间设置为永不休眠_手机不息屏_保持亮屏
环境:打开手机自带的锁屏时间设置发现没有 永不息屏的选项 原因:采用了三星OLED屏幕,所以根据OLED屏幕特性,这个是为了防止烧屏而特意设计的。非OLED机型支持设置“永不” 解决方案1:原生系统是支持永不锁屏的&#…...

lightdb plorasql集合类型新增可变数组
文章目录 背景集合类型可变数组可变数组示例 背景 在信创适配中,从Oracle迁移过来的存储过程使用到可变数组。因此在LightDB-X 23.4版本中对现有的集合类型进行了增强,添加了可变数组类型。 集合类型 在LightDB-X 23.4版本开始plorasql支持的集合类型…...

算法--最短路
这里写目录标题 xmind单源最短路简介所有边权都是正朴素的Dijkstra算法思想例子题解 堆优化版的Dijkstra算法 存在负数权Bellman-Ford算法思想例子题解 spfa算法思想例子题解 spfa判断负环思想例子题解 多源汇最短路简介弗洛伊德算法思想例子题解 小tips xmind 上述中ÿ…...

Linux 定时任务备份MySQL数据库
Linux 定时任务基本知识 crontab yum install crontabs (安装 crontabs) systemctl enable crond (设为开机启动) systemctl start crond(启动crond服务) systemctl status crond (查看状态&a…...

查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
文章目录 摘要1. 查询CPU使用率命令:top -bn1 | grep \"Cpu(s)\" | awk {split($0,arr,\" \");print 100-arr[8]}2. 查询内存命令(单位:G):top -bn1 | grep \"KiB Mem\" | awk {split($…...

外观模式 rust和java的实现
文章目录 外观模式介绍实现javarustrust仓库 外观模式 外观模式(Facade Pattern)隐藏系统的复杂性,它为子系统中的一组接口提供一个统一的高层接口,使得这些接口更加容易使用。外观模式通过封装子系统内部的复杂性,提…...

uniapp-hubildx配置
1.配置浏览器 (1)运行》运行到浏览器配置》配置web服务器 (2)选择浏览器安装路径 (3)浏览器安装路径: (3.1) 右键点击图标》属性 (3.2)选择目标&…...

Nginx基础篇:Nginx搭建、Nginx反向代理、文件服务器部署配置。
Nginx Linux系统安装以及反向代理的配置 简介优点nginx 环境安装常用Nginx 命令nginx 文件服务器搭建 简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点…...

什么是TDR(威胁检测与响应)
网络安全是被动和主动方法的混合体。过去,企业往往局限于被动的方法,随着合规性和安全策略越来越受到重视,主动方法也越来越受到关注。与其他行业相比,网络安全是高度动态的,网络安全团队采用任何可以帮助他们优化的新…...

30、pytest入门内容回顾
整体结构 解读与实操 pytest30讲主要从四个方面由浅入深的进行解读, 开始 讲解了pytest的概述,安装前的准备工作(python,pycharm,pytest),运行方式(命令行),断言(assert…...

2023年 - 我的程序员之旅和成长故事
2023年 - 我的程序员之旅和成长故事 🔥 1.前言 大家好,我是Leo哥🫣🫣🫣,今天咱们不聊技术,聊聊我自己,聊聊我从2023年年初到现在的一些经历和故事,我也很愿意我的故事分…...

JMH性能测试
一、JMH JMH,全称Java Microbenchmark Harness(微基准测试框架),是专门用于Java代码微基准测试的一套测试工具API,是由Java虚拟机团队开发的,一般用于代码的性能调优。 BenchMark又叫做基准测试,…...

超完整的mysql安装配置方法(包含idea和navicat连接mysql,并实现建表)
mysql安装配置方法 1、下载mysql2、解压到指定的安装目录3、配置初始化文件my.ini4、配置用户变量和系统变量5、初始化mysql6、安装mysql服务并启动修改密码7、使用idea连接mysql8、使用Navicat可视化工具连接mysql,并实现新建数据库,新建表 1、下载mysq…...

通过仿真理解完整的阵列信号噪声模型
概要 噪声对无线电设备的信号接收会造成影响,是通信、雷达、导航、遥感等工程应用领域中的关键考虑因素。通常认为阵列合成能够提升信噪比,但忽略了这一论断的前提,即不同通道引入的噪声互不相关。但实际应用中,接收的噪声不仅仅包含信道引入的不相关噪声,还包含从外界环…...

问题:数组对象去重
问题:数组对象去重 var arr [{name: ‘a’,id: 1}, {name: ‘a’,id: 2}, {name: ‘b’,id: 3}, {name: ‘c’,id: 4}, {name: ‘c’,id: 6}, {name: ‘b’,id: 6}, {name: ‘d’,id: 7}]; 对数组对象name进行去重处理, 结果显示为: [{name…...

前端:让一个div悬浮在另一个div之上
使用 CSS 的 position 属性和 z-index 属性 首先,将第二个 div 元素的 position 属性设为 relative 或 absolute。这样可以让该元素成为一个定位元素,使得后代元素可以相对于它进行定位。 然后,将要悬浮的 div 元素的 position 属性设为 ab…...

千锋 Vue 详细笔记整理
视频笔记是根据B站 千锋 涛哥 - SpringBootvue前后端分离项目《锋迷商城》实战课-完结版 进行整理的 笔记可上 gitee仓库 自取 千锋 Vue 笔记整理 一、vue 的简介1.1 使用 JQuery 的复杂性问题1.2 VUE 简介1.2.1 前端框架1.2.2 MVVM 二、 vue 入门使用2.1 vue 的引入2.2 入门案…...