开源MC8051 IP核在Modelsim下的调试仿真

     这几天一直在分析MC8051的源码,可自己在CPU设计方面的知识很弱,看了半天都不知道所以然。
如下面的指令译码:
          when IC_SETB_BIT =>           -- SETB bit
            if state=FETCH then
              s_pc_inc_en <= "0001";    -- increment program-counter
              s_nextstate <= EXEC1;
            elsif state=EXEC1 then
              s_adr_mux <= "1000";      -- byte adress
              s_bdata_mux <= "1011";    -- bdata = 1
              s_regs_wr_en <= "110";    -- write one bit
              s_pc_inc_en <= "0001";    -- increment program-counter
              s_nextstate <= FETCH;
            end if;
这些s_adr_mux,s_pc_inc_en是如何进行系统事件控制的?头大。Oregano公司的MC8051 IP包提供了非常完善的调试文档,所以就用就想能和C程序一样实际调试一下就好了。另外Mentor公司的Modelsim是非常好的调试工具,只是自己以前对它了解很少,调试一下发现挺棒的,而且对Vhdl,Verilog hdl,SystemC程序都可以调试仿真。下面是我对MC8051IP的仿真步骤:
1 下载MC8051 IP核
 Oregano公司的MC8051 IP核遵循LGPL协议,可以免费下载使用。
 下载地址为:http://www.oregano.at/ip/ip12.htm
2 解压mc8051_design.zip开源MC8051 IP核在Modelsim下的调试仿真_第1张图片

2.1 其中msim目录可以用于modelsim下的仿真,打开下面的readme文件:

hex2dual.c ......... C source code for a program to convert a Intel hex file into a text file

                     containing binary entries, 8 bit per line.

keil.dua ........... Converted output file from KEIL simulator containing binary data, 8 bit

                     per line.

keil.hex ........... Output file from KEIL simulator after executing the tc1.asm program.

                     (Caution: The KEIL software adds a line at the beginning of this file, which

                     is not needed - it has to be deleted manually before conversion with hex2dual

                     to have identical files.)

mc8051_compile.do .. Compile script for modelsim.

mc8051_rom.dua ..... Textfile containing the ROM contents for VHDL code simulation.

mc8051_sim.do ...... Simulation script for modelsim.

mc8051_wave.do ..... Wave file for modelsim.

readme.txt ......... This file. Descriptions to ease verification.

regs.log ........... Ouput file after executing the write2gfile.do Tcl script in modelsim.

tc1.asm ............ 8051 assembler program.

tc1.dua ............ Converted 8051 program (can be copied to mc8051_rom.dua).

tc1.hex ............ 8051 program in Intel hex format.

write2file.do ...... Tcl script to write signal values to a text file.

2.2 doc部分有较详细的文档说明,可以作为实际设计过程的参考。

3 开始仿真

3.1打开modelsim,选择File>Change directory…,选择msim目录,如:F:/MC8051/mc8051_design/msim开源MC8051 IP核在Modelsim下的调试仿真_第2张图片

3.2 创建work

选择FileàNewàLibrary…,输入work,点击[ok],确认选择。开源MC8051 IP核在Modelsim下的调试仿真_第3张图片

3.3 TransScript中输入:do mc8051_compile.do编译VHDL文件。

3.4TransScript中输入:do mc8051_sim.do开始仿真调试。开源MC8051 IP核在Modelsim下的调试仿真_第4张图片

调试和gdb调试基本相似,输入step,单步调试。另外可以点击workspace中的file选项调出需要设置断点的文件,设置完毕后调试。

如图,我在control_fsm_rtl.vhd设置断点

   开源MC8051 IP核在Modelsim下的调试仿真_第5张图片
然后输入run –continue,系统提示
# Break at ../vhdl/control_fsm_rtl.vhd line 334,下面是断点,情况,可以在此处用step单步调试。开源MC8051 IP核在Modelsim下的调试仿真_第6张图片 
可以和VC一样跟踪调试。
3.5在Wave图表中查看MC8051时序图,如下 开源MC8051 IP核在Modelsim下的调试仿真_第7张图片

你可能感兴趣的:(file,hex,tcl,output,signal,集成电路及CPU设计)