我目前正在攻读电气工程学位,并设计了一个4位算术逻辑单元作为作业的一部分。
有人问我如何才能轻松地将其转换为8位算术逻辑单元。我现在的回答是我会修改所有的模块(add,sub,bux,or,xor LS,RS等)到8位1,以及ALU模块中FPGA板的开关号。
这是最简单的方法吗?或者我是否可以设计ALU来调用每个4位门两次,或者使用不同的名称第二次添加4位模块?
我觉得好像我已经用尽了我的课本和网络,这是令人沮丧的,因为信息必须在那里!
我正在使用Quartus II进行编程。
发布于 2016-03-17 23:23:19
实际答案取决于你实际拥有的算术逻辑单元和你选择的方法。你说你已经试图找到如何连接两个4位ALU;这里有一些帮助:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.defs_pkg.all;
entity cpu_alu is
port(
opA : in std_logic_vector(15 downto 0); -- operand A
opB : in std_logic_vector(15 downto 0); -- operand B
Op : in std_logic_vector(2 downto 0); -- operator
cIn : in std_logic; -- carry in
invA : in std_logic; -- invert A
result : out std_logic_vector(15 downto 0); -- result
cOut : out std_logic; -- carry out
overflow: out std_logic; -- overflow
zero : out std_logic
);
end entity cpu_alu;
architecture rtl1 of cpu_alu is
signal A: std_logic_vector(7 downto 0);
signal INTERNAL_CARRY: std_logic; -- the carry chain
signal zeroMSB: std_logic; -- because this ALU has a 'zero' output
signal zeroLSB: std_logic;
constant Top : integer := A'left;
begin
MSB : entity work.cpu_alu8
port map ( opA => opA(7 downto 0),
opB => opB(7 downto 0),
Op => Op,
CIn => CIn,
invA => inVa,
result => result(7 downto 0),
cout => INTERNAL_CARRY,
overflow => open,
zero => zeroMSB);
MSL : entity work.cpu_alu8
port map ( opA => opA(15 downto 8),
opB => opB(15 downto 8),
Op => Op,
CIn => INTERNAL_CARRY,
invA => inVa,
result => result(15 downto 8),
cout => cOut,
overflow => overflow,
zero => zeroLSB);
zero <= zeroMSB and zeroLSB;
end architecture rtl1; -- of cpu_alu图中显示了连接在一起的两个8位ALU,构成一个16位ALU。我之前已经准备了一个16位的ALU,所以我将它转换为一个8位的ALU,并实例化了两次,以生成原始的16位ALU (这样我就可以在它上运行相同的测试,以确保我做得正确*)。我相信你可以把它转换成2倍的4位算术逻辑单元。
8个LSB连接到第一个ALU;8个MSB连接到第二个ALU。要看到的关键是我如何将第一个算术逻辑单元的进位输出连接到第二个算术逻辑单元的进位输入。还要注意,我对LSB ALU的overflow输出不感兴趣。最后,我需要将每个脚本的zero输出组合在一起。
现在,当然,我不知道你的ALU实际上是做什么的。这个函数做的不多;它做的唯一的数学运算就是加法。(这是一个练习的答案,因此我不打算发布所有代码)。
*这是你应该一直做的事情。你提到了Quartus。Quartus不会模拟--它从合成开始。你应该总是在合成之前进行模拟:找到bug,找到它们的来源并修复它们要快得多。
https://stackoverflow.com/questions/36063113
复制相似问题