VHDL подписанные значения - PullRequest
       6

VHDL подписанные значения

0 голосов
/ 04 ноября 2018

Я только начал модуль VHDL в университете, и мой лектор не очень хорошо объясняет. Как использовать / объявить подписанные значения в VHDL?

Это основной формат кода, которому меня учили, и в настоящее время я программирую 2-битный вычитатель. Информация на других сайтах довольно запутанная.

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_arith.all;

entity TwoBitSubtractor is port(
    x,y     :in integer range 0 to 3;
    result  :out integer range 0 to 3);
end TwoBitSubtractor;

architecture gates of TwoBitSubtractor is
begin
    result<= x - y;
end gates;

1 Ответ

0 голосов
/ 04 ноября 2018

Вы должны использовать тип signed для указания значений со знаком. Целое число также можно использовать для объявления значений более понятным для человека способом, но с этим у вас нет определений на уровне битов, что, на мой взгляд, нежелательно в VHDL. Например, вы игнорируете количество битов, используемых для любого сигнала с integer, что может быть полезно для языка высокого уровня, но не слишком полезно для VHDL.

library ieee;
use ieee.numeric_std.all;

entity TwoBitSubtractor is port(
    x      : in signed(2 downto 0);
    y      : in signed(2 downto 0);
    result : out signed(2 downto 0));
end TwoBitSubtractor;

architecture gates of TwoBitSubtractor is
begin
    result <= x - y;
end gates;

Посмотрите, как они объявлены в порту объекта. Более подробную информацию о подписанных / неподписанных, пожалуйста, проверьте здесь

Также работает онлайн-симуляция TwoBitSubtractor с testbench, отметьте здесь

...