[an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ux 20 октября 2004 г. 15:27
В ответ на: Значит я перепутал сложение с умножением. (+) отправлено Dr.Alex 20 октября 2004 г. 14:58

Нарисуйте, такой примитивный децимирующий CIC фильтр, c такой же параметризацией.


TITLE "p_rec_cic"; -- written by Petrov A. N. ux@yandex.ru


INCLUDE "lpm_ff.inc";
INCLUDE "lpm_add_sub.inc";
INCLUDE "altaccumulate.inc";


PARAMETERS
(
width_in = 3,
order = 2,
k_dec = 2 -- max coeff. of decimation
);

CONSTANT width_comb = CEIL(order*LOG2(k_dec)) + width_in;
CONSTANT width_sub = CEIL(order*LOG2(k_dec)) + width_in;
CONSTANT width_i = CEIL(order*LOG2(k_dec)) + width_in;
CONSTANT width_out = CEIL(order*LOG2(k_dec)) + width_in;

SUBDESIGN p_rec_cic
(
clk : INPUT;
enable : INPUT;
reset : INPUT; -- active HIGH


data_in[width_in-1..0] : INPUT;

ena_comb : INPUT;

data_out[width_out-1..0] : OUTPUT;

)

VARIABLE

comb[order-1..0] : lpm_ff
WITH
(
LPM_WIDTH = width_comb,
LPM_FFTYPE = "DFF"
);

sub_comb[order-1..0] : lpm_add_sub
WITH
(
LPM_WIDTH = width_sub,
LPM_REPRESENTATION = "SIGNED",
LPM_DIRECTION = "SUB",
ONE_INPUT_IS_CONSTANT = "YES",
LPM_PIPELINE = 1,
MAXIMIZE_SPEED = 0,
USE_WYS = "OFF"
);

integrator[order-1..0] : altaccumulate
WITH
(
WIDTH_IN = width_i,
WIDTH_OUT = width_i,
LPM_REPRESENTATION = "SIGNED",
EXTRA_LATENCY = 0,
USE_WYS = "ON"
);


BEGIN

comb[].clock = clk;
sub_comb[].clock = clk;
integrator[].clock = clk;

IF USED(enable) GENERATE

integrator[].clken = enable;

END GENERATE;


IF USED(reset) GENERATE

comb[].aclr = reset;
sub_comb[].aclr = reset;
integrator[].aclr = reset;

END GENERATE;

comb[].enable = ena_comb;
sub_comb[].clken = ena_comb;

integrator[0].data[width_in-1..0] = data_in[];
integrator[0].data[width_i-1..width_in] = data_in[width_in-1];

comb[0].data[] = integrator[order-1].result[];

sub_comb[0].dataa[] = integrator[order-1].result[];
sub_comb[0].datab[] = comb[0].q[];


FOR i IN 1 TO order-1 GENERATE

comb[i].data[] = sub_comb[i-1].result[];

sub_comb[i].dataa[] = sub_comb[i-1].result[];
sub_comb[i].datab[] = comb[i].q[];


integrator[i].data[] = integrator[i-1].result[];

END GENERATE;

data_out[] = sub_comb[order-1].result[];


END;

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru