Xilinx ISE 11....как?

Программируемая логика - это не так уж и сложно. Разберемся вместе.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

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

ADD: Вот правильный текст тестбенча:

Код: Выделить всё

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;

LIBRARY STD;
USE STD.TEXTIO.all;
 
ENTITY TB_Comparator1 IS
END TB_Comparator1;
 
ARCHITECTURE behavior OF TB_Comparator1 IS 
 
  -- Объявление объекта для теста
  COMPONENT Comparator1
    PORT(
      A : IN  std_logic;
      B : IN  std_logic;
      EQ : OUT  std_logic
    );
  END COMPONENT;

  --Inputs
  signal A : std_logic := '0';
  signal B : std_logic := '0';

  --Outputs
  signal EQ : std_logic;
 
BEGIN
 
  -- Подсоединение тестируемого объекта (UUT)
  uut: Comparator1 PORT MAP (
    A => A,
    B => B,
    EQ => EQ
  );
 
  -- Собственно процесс тестирования
  stim_proc: process
    variable Message : line;
  begin
    -- Ожидание для выполнения начального сброса схемы
    wait for 100 ns;
    -- Первый тест
    A <= '0';
    B <= '0';
    wait for 5 ns;
    if EQ = '1' then
      Write(Message, "Test 1 PASS");
    else
      Write(Message, "Test 1 FAIL");
    end if;
    WriteLine(Output, Message);
    wait for 95 ns;
    -- Второй тест
    A <= '0';
    B <= '1';
    wait for 5 ns;
    if EQ = '0' then
      Write(Message, "Test 2 PASS");
    else
      Write(Message, "Test 2 FAIL");
    end if;
    WriteLine(Output, Message);
    wait for 95 ns;
    -- Третий тест
    A <= '1';
    B <= '0';
    wait for 5 ns;
    if EQ = '0' then
      Write(Message, "Test 3 PASS");
    else
      Write(Message, "Test 3 FAIL");
    end if;
    WriteLine(Output, Message);
    wait for 95 ns;
    -- Четвёртый тест
    A <= '1';
    B <= '1';
    wait for 5 ns;
    if EQ = '1' then
      Write(Message, "Test 4 PASS");
    else
      Write(Message, "Test 4 FAIL");
    end if;
    WriteLine(Output, Message);
    wait for 95 ns;
    -- Тестирование закончено
    assert false report "Simu1ation Comp1eted" severity failure;
  end process;
END;
Реклама
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Сообщение nick17 »

Привет! Ну как изучение программы продвигается? :)
Реклама
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

У меня -- да. Хотя в основном не симуляция (как ни крути, а это вспомогательная вещь -- занимаюсь ей, когда это нужно).
pesicot
Родился
Сообщения: 15
Зарегистрирован: Пт июн 26, 2009 14:31:59
Откуда: Россия г. Ульяновск

Сообщение pesicot »

У меня тоже все ок. Сам то (nick17) разобрался со всем?

Я лично перехожу к изучению VHDL благо теперь сразу посмотреть можно все ли правильно работает.

Кстати, а что хотел сделать на ПЛИС или просто интересно?
Реклама
Эиком - электронные компоненты и радиодетали
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

pesicot писал(а):Я лично перехожу к изучению VHDL благо теперь сразу посмотреть можно все ли правильно работает.
Я собираюсь использовать симуляцию в таких схемах, которые "в лоб" не проверишь. Ну а то, что можно проверить простой заливкой в плату с ПЛИС, проще так проверять.
Кстати, а что хотел сделать на ПЛИС или просто интересно?
И просто интересно, и хотел :) Для начала (ну, это когда разберусь с этим делом получше, есно) хочу слепить свой вариант PDP-11. Флэш-ПЗУ исполнит обязанности диска, ОЗУ на плате тоже есть, интерфейсы PS/2 и VGA позволят подключить клаву и монитор, т.е. реализовать один терминал. Ну а через USB можно вообще что угодно, если разобраться, как (ПЛИС через USB обменивается информацией с программой на компе, которая эмулирует уже всё, что надо -- дополнительные терминалы, диски, ленты...)
Реклама
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Сообщение nick17 »

