Потоковые и конвейерные реализации
При построении описания потоковой реализации можно использовать как параллельную форму представления, так и последовательную. В частности каждой вершине информационного графа задачи можно сопоставить Process, список чувствительности которого включает все входные сигналы.
Если использовать последовательную форму, то необходимо точно следовать порядку передачи данных в графе. Промежуточные данные декларируются как переменные(VARIABLES)
-- n - разрядность аргументов
-- x,y: std_logic_vector (n-1 DOWNTO 0) – сомножители,
-- Result: : std_logic_vector (2*n-1 DOWNTO 0) – произведение
-- x,y,n, result определены в декларации ENTITY
PROCESS(x,y)
TYPE sum_array IS ARRAY (n-1 DOWNTO 0 ) OF std_logic_vector (n DOWNTO 0);
VARIABLE z: sum_array ; -- матрица сумматоров схемы умножения;
-- дополнительный n-ый разряд передает бит переполнения при сложении
VARIABLE v: std_logic_vector (n+1 DOWNTO 0); -- временная копия значения z --предыдущего цикла;
-- не воспроизводится в аппаратуре, а в программе
-- упрощает доступ фрагментам двумерного массива
VARIABLE r: std_logic_vector (n-2 DOWNTO 0); -- младшие разряды результата
BEGIN
IF y(0)=’0’ THEN z(0):= conv_std_logic_vector(0,n);
ELSE z(0):= ‘0’ & x;
END IF;
FOR i IN 1 TO n-1 LOOP
V:=’0’ & z(i-1); r(i-1):=v(0);
IF y(i)=’1’ THEN
z(i):= v(n+1 DOWNTO 1) + (‘0’ & x);--«лишний» разряд сохраняет перенос
- при переполнении.
ELSE z(i):= v(n+1 DOWNTO 1);
END IF;
END LOOP;
Result<=z(n-1) & r;
END PROCESS
Конвейерные реализации предполагают фиксацию промежуточных результатов в регистрах, синхронизируемых общим тактирующим сигналом. Процессная форма потокового описания легко трансформируется в описание конвейерной реализации. Для этого программа преобразуется следующим образом:
1.Список чувствительности процесса включает сигнал синхронизации и не должен включать информационные сигналы. Кроме этого в тело процесса вводят условные операторы, разрешающие исполнение основных преобразований по фронту сигнала синхронизации (например,
IF clock=’1’and clock’event … THEN…).