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

 
 
> Работа с generic?, как написать на VHDL ...
eteP
сообщение Apr 6 2005, 09:35
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 24-06-04
Пользователь №: 166



Как написать в VHDL такую конструкцию?

Код
entity avg is
    generic (
 NUMDATABITSIN    : integer := 14;
 NUMAVG      : integer := 32
    );
 port(
  CLK:  in std_logic;
  RSTl:  in std_logic;
  CE:  in std_logic;
  DATA_IN:    in std_logic_vector(NUMDATABITSIN-1 downto 0);
  DATA_DRY:    out std_logic;
  DATA_OUT:    out std_logic_vector(NUMDATABITSIN + fix(log(NUMAVG)/log(4)) -1 downto 0)
     );
end avg;


Не понятно как написать формулу для DATA_OUT.
Здесь пример я написал как это выглядит на MatLab.

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
xdan
сообщение Apr 6 2005, 15:56
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-02-05
Пользователь №: 2 872



Цитата(eteP @ Apr 6 2005, 11:35)
Как написать в VHDL такую конструкцию?

Код
entity avg is
    generic (
 NUMDATABITSIN    : integer := 14;
 NUMAVG      : integer := 32
    );
 port(
  CLK:  in std_logic;
  RSTl:  in std_logic;
  CE:  in std_logic;
  DATA_IN:    in std_logic_vector(NUMDATABITSIN-1 downto 0);
  DATA_DRY:    out std_logic;
  DATA_OUT:    out std_logic_vector(NUMDATABITSIN + fix(log(NUMAVG)/log(4)) -1 downto 0)
     );
end avg;


Не понятно как написать формулу для DATA_OUT.
Здесь пример я написал как это выглядит на MatLab.

Спасибо.
*

Делаешь пакет, в его заголовке обьявляешь нужные функции, в теле пакета описываешь тела этих функций.

потом добавляешь:
Код
use.work.my_package.all;
entity avg is
...

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

... или я не так понял суть проблемы smile.gif.
Go to the top of the page
 
+Quote Post
Rok
сообщение Apr 6 2005, 21:19
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894



Цитата
и можешь пользоваться обьявленными в пакете функциями и константами во всем модуле.

С константами все понятно. Человек спрашивает как ему fix(log(NUMAVG)/log(4)) посчитать, чтобы автоматом размерность выставлялась.
Вот например такой код для log2:
Код
function LOG2(Number : positive) return natural is
variable Temp : positive := 1;
begin
if Number=1 then
return 0;
 else
  for i in 1 to integer'high loop
   Temp := 2*Temp;
    if Temp>=Number then
     return i;
    end if;
end loop;
end if;    
end LOG2;

А принцип такой же, можно в package запихнуть, а можно и на месте.
А потом еще нужно будет функцию для fix написать.
Порыться можно в сети поискать.
Вот нашел
Смотри здесь
Готовый package к употреблению rolleyes.gif .
Go to the top of the page
 
+Quote Post
eteP
сообщение Apr 7 2005, 14:00
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 24-06-04
Пользователь №: 166



Срасибо.
То что надо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th August 2025 - 23:26
Рейтинг@Mail.ru


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