pesicot писал(а):У меня тоже все ок. Сам то (nick17) разобрался со всем?

Я лично перехожу к изучению VHDL благо теперь сразу посмотреть можно все ли правильно работает.

Кстати, а что хотел сделать на ПЛИС или просто интересно?
Нет еще пока не совсем, но общий принцип понят :) Сейчас изучаю VHDL, так же как и ты :) скачал замечательную обучающую программу на русском с картинками и примерами :idea: в Железе пока еще ничего не пробовал, ПЛИС еще не пришла.
Дали направленеие на изучение ПЛИС начальники наши, и чем дальше я учу тем мне больше нравится. :)) А ты что нибудь уже сваял? или тоже пока вникаешь? :))
Реклама
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Сообщение nick17 »

SII, кстати, есть замечательный сайт, который тебе поможет в твоей идее, по крайней мере с VGA и PS/2, правда на верилоге все написано, но принцип понятен вроде :) называется вроде fpga4fan.com если не ошибаюсь.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

Я знаю, как работают интерфейсы, так что собственно с электроникой мне разбираться не надо. Просто мне нужно понять, как это делать на VHDL; на уровне реальных компонентов я знаю, как сделать то, что нужно (т.е. спаять всё на рассыпухе особых проблем для меня не составляет -- не считая времени и денег). Но за ссылку спасибо.
pesicot
Родился
Сообщения: 15
Зарегистрирован: Пт июн 26, 2009 14:31:59
Откуда: Россия г. Ульяновск

Сообщение pesicot »

Если надо на VHDL VGA+PS/2 то вперед в примеры от ISE, там есть пример называется Pong!!! Если в твоей установке нет этих примеров то пиши скину отдельно проект для ISE.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

Этот пример годится на то, чтоб его посмотреть, но его функционал меня не устраивает. Клавиатура умеет не только посылать скан-коды, но и принимать команды, а для этого нужно поддерживать двунаправленность PS/2 -- чего в этом и ему подобных примерах нет. Кроме того, модуль, работающий с интерфейсом, в этом примере сделан на Верилоге. В общем, по-любому придётся делать самому. Что же касается VGA, то там никаких сложностей и без всяких примеров не наблюдается.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

Кстати, всем, кто более-менее понимает по-буржуйски, могу порекомендовать в качестве учебника книжку "FPGA PROTOTYPING BY VHDL EXAMPLES". Она написана в расчёте как раз на Spartan-3 (правда, не на такую плату, как у меня, и даже не на такую разновидность самой ПЛИС, но это не шибко мешает). Сейчас вот на основе излагаемых там идей сделал схемку подавления дребезга. Если кому интересно, вот её код:

Код: Выделить всё

----------------------------------------------------------------------------------
--
--   Схема устранения дребезга сигнала
--
--   Исходный сигнал поступает по линии InputSignal. Каждый раз, когда состояние
-- этой линии изменяется, запускается 4-разрядный счётчик. Если входной сигнал ос-
-- таётся стабильным в течение всего периода счёта (16 тактов), фиксируется пере-
-- ключение его состояния: на линию OutputLevel выдаётся уровень, соответствующий
-- состоянию входного сигнала. 
--   Установку в исходное состояние обеспечивает сигнал Reset. По линии Clock на
-- счётчик подаются тактовые импульсы. Необходимо выбирать такую частоту синхро-
-- низации, чтобы полный период счёта (16 тактов) полностью покрывал период дре-
-- безга.
--
----------------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Debouncer is
  port (Clock : in  STD_LOGIC;
        Reset : in  STD_LOGIC;
        InputSignal : in  STD_LOGIC;
        OutputLevel : out  STD_LOGIC
       );
end Debouncer;

architecture Behavioral of Debouncer is

  type TState is (stZero, stWait0, stOne, stWait1);
  signal CurState, NextState : TState;
  signal CurCnt, NextCnt : unsigned(3 downto 0);
  signal CntLoad, CntDec, CntZero : STD_LOGIC;
  
