library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use ieee.numeric_std.all;
- лицо часть содержит R для вывода регистраVHDL - Как добавить 1 в STD_LOGIC_VECTOR?
entity register_16 is
port( input: in std_logic_vector(15 downto 0);
ld, inc, clk, clr: in std_logic;
R: buffer std_logic_vector(15 downto 0));
end register_16 ;
- это должен параллельный процесс
architecture behavioral of register_16 is
begin
reg: process (input, ld, clk, clr)
variable R_temp : std_logic_vector(15 downto 0);
begin
if (clr='1') then
R_temp := b"0000000000000000";
elsif (clk'event and clk='1') then
if (ld='1') then
R_temp := input;
end if;
end if;
R <= R_temp;
end process reg;
--my ошибку в этом шаге
inc_R: process (inc)
begin
R <= R+'1';
end process inc_R;
end behavioral ;
- Основной процесс (reg) работает правильно - но другой процесс имеет erro r путем добавления 1.
От # 6, вместо этого используйте целое число. Лучшая альтернатива часто используется 'unsigned' из' ieee.numeric_std'. Это позволяет вам хранить семантику std_logic и также использовать большие значения, такие как 'unsigned (127 downto 0)', которые вы не можете сделать с целыми числами. – wjl
@wjl Я имел в виду целое число 1, а не R. OP пытался добавить std_logic_vector и std_logic, что недопустимо. Учитывая 5., можно добавить целое число от 1 до R. – zennehoy
Я согласен, что имеет смысл! – wjl