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

titus

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

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

  • Посещение

Репутация

0 Обычный

Информация о titus

  • Звание
    Участник
    Участник
  1. Это как? Если написать два процесса, один по возр, другой по ниспад, то как их смультиплексировать на удвоенную частоту? Начало кода может так выглядеть(ведь bus имеет два источника)? process(dco) begin if (dco = '1' and dco'event) then bus <= portA; end if; end process; process(dco) begin if (dco = '0' and dco'event) then bus <= portB; end if; end process; Опыта мало, а в задачах, использующих переводы из одних доменов в другие и использования ddr вообще нет. Принятые данные хочу с удвоенной частотой запихивать либо в фифо(как раз для перехода в другой домен), либо обрабатывать в реальном времени.
  2. Привет всем! Поделитесь опытом, посоветуйте. Есть быстрый АЦП (ad9410) и ПЛИС. АЦП мультиплексирует выходные данные на два порта А и В, вырабатывая при этом тактовый сигнал. По спадающему фронту этого сигнала данные выставляются на порт А, по возрастающему на порт В и т.д. Таким образом достигается быстродействие в два раза большее, чем для каждого из портов в отдельности. Внимание вопрос: как принять эти данные в ПЛИС? Буду благодарен за высказанные идеи. AD9410_0.pdf
  3. Есть шина дифференциального сигнала, допустим 16 пар. Для того, чтобы завести их в кристал Xilinx необходимо имплементировать 16 дифференциальных буферов IBUFDS. Внимание, вопрос! Можно ли это описать (VHDL) в цикле и как? Или придется вручную описывать 16 буферов?
  4. Требуется помощь обладателей WebPack ISE 8.2 Подскажите, пожалуйста, какие кристаллы серии Virtex4FX поддерживаются версией 8.2 (конкретно интересует XC4VFX20-10) ? Заранее спасибо.
  5. Вчера звонил в Инлайн. Менеджер по телефону сказал, что Spartan3E500 от 25 штук, Virtex4FX - от 40 штук. Может там какое-нибудь волшебное слово надо сказать? Спасибо за ответы и советы.
  6. Уважаемые форумчане, с ПЛИС познакомился недавно. Изучал на отладочной плате XILINX Spartan 3E. И вот настал момент создания собственного проекта (АЦП, ЦАП 200МГц, USB). Сразу возникли вопросы. 1. Как сильно отличаются в цене Spartan3E и Virtex4 и сколько они вообще стоят? 2. Где их купить? А то у дистрибьютера либо остатки покупать (не те которые нужны), либо партиями 20-40 штук, а нам столько не надо :) . 3. Насколько сильно по производительности отличаются Spartan3E и Virtex4. В чем принципиальная разница? Подскажите, пожалуйста.
  7. Всем спасибо за советы. Уже понял, что написанный код неудачный. Сама же задача такая: Плис тактирует ацп сигналом clk. Ацп, в свою очередь, поочередно выставляет данные на две шины и выдает внешний дифференциальный клок DCO и DCO180. По фронтам которых надо считывать данные(так что гарантии синхронности clk и dco, как я понимаю, нет). Потом плиса должна эти данные запихивать в фифо. Я так понимаю, лучше это делать с частотой DCO х 2.
  8. Сейчас сделано так: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity adc_driver is port( CLK :IN STD_LOGIC; DCO :IN STD_LOGIC; DCO180 :IN STD_LOGIC; CE :IN STD_LOGIC; DA :IN STD_LOGIC_VECTOR(9 DOWNTO 0); DB :IN STD_LOGIC_VECTOR(9 DOWNTO 0); DOUT :OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); end adc_driver; architecture Behavioral of adc_driver is signal dco_prev : std_logic; signal dco180_prev : std_logic; begin process (CLK) begin if CLK'event and CLK = '1' then if (CE = '1') then if DCO = '1' and dco_prev = '0' then DOUT <= DA; elsif DCO180 = '1' and dco180_prev = '0' then DOUT <= DB; end if; else DOUT <= "ZZZZZZZZZZ"; end if; dco_prev <= dco; dco180_prev <= dco180; end if; end process; end Behavioral; А хотелось бы отвязаться от сигнала clk. Т.е. выставлять на DOUT данные по положительным фронтам DCO и DCO180. Дело в том, что введение сигналов _prev значительно замедляет работу схемы.
  9. Возникли такие трудности: Проект тактируется сигналом clock. Есть необходимость считывать данные по другому синхросигналу, внешнему. Вопросы: 1. Почему не работает конструкция signal'event 2. Как явно указывать в ISE сигнал тактирования? В некоторых проектах он не определяется. Спаибо.
  10. Чего-то я не понял. Здесь утверждают, что после процесса process (in1, in2) begin s1 <= in1 and in2; out1 <= s1; end process; out1 будет содержать новые значения. Но симулятор выдает как раз старое значение. По моему там должно быть как раз старое значение. Ведь при наступлении события, инициирующий процесс, используются значения сигналов, соответствующих моменту наступления этого события. Так что мне кажется,что Golikov A и andrew_b в данном случае не правы.
  11. TO Golikov A: С этим я разобрался. В примере вы приводите примеры присваивания значений сигналам и переменным. Здесь все ясно. TO Asb: Тогда вопрос такой, что буде в out1 после завершегия процесса, старое или новое значение S1? Ведь опраторы должны выполнятся последовательно? process (in1, in2) begin s1 <= in1 and in2; out1 <= s1; end process;
  12. Собственно сам код: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity adder is port ( in1 : in std_logic; in2 : in std_logic; out1 : out std_logic ); end adder; architecture abstract of adder is signal s1: std_logic; begin process (in1, in2) begin s1 <= in1 and in2; out1 <= s1; out1 <= in1; end process; end abstract; Вопросы: 1. Цитата из книги: "Для каждого сигнала в теле процесса может стоять только один оператор присваивания значения (только один источник)." - Почему не выдается ошибки при компиляции? Ведь я присваиваю сигналу out1 два разных значения? 2. Зачем вводят вспомогательный сигнал s1? Почему нельзя просто без процесса написать out1 <= in1 and in2; 3. Почему опретор присваивания значения сигналу в теле процесса называют последовательным? Ведь благодаря механизму дельта-задержек он по сути является параллельным? Проясните, пожалуйста, данные непонятки.
  13. Работает . Все починилось установкой последнего SP3 для ISE8.1 :)
  14. Сейчас действительно помогает записать два раза подряд. Пробовал. Не помогает.
×
×
  • Создать...