在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7989|回复: 5

[原创] 关于cpu(arm)仿真,verilog加载rom文件的方法

[复制链接]
发表于 2012-9-17 22:35:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 caicaixuehua 于 2012-10-20 16:45 编辑

cpu仿真时,必须把c编译器编译好的二进制文件经过处理后用verilog加载到rom中。

现在以arm7为例,设rom模型为32位宽(即rom里面的reg为:reg  [31:0] mem[DEPTH-1:0]

1.使用MDK编辑产生bin文件(产生bin文件的设置似乎对8051不起作用)(也可以产生hex文件处理,但是处理起来比较麻烦,所以产生bin文件进行处理)

设置如下即可



         1.jpg


2.产生的arm0.bin文件格式如下:


2.jpg


3.现在需要对这个文件进行处理,才可以用verilog中的readmemh读入rom中去


由于rom32位位宽,则必需把数据处理成32位位宽(arm0.bin文件中为8位位宽),如果直接读入,则:

       mem[0]='h1c;

       mem[1]='hf0;

       mem[2]='h9f;

       mem[3]='he5;

       mem[4]='h1C;
       mem[5]='hF0;
       mem[6]='h9F;
       mem[7]='hE5;

                .

                .

                .


而我们实际的需要的是:

       mem[0]='he59f_f01C;

       mem[1]='he59f_f01c;

                .

                .

                .


因此我们需要对此arm0.bin处理一下,格式应该如下:

3.jpg



也可以如下:


4.jpg

       或者其它形式,只要是一个数字组应该为32位的十六进数


4.手动处理似乎比较麻烦,大家可以用c,或者perl脚本之类的处理一下

我自已写的c的处理代码和可以直接运行的exe文件如下:


注意:如果直接要运行test.exe处理文件的话,文件名要为arm0.bintest.exe文件处于一个文件下

                   test.rar (6.85 KB, 下载次数: 60 )

注:前段时间仿真freearm时,在eetop上找了好久也没有找到相当的文章(也有可能没有找到),自己瞎搞了好久才搞定,故写下来,有不对之处,还请大家多多指教。





发表于 2013-2-22 14:53:00 | 显示全部楼层
这么长时间,这么好的文章,居然没人顶
发表于 2013-4-8 17:26:02 | 显示全部楼层
这个,KEIL输出的时候能不能设为一行直接输出8个16进制数(总共就是32位二进制了)?
发表于 2014-5-18 13:27:38 | 显示全部楼层
呵呵,这几天研究了下keil,vhx选项还可以加--widthxbankx的一个选项,意思就是位宽和bank数。如果只有一个bank,且每个bank输出的数据位宽是32位的话,直接使用--32x1,即可产生加载用的hex文件了,不需要楼主这么麻烦了。
发表于 2018-12-21 12:35:58 | 显示全部楼层
发表于 2018-12-22 18:11:01 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-4-10 13:18 , Processed in 0.022297 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表