Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: VHDL описание сумматора с Carry_in
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Very_hard
Нужно описать сумматор с переносом старшего разряда результата в carry in. Комбинационный.
Проблема такая: описание сумматора выглядит следующим образом:

Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

.........

signal sum: std_logic_vector(0 to 16):=(others=>'0');
signal A, B: std_logic_vector(0 to 15):=(others=>'0');

........

sum <= (('0' & A) + ('0' & B)) + sum(0);


Это понимается синтезатором(ISE7.1), находится и синтезируется соответствующий "adder carry in". Но при behavioral моделировании состояние выхода всегда неопределенно, что вобщем-то понятно. Как это можно обойти?
ALeksey_ZX
Попробуйте почитать XST.pdf и написать так:


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

entity adders_4 is
port(

A,B : in std_logic_vector(15 downto 0);
CI : in std_logic;
SUM : out std_logic_vector(15 downto 0);
CO : out std_logic);
end adders_4;

architecture archi of adders_4 is
signal tmp: std_logic_vector(16 downto 0);
begin

tmp <= conv_std_logic_vector((conv_integer(A) + conv_integer( B ) + conv_integer(CI)),17);
SUM <= tmp(15 downto 0);
CO <= tmp(16);

end archi;


Может поможет smile.gif
Very_hard
Большое спасибо! smile.gif Действительно помогло.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.