这几天一直在分析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
2.1 其中msim目录可以用于