function AddVectors (A:STD_LOGIC_VECTOR; B:STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is
variable CARRY : STD_LOGIC:='0';
variable SUM : STD_LOGIC:='0';
constant SIZE : integer:=A'length;
variable RESULT : STD_LOGIC_VECTOR(SIZE-1 downto 0);
begin
for i in A'reverse_range loop
SUM:=A(i) xor B(i) xor (CARRY);
CARRY:=(A(i) and B(i)) or ((A(i) or B(i)) and CARRY);
RESULT(i):=SUM;
end loop;
return RESULT;
end;
end MyPackage;
Пусть требуется синтезировать мультиплексор:
Процесс синтеза предполагает трансляцию проекта с учетом аппаратных возможностей реального кристалла (RTL) и оптимизацию схемы. Проект должен учитывать возможности трансляции.
Регистр-защелка с потенциальным входом синхронизации создает режим прозрачности при gate=’1’:
Триггер с динамическим входом синхронизации. Срабатывает при изменении clk и clk='1' (по переднему фронту clk):
• Присвоение q<=b теперь не является зависимым от фронта сигнала Clk. Теперь модель описывает схему из двух триггеров!
• Присвоение значения переменной внутри выражения IF-THEN, которое проверяет условие тактирования, не приводит к добавлению триггера.
• Присвоение значения переменной является элементом временного хранения информации и не влияет на аппаратную реализацию.
• Присвоение значения переменной может применяться в составе выражений для немедленной установки новой величины.
• Значение переменной может быть использовано для назначения сигнала.
Встроенные типы данных:
- BIT
- STD_LOGIC
- INTEGER
К типам данных пользователя относится перечислимый тип (Enumerated Data Type):
TYPE <your_data_type> IS (items or values for your data type separated by commas)
• Состояния автомата должны быть описаны как перечислимый тип:
TYPE state_type IS (idle, tapl, tap2, tap3, tap4);
• Объект, который хранит состояние автомата, должен быть сигналом объявленного выше типа:
SIGNAL filter: state_type;
• Для определения следующего состояния и условия перехода можно использовать выражение CASE внутри выражения IF-THEN. Последнее должно проверять условие тактирования автомата.
• Следует помнить, что автоматы имплементируются с использованием регистров.
• Для определения выходов автомата можно использовать условные оператоы или операторы выбора варианта либо использовать второй оператор Case для определения выходов автомата.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.