begin

  process (Clock, Reset)
  begin
    if Reset = '1' then
      CurState <= stZero;
      CurCnt <others> '0');
    elsif Clock'event and Clock = '1' then
      CurState <= NextState;
      CurCnt <= NextCnt;
    end if;
  end process;

  NextCnt <others> '1') when CntLoad = '1' else
             CurCnt - 1 when CntDec = '1' else
             CurCnt;
             
  CntZero <= '1' when NextCnt = 0 else '0';
  
  process (CurState, InputSignal, CntZero)
  begin
    CntLoad <= '0';
    CntDec <= '0';
    NextState <CurState>
        OutputLevel <= '0';
        if InputSignal = '1' then
          NextState <= stWait1;
          CntLoad <= '1';
        end if;
      when stWait1 =>
        OutputLevel <= '0';
        if InputSignal = '1' then
          CntDec <= '1';
          if CntZero = '1' then
            NextState <= stOne;
          end if;
        else
          NextState <stZero>
        OutputLevel <= '1';
        if InputSignal = '0' then
          NextState <= stWait0;
          CntLoad <= '1';
        end if;
      when stWait0 =>
        OutputLevel <= '1';
        if InputSignal = '0' then
          CntDec <= '1';
          if CntZero = '1' then
            NextState <= stZero;
          end if;
        else
          NextState <= stOne;
        end if;
    end case;
  end process;

end Behavioral;
Что касается упомянутой книги, у меня она есть в электронном виде (довольно плохие сканы в pdf-файлы, всего 21 файл общим объёмом 21 мегабайт). Если кому надо, могу выслать.
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Сообщение nick17 »

Кстати, а как делить частоту от входа глобального тактирования, если к примеру генератор на 50мег? Только внутренними триггерами? что то слышал и о умножении, это как осуществляется и чем? :roll:
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

nick17 писал(а):Кстати, а как делить частоту от входа глобального тактирования, если к примеру генератор на 50мег? Только внутренними триггерами? что то слышал и о умножении, это как осуществляется и чем? :roll:
В ПЛИСах есть специальные встроенные модули для управления частотой. В Хилинхах они называются DCM. Правда, я пока не пробовал их использовать, делил счётчиками, но скоро надеюсь с ними разобраться.

Кстати, все внутренние модули описаны ж в документации на ПЛИСы. Ознакомиться очень рекомендуется -- хотя б для того, чтобы понять, что там вообще есть и для чего можно использовать.
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Сообщение nick17 »

Блин! У меня щачс башка лопнет от всего этого!!!! :shock: Запутываюсь уже!!! :shock:
Аватара пользователя
otmyavrozok
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 18, 2008 22:38:13
Откуда: Я просто странник...

Сообщение otmyavrozok »

Эти матрицы должны так греться,у меня на отладочной плате 65 С,может кулер прикошачить?
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

А кто их знает... У меня ПЛИСина холодная, но я её никогда и не грузил сколько-нибудь серьёзно.
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Сообщение nick17 »

SII писал(а):А кто их знает... У меня ПЛИСина холодная, но я её никогда и не грузил сколько-нибудь серьёзно.
А есть вообще готовые проекты у тебя в железе?
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

Нету таких, только разбираюсь, причём урывками -- когда работа позволяет.
Аватара пользователя
otmyavrozok
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 18, 2008 22:38:13
Откуда: Я просто странник...

Сообщение otmyavrozok »

У меня просто бегущие огни(тоже учусь),видно ПЛИС дефективная,б.у всё-таки :)
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Сообщение nick17 »

otmyavrozok писал(а):У меня просто бегущие огни(тоже учусь),видно ПЛИС дефективная,б.у всё-таки :)
:)) Может быть) А я даже светодиодами еще и не моргал, только делаю макетку пока, но в симуляторе запросто уже могу)
Ответить

Вернуться в «ПЛИС»