c语言读verilog文件,verilog中读取文件中的字符串

今天给个程序大家玩玩。因为今天遇到一个问题,就是要向UART发送指令,指令非常多,都是字符串。一直copy 函数 UART ("COMM_1");  UART ("COMM_2");........可是指令有好几十个哦。如果遇上百个岂不是更惨。

如果是C语言,大家肯定想到用数组遍历。不过Verilog中想用数组遍历,我没有尝试过 —— 我这里是字符串不是简单的16进制数。有兴趣的同学可以自己玩玩,大家一起交流。目前我采用的是文件的方式来做

第一步建立一个文件 ,名称是test_case.dat。里面保存你需要发送的指令,例如:

第二步使用下列代码`timescale 1ns/1ps

module readfile ;

integer str_cnt ;

integer file_r,file_w ;

reg  [47:0]reg0 ;

reg        str_p ;

initial begin

str_cnt = 0 ;

file_r = $fopen ("test_case.dat","r");

file_w = $fopen ("test_case_h.dat","w");

while(!$feof(file_r)) begin

str_p = $fgets(reg0,file_r);

if(reg0==10);  //Tab

else if (reg0==0) ;  //file finish

else begin

str_cnt = str_cnt + 1 ;

$display("%s",reg0);

$fwrite(file_w, "NO=%d,   %s = %h\n", str_cnt,reg0, reg0);

end

end

$fclose (file_r);

$fclose (file_w);

#2

$stop ;

end

endmodule

输出到一个 test_case_h.dat文件。输出是这个样子的

注意看哦,我的test_case.dat中所有的字符串都是6*8bit的。对应程序中的reg0是48bit的。如果字符串bit少了会把换行符读进去,如果字符串的bit多了会遗漏。

都说了是给大家玩的程序。所以有兴趣的朋友可以查询一下standard中对$feof以及$fgets的解读

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值