verilog task1
问题描述:
设计中需要重复多次施加一种激励,每一次激励的施加过程,都可以划分为4个部分,如图所示。
每一次施加的激励只有第二部分的数据有变化(数据格式无变化)。所以顶层的Testbench代码如下:
reg [:] j;
task bian_chen;
begin
for(j=;j<=;j=j+)begin
initial_task();
send_weiliu(j);
latch_weiliu();
shaolu();
end
end
endtask
第二部分中有90位数据需要发送,首先申明变量存储数据,如下所述:
1 reg [:] TDI_REG [:];
initial begin
$readmemb("weiliu.dat",TDI_REG);
end
第二部分数据发送的具体实现,如下所示:
task send_weiliu;
input [:] num;
begin
fork
TCK_gen();
TDI_weiliu(num);
join
end
endtask task TCK_gen;
begin
TCK = 'b0;
repeat() # TCK = ~TCK;
# TCK = 'b0;
end
endtask reg [:] i;
task TDI_weiliu;
input [:] n;
begin
for(i=;i>=;i=i-)begin
@(negedge TCK);
TDI = TDI_REG[n][i];
end
end
endtask
说明:
1)位流数据在时钟上升沿被采样进入编程链寄存器中,所以需要在时钟下降沿处产生好要发送的数据。(见代码24行25行。)
2)由于编程链是按照D01到D90的顺序串接的,所以最高的D90的位流数据应该最先发送。
3)由于数据先要在下降沿产生,再在下一个上升沿到来时被采样,所以产生的TCK的数目为182,而非180。同时在TCK的第一次上升延处,由于TDI数据是无效的(还没产生),所以位流文件也要额外的附加一位,位流文件是91位,最高位第91位时无效的。下面通过一个简单时序波形理解这种情形。如下图:
图2-1
图2-1中,要发送8位数据D8-D1,TCK信号需要翻转2x8+2=18次,第一个上升沿发送无效数据,第一个下降沿处,产生数据D8。
仿真结果:
上图所示,为多28次数据发送过程的仿真波形图。
上图所示,为多每一次数据发送过程的仿真波形图。
总结:
1.用verilog 写Testbench时,本文介绍的,数据的发送过程中TDI、TCk的产生方式值得借鉴。如在模拟键盘的时钟与数据时可以用到。
fork
TCK_gen();
TDI_weiliu(num);
join
2.熟悉了for 循环处理重复性工作的用法,特别是语法。
verilog task1的更多相关文章
- 简单的Verilog测试模板结构
这里记录一下曾经用到的简单的测试模板,如下所示: //timescale `timescale 1ns/1ns module tb_module(); //the Internal motivatio ...
- verilog语法实例学习(6)
函数和任务 函数 https://wenku.baidu.com/view/d31d1ba8dd3383c4bb4cd283.html verilog中函数的目的是允许代码写成模块的方式而不是定义独立 ...
- Verilog学习笔记简单功能实现(二)...............全加器
先以一位全加器为例:Xi.Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号.列表有: Xi Yi Cin Sum Cout 0 0 0 0 0 0 0 1 1 0 ...
- Verilog HDL模型的不同抽象级别
所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...
- Verilog学习笔记基本语法篇(十二)········ 编译预处理
h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...
- Verilog学习笔记基本语法篇(十一)········ 常用系统函数
1)系统任务:$monitor 格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...
- FPGA作为从机与STM32进行SPI协议通信---Verilog实现 [转]
一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...
- 基于Verilog HDL整数乘法器设计与仿真验证
基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为 ...
- system verilog中的跳转操作
在verilog中,使用disable声明来从执行流程中的某一点跳转到另一点.特别地,disable声明使执行流程跳转到标注名字的声明组末尾,或者一个任务的末尾. verilog中的disable命令 ...
随机推荐
- maven项目里的mapper不被加载,解析
出现这个错误是因为maven加载配置文件是从resource里加载的,所以要配置一下
- div的全屏与退出全屏
div的全屏与退出全屏 作用:将div全屏与退出全屏,一般播放器使用较多. html按钮: <button onclick="showFull();"> 全屏 < ...
- [手把手教你] 用Swoft 搭建微服务(TCP RPC)
序言 Swoft Framework 基于 Swoole 原生协程的新时代 PHP 全栈式协程框架 Swoft 是什么? Swoft 框架是首个基于Swoole 原生协程的新时代 PHP高性能协程全栈 ...
- office转pdf转swf
系统环境:CentOs5.5用到的工具:Openoffice 3 , Pdf2Swf tool , Jodconverter , FlexPaper 网上找了些资料,早有人已经实现了这样的功能,只不过 ...
- 18_使用react脚手架构建应用
一.什么是脚手架 1.脚手架:用来帮助程序员快速创建一个基于xxx项目的模板仓库(可以理解为网上的大神写好了基础模板直接下载无需自己配置) 1)包含了所有需要的配置 2)指定好了所有依赖 3)可以直接 ...
- centos磁盘空间重新分配
将/home目录压缩一部分空间到/ ref: https://serverfault.com/a/811124/434124 https://stackoverflow.com/a/19969471/ ...
- jwt-auth错误小结
我用的是:"tymon/jwt-auth": "1.0.0-rc.1" 根据官方网站http://jwt-auth.readthedocs.io安装,并且ven ...
- Windows系统封装总结
注:使用虚拟机或者实体机进行封装均可,实体机进行封装的成功率更高.虚拟机进行封装建议使用VMware,12版本.过高的版本容易造成封装失败 一. Windows 10系统封装 1 ...
- 跨域(四)——document.domain
浏览器有一个合法的性质:一个页面可以设置document.domain为当前子域或比当前子域更高级的域.一般顶级就到了根域,如果设置为其他域,浏览器就会报权限错误. 利用这个性质,我们可以通过设置do ...
- list 转datatable
//public static DataTable ListToDataTable(List<FwImage> entitys) //{ // //检查实体集合不能为空 // if (en ...