Verilog对txt及bin文件读取

Verilog 仿真文件对txt及bin文件的操作参考;

`timescale 1ns/1ps

module tb_top;
    parameter   P_REF_INDEX =  "../../../../../sim/0721/index.txt";
    parameter   P_REF_OMEGA =  "../../../../../sim/0721/omega_float.bin";
    parameter   P_REF_CCB   =  "../../../../../sim/0721/CCB_inv_All_bin.bin";
    parameter   P_REF_MATE  =  "../../../../../sim/0721/MATE_inv_fix_bin.bin";
    parameter   P_REF_GRID1 =  "../../../../../sim/0721/Grid1_inv_All_bin.bin";

    //signal define
    wire                                s_ETH_CLK                           ;
    wire                                s_USR_CLK                           ;
    reg                                 r_CLK_100                           ;
    reg                                 r_rst                               ;
    wire                                s_LED1                              ;

    reg                                 r_C0_SYS_CLK_P                      ;
    reg                                 r_C0_SYS_CLK_N                      ;
    wire                                s_C0_DDR4_ACT_N                     ;
    wire        [ 16:0]                 s_C0_DDR4_ADR                       ;
    wire        [  1:0]                 s_C0_DDR4_BA                        ;
    wire        [  0:0]                 s_C0_DDR4_BG                        ;
    wire        [  0:0]                 s_C0_DDR4_CKE                       ;
    wire        [  0:0]                 s_C0_DDR4_ODT                       ;
    wire        [  0:0]                 s_C0_DDR4_CS_N                      ;
    wire                                s_C0_DDR4_CK_T                      ;
    wire                                s_C0_DDR4_CK_C                      ;
    wire                                s_C0_DDR4_RESET_N                   ;
    wire        [  7:0]                 s_C0_DDR4_DM_DBI_N                  ;
    wire        [ 63:0]                 s_C0_DDR4_DQ                        ;
    wire        [  7:0]                 s_C0_DDR4_DQS_C                     ;
    wire        [  7:0]                 s_C0_DDR4_DQS_T                     ;
    wire                                s_C0_DDR4_INIT_DONE                 ;
    wire                                s_C0_DDR4_COMP_ERR                  ;

    reg         [ 31:0]                 r_SIMSTEP                           ;
    wire                                s_SIMSTEP_VLD                       ;

    integer                             cmd_line            = 1             ;//(i) Commond line
    integer                             file_line           = 1             ;//(i) File line
    reg         [1023:0]                MSG                 = 0             ;
    integer                             FOMEGA              = 0             ;
    integer                             FCCB                = 0             ;
    integer                             FZC                 = 0             ;
    integer                             FGRID1              = 0             ;
    integer                             FINDEX              = 0             ;
    reg                                 STR                 = 0             ;
    reg                                 ERR                 = 0             ;
    integer                             SEND_STATE          = 0             ;
    reg         [ 31:0]                 r_INIT_LINE         = 0             ;

    reg                                 r_LOAD_END                          ;

    reg                                 r_ETH_WR_START                      ;
    reg                                 r_ETH_WR_STOP                       ;
    reg         [ 31:0]                 r_ETH_WR_SEL                        ;
    reg         [ 31:0]                 r_ETH_WR_SADR                       ;
    reg                                 r_ETH_WR_DVLD                       ;
    reg         [63:0]                  r_ETH_WR_DATA                       ;
    reg         [ 7:0]                  r_ETH_WR_DATA_TMP       [7:0]       ;

    reg                                 r_ETH_RD_REQ                        ;
    reg         [ 31:0]                 r_ETH_RD_SADR                       ;
    reg         [ 31:0]                 r_ETH_RD_SEL                        ;
    reg         [ 31:0]                 r_ETH_RD_SIZE                       ;
    reg                                 r_ETH_RD_DVLD                       ;
    reg         [511:0]                 r_ETH_RD_DATA                       ;

//===============================================================================================
//output port
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Verilog是一种硬件描述语言,主要用于数字电路设计。在设计数字电路时,常常需要定义一些初始值或者代码,这些初始值或者代码可以被保存在一个二进制文件中。那么,如何在Verilog读取这个二进制文件呢? Verilog提供了$readmemb和$readmemh两个系统任务,可以用来读取二进制文件并将其中的值存储到内存或者寄存器中。其中,$readmemb用于读取二进制文件中的值,并将其存储到8位寄存器中;$readmemh则用于读取二进制文件中的值,并将其存储到16位寄存器中。 使用$readmemb和$readmemh任务读取二进制文件时,需要指定文件名和存储位置。比如,可以使用以下代码读取一个名为 “data.bin” 的二进制文件,并将其按顺序存储到一个16位寄存器数组中: reg [15:0] mem [0:255]; initial begin $readmemb("data.bin", mem); end 这里,我们定义了一个16位寄存器数组 mem ,并使用$readmemb任务从文件 data.bin读取数据,并将其按顺序存储到mem数组中。在使用$readmemb和$readmemh任务进行读取文件时,需要注意文件格式必须是纯文本的二进制格式,文件名需要加上后缀名“.bin”,且文件必须与代码文件存储在同一目录下。 总之,在设计数字电路时使用Verilog进行模拟仿真,如果需要读取二进制文件,只需使用$readmemb或者$readmemh任务就可以了,可以轻松地将二进制文件中的值读取到寄存器或者内存中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值