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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 41114|回复: 112

[原创] dw8051移植到altera FPGA分享 并可使用altera jtag 下载c程序, 驱动lcd1602正常

[复制链接]
发表于 2012-11-24 15:52:41 | 显示全部楼层 |阅读模式

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

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

x
此工程是把dw8051 移植到altera 的EP2C5T144C8N 上,并在mcu上加了两个port:porta,portb 。开始时,我直接把hex文件加载到mcu的rom里,故每改变一次软件,就要重新编译整个fpga工程,特别浪费时间,故我把rom 换成了ram,并利用atera自带的jtag下载hex文件到ram中,然后,mcu直接从此ram中读取代码(此ram对于mcu仍为rom,不能写,只能读),如此,只需要编译一遍fpga工程,下载到fpga,然后开始写软件,下载,软件改变不需要重新编译下载pof/sof文件。


工程目录如下:
    \DW8051\              
                   software\
                   my_proj\

DW8051下面有software、my_proj文件夹 和 fpga工程
(1) 双击其中的 TEST.qpf 即可以打开fpga工程(软件版本为quartusII 10.0)
     1)其中test_top为整个工程的顶层
     2)pll 为35M(编译后报告的最大速度为39M,故我使用35M),
     3)jtag_inst0为我做的支持jtag下载hex文件到ram的硬件逻辑,其中初始化了altera的ip virtual jtag(因为fpga端口,只有一个jtag口,无法满足fpga里多应该的需求,故altera做了一个sld hub,用来选择不同的sld node。对于每个sld node,相当对自己拥有一个独立的jtag口(它看不见其它的sld node),故称为 virtual jtag )
     4) jtag_test.tcl为主机端做的下载应用,由tcl语言使用quartus_stp接口写成
     5)如果有software下的软件编译好,并产生hex文件,fpga工程产生的sof或者pof文件已经下载到fpga上,则直接双击dowload.cmd则可以把software下的hex文件下载到ram中

(2) software 下为keill c51的工程文件

(3) my_proj 为 dw8051 的主要工程
      该工程可直接在linux下的vcs环境下进行仿真,如果要在modelsim下仿真的话,估计需要改一下

Note:
        my_proj工程如果在linux下的vcs环境下仿真,估计也需要稍微改一下。
                my_proj/verif/test_top/ 下的 makefile 内容如下:

                  run: clean hex comp run
                  clean:
                  rm ./rom.bin -rf
                  hex:
                  ./hex_bin_51 /media/sf_share/dw8051/bin/dw8051.hex (I)
                  comp:
                  /root/tb_bin/vcs  -f ../tb_bin/rtl_file test_top.v (II)
                  run:
                  ./simv;
                  view:
                  verdi -f ../tb_bin/rtl_file test_top.v&

(I)把dw8051.hex编译成verilog能加载的rom.bin文件,hex_bin_51为一个由perl写成的转化程序,如果使用此makefile加入你自己的hex文件路径

(II)使用vcs编译整个工程,不过我使用的是改过的vcs脚本,/root/tb_bin/vcs  内容如下:
#!/usr/bin/perl
if(@ARGV>0){
  system "vcs  @ARGV -sverilog +v2k -ntb_opts rvm -l ./vcom.log  -P /usr/verdi.2009.4/Novas-200904-basic/share/PLI/vcs2006.06/LINUX/novas.tab  /usr/verdi.2009.4/Novas-200904-basic/share/PLI/vcs2006.06/LINUX/pli.a"
}
如果直接使用此makefile,必须加入此vcs脚本到/root/tb_bin/下

另外,/root/my_proj/verif/tb_bin 下有一个文件 .tcshrc.usr 中有一些快捷命令,如果需要使用,则需要在shell配置环境中source一下,如果我使用的c-shell(如果为shell bash(默认此bash),source代码不同,估计.tcshrc.usr 中的alias格式也不一样吧) , 故我的 ~/.tcshrc 文件中加入
if(-e ~/my_proj/verif/tb_bin/.tcshrc.usr) then
  source ~/my_proj/verif/tb_bin/.tcshrc.usr
endif

且需要设置环境变量:
setenv PROJ_PATH ~/my_proj

附件如下:
DW8051.part1.rar (14.31 MB, 下载次数: 2304 )
DW8051.part2.rar (12.96 MB, 下载次数: 2317 )
发表于 2012-11-25 01:19:14 | 显示全部楼层
Altera如果没有改变逻辑,只是改变了ROM中HEX的内容,没有必要重新编译整个工程,只要先Processing->Update memory initial file,再prlcessing->start->assembler即可。
当然,LZ的做法更加nice,Great!
发表于 2012-11-25 11:16:54 | 显示全部楼层
xiexieixieixieixieixie
 楼主| 发表于 2012-11-25 22:52:37 | 显示全部楼层
回复 3# vongy
这还真不知道呀,还是你这个方法简单,学习了
发表于 2012-11-30 21:06:57 | 显示全部楼层
学习了,谢谢分享!~
发表于 2012-12-28 09:34:57 | 显示全部楼层
顶起来
发表于 2012-12-28 10:58:24 | 显示全部楼层
thanks!!!!
发表于 2013-1-23 14:22:50 | 显示全部楼层
謝謝分享
发表于 2013-1-23 18:05:00 | 显示全部楼层
支持一下
发表于 2013-1-25 22:22:21 | 显示全部楼层
下来看看是否有source code;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-5 12:49 , Processed in 0.041127 second(s), 9 queries , Gzip On, Redis On.

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