Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CIC
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Георгий 2
Собственно стоит задача создать децимирующий CIC фильтр.
Сам CIC я вроде как написал опираясь на книги по ЦОС. Но это CIC без дециматора. То есть интегратор и гребенка
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity CIC is
port
    (clk        : in     std_logic;
    data_in    : in     std_logic_vector (15 downto 0);
    data_out    : out std_logic_vector (15 downto 0);
    clk_p        : out std_logic
                        );
    
end CIC;

architecture Behavioral of CIC is
signal shift1, shift2, shift3, shift4, shift5, shift6, shift7, shift8:    std_logic_vector (15 downto 0);
signal summ:    std_logic_vector (20 downto 0); -- сигнал на выходе фильтра


begin
process (clk)

begin
if (CLK'event and CLK='1') then
shift1 <= data_in;
shift2 <= shift1;
shift3 <= shift2;
shift4 <= shift3;
shift5 <= shift4;
shift6 <= shift5;
shift7 <= shift6;
shift8 <= shift7;

end if;
end process;

process (clk)
begin
if (CLK'event and CLK='1') then
summ <= signed(shift8)-signed(shift1)+signed(summ);
end if;
end process;

data_out <= summ(20 downto 5); -- уменьшаем разрядность для того чтобы выходной сигнал был 16ти разрядным(мне необходим выход 16 разрядов
clk_p <= clk;
end Behavioral;


Я понимаю что есть оптимальный способ, поставить дециматор до гребенки, но для начала нало попробовать этот способ и поставить дециматор после того как сигнал пройдет через фильтр. Прочитал кучу статей про CIC, вроде понятно про сам CIC.
Не ясно одно: а именно как реализовать дециматор программно на VHDL.
Может вопрос глупый слишком, по идее ответ должен быть очень простой, но мне не ясно. Поиск по форуму и google особенно ничем не помог. Может я плохо искал.
ЗЫ надеюсь что все же лыжи не едут...
MKS
Цитата(Георгий 2 @ Oct 14 2010, 13:12) *
....
Не ясно одно: а именно как реализовать дециматор программно на VHDL.
....

Если я правильно понял вопрос, то просто пропускать на выход каждый N-ый отсчёт.
P.S. На VHDL всё-таки это аппаратная реализация wink.gif
Георгий 2
Цитата(MKS @ Oct 14 2010, 17:24) *
Если я правильно понял вопрос, то просто пропускать на выход каждый N-ый отсчёт.
P.S. На VHDL всё-таки это аппаратная реализация wink.gif


согласен некореектно выразился, просто не пойму как это написать на VHDL
MKS
Вам нужен сигнал который один раз за N тактов будет вскакивать в 1. Этим сигналом захватывайте данные с выхода вашего фильтра. Реализуется это на счётчике с модулем счёта N. Как это описать на VHDL попробуйте разобраться сами, это не так уж и сложно smile.gif
Георгий 2
на счетчике реализовал, пробую проверять все это дело.
интересно нет ли какой-нибудь функции или блока, который позволяет это сделать иным способом
Maverick
Цитата(Георгий 2 @ Oct 14 2010, 13:49) *
согласен некореектно выразился, просто не пойму как это написать на VHDL

как пример во вложении.
PS Можно оптимизировать через цикл - чтобы уменьшить количество строк кода.
Георгий 2
Цитата(Maverick @ Oct 14 2010, 18:13) *
как пример во вложении.
PS Можно оптимизировать через цикл.


там обычный ких-фильтр, каким образом мне понять про децимацию? не улавливаю вашу мысль...
Maverick
Цитата(Георгий 2 @ Oct 14 2010, 14:19) *
там обычный ких-фильтр, каким образом мне понять про децимацию? не улавливаю вашу мысль...

Сори перепутал

Посмотрите это
Сама тема раскрыта здесь

upd еще здесь посмотрите - Там также подробно расписана реализация и представлены описания как на Verilog так и на VHDL (на любителя wink.gif)
Георгий 2
сорри всем за глупый вопрос, все делал нормально. просто заглючил ISE. создал проект заново, все работает!!!!!!!!!!
неделю насиловал сам себе мозг и думал что ничего не понимаю...
сразу все делал через счетчик. все работает что проект новый совсем, что копипаст недельной давности smile3046.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.