【发布时间】:2018-04-07 17:00:56
【问题描述】:
我目前正在用 VHDL 实现 MIPS 处理器。系统组件(将 ALU、寄存器文件、控制单元等粘合在一起)具有以下实体描述:
entity system is
port (
reset : in std_logic;
sys_clk : in std_logic;
instruction : in std_logic_vector(15 downto 0);
sys_mem_dump : in std_logic := '0'
);
end system;
在这个系统的架构部分,我试图创建指令变量的“子变量”,对应于使用的操作码和寄存器。
architecture Behavioral of system is
instruction_opcode : std_logic_vector(3 downto 0) := instruction(15 downto 12);
instruction_rd : std_logic_vector(3 downto 0) := instruction(11 downto 8); -- destination register
instruction_rs : std_logic_vector(3 downto 0) := instruction(7 downto 4); -- source register
instruction_rt : std_logic_vector(3 downto 0) := instruction(3 downto 0); -- target register
-- a bunch of signals
begin
-- a bunch of port maps
end Behavioral
我尝试过signal、variable、shared_variable 和constant,但是当我将这些变量之一映射到它时,这些导致寄存器文件的地址没有被初始化。我也尝试将这些变量放在系统实体端口中,但这也不起作用。我也不想将系统实体端口中的instruction变量拆分成这四个变量。
【问题讨论】:
-
请阅读您教授的课程资料或书籍或任何其他有关 VHDL 的资源,因为缺少基础知识。
-
@Paebbels 在 VHDL 中根本不可能做到这一点吗?我查看了 synario 手册和其他一些网站,没有一个数据对象类型与这个用例匹配。
标签: vhdl