自学内容网 自学内容网

verilogHDL仿真详解

前言

Verilog HDL中提供了丰富的系统任务和系统函数,用于对仿真环境、文件操作、时间控制等进行操作。(后续会进行补充)

正文

一、verilogHDL仿真详解

`timescale 1ns/1ps      
//时间单位为1ns,精度为1ps,
//编译指令将时间单位与实际时间相关联。
//该指令用于定义时延、仿真的单位和精度

module tb_test_all_tb();//仿真模块名(不可至工程顶层)
wire data_in;//仿真模块输入

reg  data_out;//仿真模块输出

tb_test_all tb_test_all_inst(//被测试模块名 #(.被测试模块全局变量(目标值)) 被测试模块名例化名
.bin(data_in  ),//被测试模块输入

.bcd(data_out )//被测试模块输出
);

reg data_1;//测试中间变量(这里用于接收数据)
integer data_m;
integer i = 0;

initial begin//执行一次(仿真初始化赋值)
data_m = $fopen("data.txt");//创建并打开文本文件(绝对路径或相对路径)
#20000//延时20000 * 1ns
data_1 = {$random}%256;//随机产生0~256之间的数字,没有{}时产生-256~256之间的数字
$fclose(data_m);//关闭文件。

forever #5 clk = ~clk; //每5个时间单位翻转一次时钟信号,生成时钟信号
$stop;//暂停仿真
$finish;//仿真结束
end

always@(*) begin//多次执行(循环结构等)
$display("this is verilog");//打印输出字符
$display("%t,%b",$time,data_in);//打印输出data_in已%b的形式,并且输出打印时间
$monitor("%t,%b",$time,data_in);//持续监控指定变量的值,并在变量值发生变化时显示

$fwrite(data_m, "%c", data_in);//向文件写入数据,将data_in已%c的格式写入到data.txt
$fdisplay(data_m, "%c", data_in);//向文件写入数据,将data_in已%c的格式写入到data.txt

$readmemb("data.txt",data_1);//从文件读入数据读入到data_1,readmemb二进制方式,readmemh十六进制
      $fscanf(data_m, "%h", data_in);// 使用fscanf读取一个1位无符号整数从文件data.txt读入到data_1
end

endmodule

参考资料

Verilog中的系统函数和系统任务


原文地址:https://blog.csdn.net/m0_66619666/article/details/145057202

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!