[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Вот взял из книжки пример програмки табличного умножения 4х4.
После компиляции и симуляции смотрю осцилограммы SCF файла.
Там конечно же нет никакого умножения, хотя в книжке А.П. Антонова нарисованы красивые осцилограмы - когда на входе 2 и 3 на выходе 6. Я вообще не понимаю где в программе указано, что 2х3=6, 3х4=12, и т.д. Может есть специалисты.
CONSTANT size = 8;
CONSTANT hi_bit =4;
%FUNCTION lpm_mult (dataa[(LPM_WIDTHA-1)..0], datab[(LPM_WIDTHB-1)..0], sum[(LPM_WIDTHS-1)..0], aclr, clock)
WITH (LPM_WIDTHA, LPM_WIDTHB, LPM_WIDTHP, LPM_WIDTHS, LPM_REPRESENTATION, LPM_PIPELINE, LATENCY, INPUT_A_IS_CONSTANT, INPUT_B_IS_CONSTANT)
RETURNS (result[LPM_WIDTHP-1..0]);%
INCLUDE "lpm_mult.inc";
SUBDESIGN mult4x4
(a[hi_bit..1],b[hi_bit..1] : INPUT;
result[size..1] : OUTPUT;
)
VARIABLE
mult : LPM_MULT WITH( LPM_WIDTHA=hi_bit,
LPM_WIDTHB=hi_bit,
LPM_WIDTHP=size,
LPM_WIDTHS=size);
BEGIN
mult.dataa[] = a[];
mult.datab[] = b[];
result[] = MULT.result[];
% Optional IN-LINE referance
result[] = LPM_MULT(.dataa[]=a[],.datab[]=b[]) with
(LPM_WIDTHA=hi_bit, LPM_WIDTHB=hi_bit, LPM_WIDTHP=size, LPM_WIDTHS=size);%
END;
E-mail: info@telesys.ru