模拟技术学习
直播中

贾飞世

7年用户 1770经验值
私信 关注
[问答]

dw8051是怎样移植到altera的EP2C5T144C8N上去的?

dw8051是怎样移植到altera的EP2C5T144C8N上去的?有哪些步骤流程要去操作?移植过程中有哪些中注意事项?

回帖(1)

贾桂林

2021-6-18 10:24:02
  此工程是把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
举报

更多回帖

发帖
×
20
完善资料,
赚取积分