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

Eluv

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • День рождения 23.11.1996

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Киров

Посетители профиля

8 просмотров профиля
  1. Нет. Просто без примера было непонятно. Этих четырех строк оказалось вполне достаточно, чтобы понять как все переделать. Теперь все уяснила. Спасибо!
  2. А я и не говорила, что мне надо 180) Я пользовалась Clock Wizard'ом, потом уже в RTL схеме посмотрела, что он мне DCM_SP поставил. Мне нужно именно 90.
  3. Что то я вобще растерялась) Что за управляющий сигнал вы имеете ввиду? То есть хоть как примерно можно generate_new_address в чувства привести?
  4. Там система чтения RAM. В основном цикле clk_main основной автомат, в котором определяется, когда надо читать, посредством установки ram_enable. Сама ram тактируется сдвинутым по фазе сигналом clk_ram. Генерация адреса и запись результата происходят по обоим фронтам generate_new_address, который зависит от clk_in (частота такая же, как clk_ram, но другая фаза). Вот в том и беда, что это эрроры, а не варнинги, даже до конца процесс не доходит, на place&route доходит до ошибок и все :( Можете поподробнее описать что это должен быть за сигнал и как его использовать?
  5. Есть входной сигнал clk_pll_in 50МГц, который поступает на вход DCM_SP. С него снимаются сигналы clk_in 50 Мгц с фазой 0, clk_ram 50 МГц с фазой 90, clk_main 25 МГц с фазой 0. На выходе каждого тактового сигнала стоит буфер BUFG, так как без него развести сигналы невозможно. Дальше логика работы организована таким образом. Есть набор логических условий, которые становятся истинными в зависимости от состояния системы. Некоторые тактовые сигналы объединены по И с некоторыми условиями и выведены на пины. Некоторые используются в Always-блоках. Постоянно появляется ошибка 1136 (This design contains a global buffer instance, <main1/pll_main/clkout2_buf>, driving the net, <main1/clk_main>, that is driving the following (first 30) non-clock load pins.). Но возникает она в двух разных местах: 1) Ошибка на сигналах, которые выводятся на пины. К примеру: reg S_flag; reg [2:0] state; wire S=clk_main & S_flag; wire L=clk_main & (state==03); Где S и L - сигналы уровня top level. То есть необходима именно схема DCM->BUFG->Логика->PIN. По сути это Gated clock, что нехорошо. Заменила BUFG на BUFGCE и подключила на вход условия, работает, но на Gated clock'е только одно И, поэтому мучает вопрос, что быстрее: комбинаторная логика или переключение буфера. 2) Ошибки на сигналах в Always-блоке. Например: reg ram_enable; wire generate_new_address=clk_in & ram_enable; always @(posedge clk) //изменяется ram_enable always @(posedge generate_new_address) //что то присваивается always @(negedge generate_new_address) //что то присваивается Тут ругается так: This design contains a global buffer instance, <main1/pll_main/clkout2_buf>, driving the net, <main1/clk_in>, that is driving the following (first 30) non-clock load pins. < PIN: main1/main_ram/generate_new_addr_169.A4; >. Если в первом случае проблема решаема сменой типа буфера, то во втором случае вобще нет идей. Там даже сигнал generate_new_address не выводится наружу, только внутренний. Подскажите пожалуйста, как можно решить эту проблему, буду очень благодарна.
  6. Только начинаю изучать ПЛИС, занимаюсь разработкой IP-ядра для ПЛИС Altera (потому что иначе диплом мне не дадут :laughing: ) Так как ядро по назначению весьма специализированное и в применении мелкосерийное, то в качестве защиты выбрал схему, предложенную Xilinx: внешняя EEPROM с криптоядром. Отсюда переходим к тому, что само ядро нужно распространять как черный ящик, чтобы можно было скомпилить вместе с другими ядрами (например), но посмотреть исходник нельзя. Начал изучать тему. Нашел, что для подобных целей применяют EDIF, VQX и QXP форматы. Не совсем понимаю в чем между ними всеми разница, хотелось бы узнать. В качестве теста сделал проект с маленькой логической схемкой и сформировал форматы vqx и qxp, edif как я понял в Quartus'е не сгенерировать. Так вот, попробовал их открыть, и, знаете, не понял, почему их используют как черные ящики, потому что структура исходника становится более-менее очевидной. Или это потому, что проект маленький и все видно как на ладони, а в большом проекте пойди разберись в этой портянке? Прошу прощения, опечатка. Формат QVM.