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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Вопрос по VHDL
Jenya7
сообщение Feb 20 2017, 13:26
Сообщение #31


Профессионал
*****

Группа: Участник
Сообщений: 1 062
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Flip-fl0p @ Feb 20 2017, 18:16) *
А не проще ли использовать классическую блочную память, которая есть почти во всех FPGA ?

можно и память. рекорд более описательный, видно переменные. но эффективность конечно главнее удобства.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 23 2017, 14:10
Сообщение #32


Профессионал
*****

Группа: Участник
Сообщений: 1 062
Регистрация: 29-03-12
Пользователь №: 71 075



назрел еще один вопрос
когда писать так
Код
if a = b then
    sig <= val_expr_1;
elsif a = c then
    sig <= val_expr_2;
elsif a = d then
    sig <= val_expr_3;
else
    sig <= val_expr_4;
end if;

а когда так
Код
case a is
  when b =>
    sig <= val_expr_0;
  when c =>
    sig <= val_expr_1;
  when d =>
    sig <= val_expr_2;
      ...
  when others =>
    sig <= val_expr_N;
end case;

Go to the top of the page
 
+Quote Post
Tausinov
сообщение Feb 23 2017, 17:23
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Jenya7 @ Feb 23 2017, 17:10) *
назрел еще один вопрос
когда писать так
Код
if a = b then
...
end if;

а когда так
Код
case a is
...
end case;


http://electronics.stackexchange.com/quest...atement-in-vhdl
Go to the top of the page
 
+Quote Post
ZeratulSC007
сообщение Mar 1 2017, 15:27
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 14-10-16
Из: Москва
Пользователь №: 93 763



Здравствуйте. Надеюсь, вопрос подходит теме топика. Пишу свой модуль обработки сигнала перед VGA, есть рабочий пример кода
Код
Library IEEE;
use IEEE.STD_Logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity jet is
  port(
       en      : in std_logic;
       Y       : in std_logic_vector(13 downto 0);
       R, G, B : out std_logic_vector(9 downto 0);
         MODE_FPGA: in std_logic
       );
end entity;

architecture jet_arch of jet is

begin

  RGB : process(Y, en)
    variable tmp1: std_logic_vector(15 downto 0);
    variable tmp2: std_logic_vector(16 downto 0);
    
  begin
    if en = '1' then
        if MODE_FPGA='1' then
          
            case  Y(13 downto 11) is
            when "000" =>
              R <= (others => '0');
              G <= (others => '0');
              tmp1 := Y&"00"+"0010000000000000"; -- b = 4y + 0.5
              B <= tmp1(13 downto 4);
            when "001"|"010" =>
              R <= (others => '0');
              tmp1 := Y&"00"-"0010000000000000"; -- g = 4y - 0.5
              G <= tmp1(13 downto 4);
              B <= (others => '1');
            when "011"|"100" =>
              tmp1 := Y&"00"-"0110000000000000"; -- r = 4y - 1.5
              R <= tmp1(13 downto 4);
              G <= (others => '1');
              tmp2 :=  not ("0"&Y&"00") + "01010000000000000"; -- b = -4y + 2.5
              B <= tmp2(13 downto 4);
            when "101"|"110" =>
              R <= (others => '1');
              tmp2 :=  not ("0"&Y&"00") + "01110000000000000"; -- g = -4y + 3.5
              G <= tmp2(13 downto 4);
              B <= (others => '0');
            when "111" =>
              tmp2 :=  not ("0"&Y&"00") + "10010000000000000"; -- r = -4y + 4.5
              R <= tmp2(13 downto 4);
              G <= (others => '0');
              B <= (others => '0');
          end case;
        else
          R <= Y(13 downto 4);
        G <= Y(13 downto 4);
        B <= Y(13 downto 4);    
        end if;
    else
        R <= (others => '0');
        G <= (others => '0');
        B <= (others => '0');
    end if;
  end process;

end architecture;


Интересует конструкция <= (others => '0'). Нашел, что это использование агрегации. Штудирование материала не дало понимания. Объясните глупому студенту)
Go to the top of the page
 
+Quote Post
Amurak
сообщение Mar 1 2017, 15:59
Сообщение #35


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

Группа: Свой
Сообщений: 146
Регистрация: 18-11-12
Пользователь №: 74 459



Цитата(ZeratulSC007 @ Mar 1 2017, 18:27) *
Интересует конструкция <= (others => '0'). Нашел, что это использование агрегации. Штудирование материала не дало понимания. Объясните глупому студенту)

Эта конструкция записывает нули во все биты вектора.
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Mar 1 2017, 16:26
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Amurak @ Mar 1 2017, 18:59) *
Эта конструкция записывает нули во все биты вектора.


не совсем так, во все не перечисленные ранее:

Код
signal some_vect : std_logic_vector(7 downto 0);

some_vect <= (0 => '1', 5 downto 2 => x"D", others => '0');


Кроме того, все же не биты, а элементы массива, обобщая на многомерный случай, получаем :

Код
type t_vect_slv_8 is array (natural range <>) of std_logic_vector(7 downto 0);
signal some_vect : t_vect_slv_8(2 downto 0);

some_vect <= (1 = > (others  => '0') , others = > ((0 => '1', 5 downto 2 => x"D", others => '0'));


Сообщение отредактировал Tausinov - Mar 1 2017, 16:26
Go to the top of the page
 
+Quote Post
ZeratulSC007
сообщение Mar 1 2017, 17:07
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 14-10-16
Из: Москва
Пользователь №: 93 763



Amurak, Tausinov, спасибо!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd March 2017 - 20:04
Рейтинг@Mail.ru


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