Я пытаюсь создать 32-битный двоичный серийный сумматор в VHDL, используя структурное описание. Сумматор должен использовать полный сумматор и d-защелку. Как я вижу это:Двоичный серийный сумматор - VHDL
Полный сумматор:
architecture Behavioral of FullAdder is
begin
s <= (x xor y) xor cin;
cout <= (x and y) or (y and cin) or (x and cin);
end Behavioral;
D-защелкой:
architecture Behavioral of dLatch is
begin
state: process(clk)
begin
if(clk'event and clk = '1') then
q <= d;
end if;
end process;
end Behavioral;
Последовательный сумматор:
add: process (clk)
variable count : integer range 0 to 31;
variable aux : STD_LOGIC;
variable aux2 : STD_LOGIC;
begin
if(clk'event and clk = '1') then
fa: FullAdder port map(x(count), y(count), aux, s(count), aux2);
dl: dLatch port map(clock, aux2, aux);
count := count + 1;
end if;
end process;
Однако, как представляется, не Работа. Также был бы самый простой способ конвейерного последовательного сумматора?
Немного трудно проверить без деклараций сущности, поскольку вы использовали позиционное отображение сигналов в порты. Я рекомендую использовать именованное сопоставление портов (pinname => signal_name). Вы создали симуляцию? Если этого не сделать. Если у вас есть, используйте его, чтобы объяснить нам, что означает «это не работает» означает - что вы ожидали увидеть? Что вы на самом деле видели? –