Vhdl比较标准逻辑向量 IEEE库; 使用IEEE.std_logic_1164.all; 使用ieee.std_logic_unsigned.all; 使用ieee.numeric_std.all; 实体转换器是 端口(符号符号:标准逻辑向量(3到0); 两个S_com:输出标准逻辑向量(3到0); 结束; 转换器的体系结构 开始 如果to_integer(sign(sign_mag))>0,则 twos_com

Vhdl比较标准逻辑向量 IEEE库; 使用IEEE.std_logic_1164.all; 使用ieee.std_logic_unsigned.all; 使用ieee.numeric_std.all; 实体转换器是 端口(符号符号:标准逻辑向量(3到0); 两个S_com:输出标准逻辑向量(3到0); 结束; 转换器的体系结构 开始 如果to_integer(sign(sign_mag))>0,则 twos_com,vhdl,Vhdl,也许这有帮助: ieee库; 使用ieee.std_logic_1164.all; 使用ieee.numeric_std.all; 实体转换器是 一般的( num_长度:整数:=4 ); 港口( 数字:在标准逻辑向量中((num长度-1)向下至0); 结果:输出标准逻辑向量((num_长度-1)到0); 端部转换器; 介绍了变频器的结构特点 信号温度:标准逻辑向量((num_长度-1)向下至0):=(其他=>“0”); 开始 结果是0 temp如注释中所述,if-then-else是一个顺序语

也许这有帮助:

ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体转换器是
一般的(
num_长度:整数:=4
); 
港口(
数字:在标准逻辑向量中((num长度-1)向下至0);
结果:输出标准逻辑向量((num_长度-1)到0);
端部转换器;
介绍了变频器的结构特点
信号温度:标准逻辑向量((num_长度-1)向下至0):=(其他=>“0”);
开始
结果是0

temp如注释中所述,if-then-else是一个顺序语句,必须位于进程(或函数或过程=子程序)内。因此,您缺少体系结构中的流程块

正如您所说的,如果符号mag(3)=“0”
,您只能比较MSB only
(请注意单引号,因为您正在比较std\u逻辑类型)。这样就不需要使用IEEE库中除
std_logic_1164
之外的其他软件包

library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;

entity converter is
port(sign_mag : in std_logic_vector(3 downto 0);
        twos_com : out std_logic_vector(3 downto 0));
end;

architecture converter_arch of converter is

begin
if to_integer(signed(sign_mag)) > 0 then
        twos_com <= sign_mag;
else
        twos_com<= "0000";
end if;
end converter_arch;


…或在没有进程的情况下,可以使用when--else结构分配信号,该结构具有条件信号分配,这是一个并发语句:

case sign_mag(3) is
  when '0' =>
    twos_com <= sign_mag;
  when others =>
    twos_com <= "0000";
end case;
twos_com'0');

If语句是顺序语句,可以出现在流程语句或子程序(过程、函数)中。两个简单的解决方法。将if语句放在进程语句中,或使用并发条件赋值语句(例如,
twos\u com 0 else“0000”;
),该语句将被细化为与if语句等效的进程。条件
有符号(sign\u mag)>0
在不使用软件包numeric\u std转换为整数的情况下应足够。此处不使用Synopsys软件包ieee.std\u logic\u的任何声明。
case sign_mag(3) is
  when '0' =>
    twos_com <= sign_mag;
  when others =>
    twos_com <= "0000";
end case;
twos_com <= sign_mag when sign_mag(3) = '0' else (others => '0');