реклама на сайте
подробности

 
 
> CIC, дециматор
Георгий 2
сообщение Oct 14 2010, 10:12
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 20-10-09
Из: Омск
Пользователь №: 53 089



Собственно стоит задача создать децимирующий 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 особенно ничем не помог. Может я плохо искал.
ЗЫ надеюсь что все же лыжи не едут...


--------------------
В жизни нужно попробовать и успеть все, чтобы потом не жалеть о том чего не сказал или не сделал...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
MKS
сообщение Oct 14 2010, 10:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 469
Регистрация: 13-03-05
Пользователь №: 3 315



Цитата(Георгий 2 @ Oct 14 2010, 13:12) *
....
Не ясно одно: а именно как реализовать дециматор программно на VHDL.
....

Если я правильно понял вопрос, то просто пропускать на выход каждый N-ый отсчёт.
P.S. На VHDL всё-таки это аппаратная реализация wink.gif
Go to the top of the page
 
+Quote Post
Георгий 2
сообщение Oct 14 2010, 10:49
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 20-10-09
Из: Омск
Пользователь №: 53 089



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


согласен некореектно выразился, просто не пойму как это написать на VHDL


--------------------
В жизни нужно попробовать и успеть все, чтобы потом не жалеть о том чего не сказал или не сделал...
Go to the top of the page
 
+Quote Post
MKS
сообщение Oct 14 2010, 11:02
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 469
Регистрация: 13-03-05
Пользователь №: 3 315



Вам нужен сигнал который один раз за N тактов будет вскакивать в 1. Этим сигналом захватывайте данные с выхода вашего фильтра. Реализуется это на счётчике с модулем счёта N. Как это описать на VHDL попробуйте разобраться сами, это не так уж и сложно smile.gif
Go to the top of the page
 
+Quote Post
Георгий 2
сообщение Oct 14 2010, 11:10
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 20-10-09
Из: Омск
Пользователь №: 53 089



на счетчике реализовал, пробую проверять все это дело.
интересно нет ли какой-нибудь функции или блока, который позволяет это сделать иным способом


--------------------
В жизни нужно попробовать и успеть все, чтобы потом не жалеть о том чего не сказал или не сделал...
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 14 2010, 11:13
Сообщение #6


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Георгий 2 @ Oct 14 2010, 13:49) *
согласен некореектно выразился, просто не пойму как это написать на VHDL

как пример во вложении.
PS Можно оптимизировать через цикл - чтобы уменьшить количество строк кода.
Прикрепленные файлы
Прикрепленный файл  CIC.doc ( 50.5 килобайт ) Кол-во скачиваний: 518
 


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Георгий 2
сообщение Oct 14 2010, 11:19
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 20-10-09
Из: Омск
Пользователь №: 53 089



Цитата(Maverick @ Oct 14 2010, 18:13) *
как пример во вложении.
PS Можно оптимизировать через цикл.


там обычный ких-фильтр, каким образом мне понять про децимацию? не улавливаю вашу мысль...


--------------------
В жизни нужно попробовать и успеть все, чтобы потом не жалеть о том чего не сказал или не сделал...
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 14 2010, 11:39
Сообщение #8


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



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

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

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

upd еще здесь посмотрите - Там также подробно расписана реализация и представлены описания как на Verilog так и на VHDL (на любителя wink.gif)


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Георгий 2
сообщение Oct 15 2010, 05:00
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 20-10-09
Из: Омск
Пользователь №: 53 089



сорри всем за глупый вопрос, все делал нормально. просто заглючил ISE. создал проект заново, все работает!!!!!!!!!!
неделю насиловал сам себе мозг и думал что ничего не понимаю...
сразу все делал через счетчик. все работает что проект новый совсем, что копипаст недельной давности smile3046.gif


--------------------
В жизни нужно попробовать и успеть все, чтобы потом не жалеть о том чего не сказал или не сделал...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016