Перейти к содержанию
    

Claw

Участник
  • Постов

    70
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Claw


  1. да, с этими библиотеками всё работает, дело в том, что входной сигнал у меня имеет тип unsigned(если брать Ваш код, то это d),но этот сигнал идёт из другого блока(там я использовала numeric_std, и я никак не могу переделать его там в std_logic, потому что операции, которые там используются библиотекой std_logic_arith не поддерживаются),а c numeric_std этот код вылетает сразу с кучей ошибок...

  2. Не совсем понятент этот код...

    q<="000" & d

    здесь понятно, конкатенация, получаем единицы, а вот ,к примеру:

    q<=conv_std_logic_vector(conv_integer(d)+18, 8)

    Что здесь происходит? Мы же в итоге получаем 8ми разрядный вектор и каким образом выделить из него числа для десятков и единиц?

  3. Вот, что в итоге получилось:

    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.NUMERIC_STD.ALL;
    
    entity Gun is
        Port ( clk : in bit;
               Op1 : out  unsigned(3 downto 0);--десятки
               Op2 : out  unsigned(3 downto 0));--единицы
    end Gun;
    
    architecture Behavioral of Gun is
    signal O1: integer range 0 to 9;
    signal O2: integer range 0 to 9;
    signal Ans : unsigned(8 downto 0);--вектор в котором хранится число, из которого, собственно, нужно извлечь десятки и единицы
    begin--line 46(см.ниже)
    process(clk)
    begin
    if clk='1' and clk'event then
    Ans<="001010001";--специально задала, чтобы посмотреть в modelsim
    if to_integer(Ans)<10 then--ecли меньше 10, то
    O2<=to_integer(Ans);--присваеваем единицам 
    else
    O1<=to_integer(Ans)/10;--находим число десятков
    O2<=to_integer(Ans)-(O1*10);--единиц
    end if;
    end if;
    end process;
    Op1<=to_unsigned(O1,4);
    Op2<=to_unsigned(O2,4);
    end Behavioral;

     

    В modelsim что-то пошло не так))

     

    Cannot continue because of fatal error.

    # HDL call sequence:

    # Stopped at C:/Xilinx/modelsimproj/Gun.vhd 53 Process line__46

    Может всё дело в преобразовании типов? Не сильна в этом признаюсь, но по моей логике всё вроде правильно (себя не похвалишь - никто не похвалит) :biggrin:

  4. Можете посоветовать что-нибудь по алгебраической теории кодирования?Может даже введение в неё? Хотелось бы, чтобы там ещё затрагивалась тема полей, в достаточно доступной форме, заранее спасибо :rolleyes:

  5. Как вывести полученное двузначное число ,допустим в результате перемножения, на 4-ёх разрядный 7-ми сегментный индикатор, используя десятичную систему счисления? Т.е., к примеру, вывести на индикатор результат произведения 9x9 = 81? Как отделить десятки от единиц и вывести их отдельно на каждый разряд?

  6. Имеется следующий код на VHDL:

     

    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
    use IEEE.STD_LOGIC_UNSIGNED.ALL;
    
    .........
    
    
    entity d_trigger is
        Port ( clk  : in   STD_LOGIC;
               q : in   STD_LOGIC;
               clk_out : out  STD_LOGIC);
    end d_trigger;
    
    architecture Behavioral of d_trigger is
    process (clk)
    begin
       if clk'event and clk='1' then
        q<=clk_out;
       end if;
    end process;
    end Behavioral;

     

    Появляется ошибка:

    parse error, unexpected PROCESS

     

    Не могу понять как её исправить :smile3046:

     

×
×
  • Создать...