Components 端口映射时如何使用条件赋值
我试图创建一个非常简单的计算器,使用加法器和减法器作为组件。我希望结果显示在七段显示器上。问题是我不知道如何使用add_sub选择加法或减法Components 端口映射时如何使用条件赋值,components,vhdl,Components,Vhdl,我试图创建一个非常简单的计算器,使用加法器和减法器作为组件。我希望结果显示在七段显示器上。问题是我不知道如何使用add_sub选择加法或减法 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY CONVERTOR IS PORT ( A,B :IN BIT; CIN,ADD_SUB :IN BIT; cout,carryborrow
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY CONVERTOR IS
PORT (
A,B :IN BIT;
CIN,ADD_SUB :IN BIT;
cout,carryborrow :OUT BIT
);
END CONVERTOR;
ARCHITECTURE CONVERTOR_ARCH OF CONVERTOR IS
COMPONENT SUBTRACTOR_ASSIGNMENT IS
PORT (
A1,B1 :IN STD_LOGIC;
CIN1 :IN STD_LOGIC;
diff1,borrow1 :OUT STD_LOGIC
);
END COMPONENT;
COMPONENT ADDER_ASSIGNMENT IS
PORT (
A2,B2 :IN STD_LOGIC;
CIN2 :IN STD_LOGIC;
sum_2,cout2 :OUT STD_LOGIC
);
END COMPONENT;
SIGNAL E,F,G,H,P,Q,R,S: STD_LOGIC;
BEGIN
E <= A WHEN add_sub = '1' ELSE '0';
F <= B WHEN add_sub = '1' ELSE '0';
G <= CIN WHEN add_sub = '1' ELSE '0';
H <= A WHEN add_sub = '0' ELSE '0';
I <= B WHEN add_sub = '0' ELSE '0';
J <= CIN WHEN add_sub = '0' ELSE '0';
AD1: SUBTRACTOR_ASSIGNMENT PORT MAP(E,F,G,cout,carryborrow);
AD2: SUBTRACTOR_ASSIGNMENT PORT MAP(E,F,G,cout,carryborrow);
AD3: SUBTRACTOR_ASSIGNMENT PORT MAP(E,F,G,cout,carryborrow);
AD4: SUBTRACTOR_ASSIGNMENT PORT MAP(E,F,G,cout,carryborrow);
SB1: ADDER_ASSIGNMENT PORT MAP(H,I,J,cout,carryborrow);
SB1: ADDER_ASSIGNMENT PORT MAP(H,I,J,cout,carryborrow);
SB1: ADDER_ASSIGNMENT PORT MAP(H,I,J,cout,carryborrow);
SB1: ADDER_ASSIGNMENT PORT MAP(H,I,J,cout,carryborrow);
END CONVERTOR_ARCH;
ieee库;
使用ieee.std_logic_1164.all;
实体转换器是
港口(
A、 B:比特;
CIN,在位中添加_SUB:;
库特,卡利波罗:出了一点
);
端部转换器;
转换器的架构是
分量减法器_赋值为
港口(
A1,B1:标准逻辑中;
CIN1:标准逻辑中;
diff1,借用1:输出标准逻辑
);
端部元件;
元件加法器_赋值为
港口(
A2,B2:标准逻辑中;
CIN2:标准逻辑中;
求和2,cout2:输出标准逻辑
);
端部元件;
信号E、F、G、H、P、Q、R、S:STD_逻辑;
开始
你画了硬件的图片吗?加法器和减法器的输出需要多路复用器,但可以将A、B、CIN连接到加法器和减法器
一定要注意你的类型。如果您使用的是std_ulogic,则在任何地方都使用它,而不是键入bit。您能告诉我们您收到的错误消息或输出吗?根据您所说的,看起来您正在尝试在端口中使用“ADD_SUB”在加法和减法之间切换
同样值得一提的是:你希望你的设计被计时吗?现在,看起来你的端口没有时钟。如果要同步更新显示,则需要使用以下方法添加时钟:
if (rising_edge(my_clock)) then
-- make the magic happen
end if;