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

 
 
> Операция "И" над вектором и битовой переменной
seldim
сообщение Apr 2 2012, 15:50
Сообщение #1


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

Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142



Недавно начал осваивать VHDL и столкнулся с несколькими проблемами:

1. есть переменная sts_logik_vector на 25 разрядов и битовая переменная logik_vector. Необходимо провести логическую операцию ("и" или "или" и.т.д.) между каждым разрядом вектора и битовой переменной. Как это сделать оптимально, минимальным кодом? Очень не хочется разбивать вектор на отдельные биты.

2. есть переменная sts_logik_vector на 25 разрядов. Как оказалось 25 цифра не хорошая, т.к. если необходимо присвоить константу то приходитсь писать чтото типа led_in [24 downto 0] <= '0000000000000000000111111'
в хексе присвоть не получается так как не совпадает количество бит. Можно ли упростить форму записи таких присваений?

3. никак не могу понять можно ли синтезировать в Плис оператор for и как это правильно делать если он синтезируемый?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Postoroniy_V
сообщение Apr 2 2012, 16:02
Сообщение #2


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(seldim @ Apr 3 2012, 00:50) *
Недавно начал осваивать VHDL и столкнулся с несколькими проблемами:

1. есть переменная sts_logik_vector на 25 разрядов и битовая переменная logik_vector. Необходимо провести логическую операцию ("и" или "или" и.т.д.) между каждым разрядом вектора и битовой переменной. Как это сделать оптимально, минимальным кодом? Очень не хочется разбивать вектор на отдельные биты.

2. есть переменная sts_logik_vector на 25 разрядов. Как оказалось 25 цифра не хорошая, т.к. если необходимо присвоить константу то приходитсь писать чтото типа led_in [24 downto 0] <= '0000000000000000000111111'
в хексе присвоть не получается так как не совпадает количество бит. Можно ли упростить форму записи таких присваений?

3. никак не могу понять можно ли синтезировать в Плис оператор for и как это правильно делать если он синтезируемый?

1)можно использовать либу reduce
http://www.vhdl.org/vhdlsynth/vhdl/reduce_pack.vhd
2) led_in<= '0' & x"00_0000"; 1+8+16 бит
3)
Код
signal data_or25:std_logic;
signal data_or:std_logic;
signal data:std_logic_vector(24 downto 0);
.....
begin

process(clk)
var  x:std_logic;
begin
        if clk'event and clk='1' then
               x :=  data_or;
               for i in 0 to 24 loop
                     x := x or data(i);
               end loop;
              data_or25 <= x;
        end if;
end process;


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post



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

 


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


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