Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Программируемые логические схемы и их применение»

Перекинул проект в AHDL, смотрите

Отправлено wukrly 18 января 2008 г. 20:41
В ответ на: Код в студию. Квартус просто так ничего не выбрасывает, от чего зависят выходные сигналы. отправлено SM 18 января 2008 г. 02:04

% Заграждающий фильтр канала Y второго порядка
содержит:
- romF (rom_N1) - два ПЗУ на 3 ячейки с константами фильтра
- IN - входной регистр для промежуточного хранения данных
- memF (altsyncram1) - память фильтра
- multA, multB (altmult_add4) - два умножителя 18*18 для умножения чисел
- sumA, sumB (lpm_add_sub4) - два 32 р сумматора с соответствующими регистрами для выполнения операции накопления
- SA - накопитель обратной связи для вычисления переменной Z0
- SB - выходной накопитель для вычисления результата
- OUT - выходной регистр
- caF (CA_FN) - схема управления фильтром
- TESTC - тестовый выход, контролирующий результаты Z
- TESTA - TESTG - тестовые выходы контроля сигналов управления памяти
%
% одна итерация работы фильтра выполняется минимум за 4 такта. Схема управления спроектирована таким образом, чтобы данные можно было подавать с любым темпом, 4 такта или реже %
% при правильной работе фильтра при передаче "перепада" на выходе формируется перепад с колебаниями на вершине.Примерно через 200 итераций колебания затухают %
INCLUDE "rom_N1.inc";
INCLUDE "altsyncram1.inc";
INCLUDE "altmult_add4.inc";
INCLUDE "lpm_add_sub4.inc";
INCLUDE "ca_FN.inc";

SUBDESIGN filterYN
(
DIN[13..0], CLK, WR_IN : INPUT;
OUT[13..0], WR_OUT : OUTPUT;
TESTC[17..0], testA, testB, testD, testE, testF, testG : OUTPUT;
)
VARIABLE
IN[13..0], OUT[13..0] : dffe;
wr1, TESTC[17..0], testA, testB, testD, testE, testF, testG : dff;
memF :altsyncram1;
romF :rom_N1;
multA, multB :altmult_add4;
sumA, sumB :lpm_add_sub4;
SA[31..0], SB[31..0] : dffeas;
caF :ca_FN;

BEGIN
% входной регистр %
IN[].clk = CLK;
IN[].ena = WR_IN;
IN[].d = DIN[];
wr1.clk = CLK;
wr1.d = WR_IN;
caF.clk = CLK;
caF.wr_in = wr1;

% объявления для ПЗУ %
romF.clk = CLK;
romF.CTC[] = caF.ConstA[];
romF.CTD[] = caF.ConstB[];
multA.datab_0[] = romF.constA[];
multB.datab_0[] = romF.constB[];

% объявления для памяти %
memF.clock = CLK;
memF.data_a[] = SA[];
memF.address_a[] = caF.ADRA[];
memF.wren_a = caF.WRA;
memF.data_b[15..0] = GND;
memF.data_b[29..16] = IN[13..0];
memF.data_b[30] = IN[13];
memF.data_b[31] = IN[13];
memF.address_b[] = caF.ADRB[];
memF.wren_b = caF.WRB;
multA.dataa_0[17..0] = memF.q_a[30..13];
multB.dataa_0[17..0] = memF.q_b[30..13];

% объявления для умножителей %
multA.aclr0 = gnd;
multA.clock0 = CLK;
% multA.dataa[] = константа из ПЗУ
multA.datab[] = числа из памяти, канал А %
sumA.dataa[31..0] = multA.result[34..3];

multB.aclr0 = gnd;
multB.clock0 = CLK;
% multB.dataa[] = константа из ПЗУ
multB.datab[] = числа из памяти, канал B %
sumB.dataa[31..0] = multB.result[34..3];

% объявления для накапливающего сумматора Z %
% sumA.dataa[31..0] = числа с умножителя А %
sumA.datab[] = SA[];
sumA.cin = multA.result[2];
SA[].d = sumA.result[];
SA[].clk = CLK;
SA[].ena = VCC;
SA[].sclr = caF.CLRA;
SA[].asdata = GND;
SA[].aload = GND;
SA[].sload = GND;

% объявления для выходного накапливающего сумматора %
% sumB.dataa[31..0] = числа с умножителя B %
sumB.datab[] = SB[];
sumB.cin = multB.result[2];
SB[].d = sumB.result[];
SB[].clk = CLK;
SB[].ena = VCC;
SB[].sclr = caF.CLRB;
SB[].asdata = GND;
SB[].aload = GND;
SB[].sload = GND;

% объявления для выходов %
TESTC[].clk = CLK;
TESTC[17..0].d = memF.q_a[31..14];
OUT[].clk = CLK;
OUT[].ena = caF.wr_out;
OUT[13..0].d = SB[29..16];
WR_OUT = caF.wr_out;
testA.clk = CLK;
testA.d = caF.ADRA[0];
testB.clk = CLK;
testB.d = caF.ADRA[1];
testD.clk = CLK;
testD.d = caF.WRA;
testE.clk = CLK;
testE.d = caF.ADRB[0];
testF.clk = CLK;
testF.d = caF.ADRB[1];
testG.clk = CLK;
testG.d = caF.WRB;
END;
После трансляции SB обрезается на 2 разряда сверху. Если будете транслировать, пришлю все остальное. Исходники в сумме занимают порядка 30 кбайт


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 56:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru