|
楼主 |
发表于 2014-1-22 10:24:53
|
显示全部楼层
MC8051 和 stdlib.vhd 文件对应的是
mc8051_p.vhd。因为要裁减MC8051,只执行一两个命令就可以了,该文件需要大量裁减。
先初步裁减一下
首先,
***************************************************************
--Description: Collection of constants, types, and components.
-------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
package mc8051_p is
*********************************************************
熟悉的开场,
继续,
删除
-----------------------------------------------------------------------------
-- Set data width of mc8051_alu (no other than 8 supported at the moment!)
-- Default: 8
constant C_DWIDTH : integer := 8;
-----------------------------------------------------------------------------
类似这样的语句,目前不需要alu,命令只有ori 或者 move d #data。所以乘法等都不需要。
***************************************
--暂时只保留
constant MOV_D_DATA : std_logic_vector(7 downto 0) := "01110101";
constant ORL_D_DATA : std_logic_vector(7 downto 0) := "01000011";
*******************************************
到时再根据难度,选择简单易懂的指令,
先留意一下,等到fsm mem时再理解。
继续,
**************************
type t_state is (STARTUP,
FETCH,
EXEC1,
EXEC2,
EXEC3);
*************************
不需要裁减,
继续,
这一个指令集合需要裁减,只用1、2个。
************************
type t_instr_category is (IC_MOV_D_DATA, IC_ORL_D_DATA);
**************************************************
然后,很多模块,大多数不会用到,只保留
************************************
component control_fsm
port ( state_i : in t_state; -- actual state
。。。。。
end component;
component control_mem
port (pc_o : out std_logic_vector(15 downto 0);
。。。。。
end component;
************************************
模块的输入和输出好多,因为只运行一个指令,肯定有很多用不到,可以大量裁减。只是从字面上无法辨认出哪些输入和输出不会用到,还需要结合fsm和 mem具体内容来裁减。
这里是裁减的重点。
同样,还有
****************************
component mc8051_control
port (pc_o : out std_logic_vector(15 downto 0);
。。。。。
end component;
component mc8051_core
port (clk : in std_logic;
。。。。。
end component;
component mc8051_top
port (clk : in std_logic;
。。。。。
end component;
*********************************
上面三个模块的裁减同样依赖于fsm和mem的裁减结果。
最后,ROM模块
********************************
-----------------------------------------------------------------------------
-- START: Component declarations for simulation models
-----------------------------------------------------------------------------
component mc8051_rom
port (clk : in std_logic;
reset : in std_logic;
rom_data_o : out std_logic_vector(7 downto 0);
rom_adr_i : in std_logic_vector(15 downto 0));
end component;
-----------------------------------------------------------------------------
-- END: Component declarations for simulation models
-----------------------------------------------------------------------------
end mc8051_p;
****************************************
该文件还剩下component无法裁减,需要确定fsm和mem模块的输入输出后,才可以进行裁减。 |
|