verilog系统函数用法
1、$fwrite 向文件写入数据
$fdisplay 格式:$fwrite(fid,"%h%h\n",dout_r1,dout_r2);
(1)fwrite是需要触发条件的,在一次触发条件之后也不会自动发生换行,所以要求手动添加换行。
(2)如果写放文件的格式为%d,则认为是无符号数,如下例:
wire [27:0] data;
fp_re = $fopen("dout.txt","w");
always @(posedge clk)
begin
if(dout_rdy == 1'b1)
begin
$fwrite(fileid,"%d",data);
end
end
解决方法是:将 data定义为有符号数,即:wire signed [27:0] data;
(3)输出顶层文件中例化的信号(或下一级例化的文件的信号)
如果输出有符号数,要在相应的文件中定义为signed
eg:$fwrite(file_id,"%d%12d\n",u_coef_update.ekxdn_i,u_coef_update.u_mult.mult_out);
在文件coef_update中定义的信号或REG ekxdn_i,如果要输出有符号数,要在coef_update中把ekxdn_i定义为signed;
在文件coef_update文件中例化文件u_mult,输出相应的信号mult_out. 2、$fscanf 从文件中读取数据
(1)读取格式为按行读取,一行读完之后再转向下一行;
(2)读取也是需要触发条件的;
always @ ( posedge clk )
begin
if(cnt_test == 3'd7)
begin
$fscanf(coef_file,"%d%d%d%d",coef01_i,coef01_q,coef02_i,coef02_q);
$fscanf(ref_file,"%d%d%d%d",ref01_i,ref01_q,ref02_i,ref02_q);
end
end 3、$fopen 打开文件
(1) 在读写文件之前,一定要用fopen打开文件
(2)读写路径的设置
file_id = $fopen("F:/modelsim/coef.txt"),注意这里的斜杠方向。
4、$random
random_function ::=
$random [ ( seed ) ]
$random产生一个32位的有符号数,seed可心是reg,integer,time类型
Example 1—Where b is greater than 0, the expression ($random % b) gives a number in the following
range: [(-b+1): (b-1)].
产生–59 到59的数:
reg [23:0] rand;
rand = $random % 60;
Example 2—用连接符产生 0 to 59:
reg [23:0] rand;
rand = {$random} % 60;
有一点不懂,连接符在这时起什么作用呢?
verilog系统函数用法的更多相关文章
- MySQL时间操作的系统函数用法
我要查询获得当天凌晨30分的datetime值的方式:select ADDDATE(CURDATE(), INTERVAL TIME_TO_SEC(TIMEDIFF("00:30:00&qu ...
- $_FILES系统函数
PHP编程语言中的常见的$_FILES系统函数用法有: $_FILES['myFile']['name'] 显示客户端文件的原名称. $_FILES['myFile']['type'] 文件的 MIM ...
- Verilog学习笔记基本语法篇(十一)········ 常用系统函数
1)系统任务:$monitor 格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...
- Verilog语言中的系统任务和系统函数
Verilog语言中预先定义了一些任务和函数,用于完成一些特殊的功能,它们被称为系统任务和系统函数,这些函数大多数都是只能在Testbench仿真中使用的,使我们更方便的进行验证. `timescal ...
- 【FPGA篇章七】FPGA系统任务:详述常用的一些系统函数以及使用方法
欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 系统任务和系统函数是Verilog标准的一部分,都以字符"$"为开头.系统任务可划分为六类,下面分别给出一些常用任务的用 ...
- qsort函数用法【转】
qsort函数用法 qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(con ...
- 15系统函数&数据类型转换(必学)-大话数据库视频教程
大纲:系统函数的用法,case...when的用法,cast关键字的用法,convert的用法 优酷超清地址: 腾讯超清地址: 百度网盘下载地址:http://pan.baidu.com/s/1dDe ...
- C语言中malloc()和calloc()c函数用法
C语言中malloc()和calloc()c函数用法 函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别. malloc()函数有一个参数,即要分配的内存空间的大小: ...
- qsort函数用法
qsort函数用法 qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(co ...
随机推荐
- ABAP-年月期间搜索帮助
selection-screen begin of block block1 with frame title text-. parameters:p_mon1 like s031-spmon, p_ ...
- ubuntu upstart启动流程分析
ubuntu自从6.10版本之后就使用了较新的upstart机制来进行系统的初始化. upstart是一种基于事件驱动的服务启动机制,可以使多个系统任务在保持依赖关系的前提下并发启动(据说这样这样启动 ...
- Jena TDB Assembler
TDB Assembler Assemblers (装配器) 是Jena中用于描述将要构建的对象(通常是模型和数据集 models & datasets)的一种通用机制.例如, Fuseki ...
- Haskell语言学习笔记(36)Data.List.Zipper
ListZipper 模块 $ cabal install ListZipper Installed ListZipper-1.2.0.2 Prelude> :m +Data.List.Zipp ...
- pycharm ideavimrc设置备忘
文件存放位置 windows下 C:\Users\你的用户名\.ideavimrc 注:如果要映射pycharm 中的一些命令可以 在pycharm 中 edit->Macros->Sta ...
- Android图形动画
一.动画基础 本质 每帧绘制不同的内容. 基本过程 开始动画后,调用View的invalidate触发重绘.重绘后检查动画是否停止,若未停止则继续调用invalidate触发下一帧(下一次重绘),直到 ...
- 进程间通信-Queue
进程间通信-Queue Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传 ...
- SpringBoot yml properties文件
一.在SpringBoot实现属性注入: 1).添加pom依赖jar包: 1 <!-- 支持 @ConfigurationProperties 注解 --> 2 <!-- https ...
- 使用sizemask来确保索引不越界
[使用sizemask来确保索引不越界] 在redis的字典实现中,有一个sizemask字段. 此字段的作用是当使用下标访问数据时,确保下标不越界. 如当前size为8时,sizemask为7(0x ...
- ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(一)
为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己的优点和缺点.如果需要对数据进行操作,如果数据量不大的情况下,DataList和Gr ...