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

sazh

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    3

sazh стал победителем дня 19 июля

sazh имел наиболее популярный контент!

Репутация

8 Обычный

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

  • Звание
    Гуру
    Гуру

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

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

5 868 просмотров профиля
  1. При использовании 8b/10b кодирования придется организовывать пакет с crc алгоритмом обнаружения ошибок, вне пакета в линии постоянно передаются команды. Если по одному проводу в каждую линию, без pll не обойтись. Перед декодером 8b/10b нужно поставить выравниватель. Пример в цифре без pll (для себя, в железе не реализовывал). Если без кодирования, данные надо стробом сопровождать. 8b_10b.zip
  2. У каждого кабеля есть параметр: минимальный радиус изгиба. Если у Вас мизанинная конструкция, зачем Вам кабель. Посмотрите разьемы для поверхностного монтажа Samtec QSH/QTH. От 9GHz. Есть одиночные и дифпары. По ним некоторые аналог гоняют. Есть и шлейфы. Есть китайские аналоги.
  3. Есть такое понятие - эволюция. Юзер всегда изучает что то новое, если не хватает чего то изученного старого. Xilinx - на заре своей юности пытался создать свой собственный язык описания аппаратуры. Полный пролет. Altera - Altera_HDL. Просто шедеврально. Практически все Ip_core Altera были написаны на нем (сейчас не знаю). Понятно, после Altera_HDL - слудущий шаг верилог. Язык ремесленника? Да. Что вижу - то и пою. Ну а дальше - систем верилог наступает на пятки vhdl. P. S. Оглянулся вокруг. Был один VHDL. Ушел на пенсию.
  4. Это Вы индусам собираетесь объяснить? VHDL - это язык преподавателей и кандидатов наук. Помню купил ТРИ книги Бибило. Доктор наук. И понял, что к синтезируемым конструкциям он подойдет в своей 8-ой книге. А результат нужен сейчас. А на выходе из вузов одни программеры. Си подобные. Простой пример. Храню на память, как о незаурядном члене сообщества. Понятно, эти шашечки не для хлеба насущного. use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity BarrelShifter is generic( N : positive := 3 ); port ( Input : in bit_vector( 2 ** N - 1 downto 0 ); ShiftCount : in natural range 0 to 2 ** N - 1; Output : out bit_vector( 2 ** N - 1 downto 0 ) ); end BarrelShifter; architecture Structure of BarrelShifter is subtype TStageIndex is integer range 0 to N; subtype TVector is bit_vector( 2 ** N - 1 downto 0 ); type TStageResults is array( TStageIndex ) of TVector; signal stageResults : TStageResults; function hasBitSet( number : natural; bitIndex : natural ) return boolean is begin return (number / 2 ** bitIndex) mod 2 /= 0; end function; begin stageResults( 0 ) <= Input; stages: for stage in TStageIndex'Low + 1 to TStageIndex'High generate stageResults( stage ) <= stageResults( stage - 1 ) ror 2 ** (stage - 1) when hasBitSet( ShiftCount, stage - 1 ) else stageResults( stage - 1 ); end generate; Output <= StageResults( N ); end Structure; module barrel_shift #(parameter n = 4) ( input [2**n-1:0] in_data, input [n-1:0] shift, output [2**n-1:0] out_data_a, output [2**n-1:0] out_data_b ); wire [2*2**n-1:0] temp_a; wire [2*2**n-1:0] temp_b; assign temp_a = { in_data, {2**n{1'b0}} } >> shift, out_data_a = temp_a[2*2**n-1:2**n] | temp_a[2**n-1:0]; assign temp_b = { {2**n{1'b0}}, in_data } << shift, out_data_b = temp_b[2*2**n-1:2**n] | temp_b[2**n-1:0]; endmodule
  5. Принципиальная разница все же есть. Слишком много надо знать, чтоб поднять vhdl. Многие пишут на vhdl не понимая, что они пишут.
  6. У квартуса продвинутый синтезатор. Создаете проект. Нажимаете ctrl+shift+ e В папку файл вгоняете свои файлы и файл констрейнов. Далее ctrl+ L. Пошла полная компиляция. Смотрите рапорты или. Или смотрите рапорты в окне задач.
  7. Вы время теряете в пустую. Все, что многие называют кодом, ложится на базовые примитивы того или иного семейства того или иного вендора. Если Вы с ними знакомы, Вы никогда не будете описывать например д тригер rg <= 1; if (a) rg <= 0; Вы напишете rg <= ! a ; И любой синтезатор любого вендора это скушает правильно. Посмотрите на базовые примитивы Говина. Это клоны базовых примитивов Xilinx. Уж точно не Альтера. И если в ip core присутствуют в описании эти примитивы, альтера не поможет. Альтера сейчас не приделах. Китай как я понял взял за основу Xilinx.
  8. В окне задач посмотрите рапорты. Вы вошли во временной анализатор. Ему надо рассказывать, что ему делать.
  9. Это конструкция нежизнеспособна. И конструкция по идее тоже нежизнеспособна. Результаты будут разные, а какие сходу никто не скажет. Вы схему какую хотите получить. На базе д триггера или на базе д триггера с входом ena? На вход ena Вы хотите подать только а, или результат комбинаторной логики? Имеет смысл: if ( A == 1'b1 && B == 1'b0 ) действие1; if ( A == 1'b1 && B == 1'b1 ) действие2; Потому что они взаимоисключающие и введение приоритетности только добавляет неясности. Во что эту приоритетность превратит синтезатор, сходу никто не скажет. При этом если надо, можно перебрать оставшиеся не описанные комбинации условий. Или if ( A == 1'b1 && B == 1'b0 ) rg <= d; else if ( A == 1'b1 && B == 1'b1 ) rg <= e; else rg <= f; нужно перебрать оставшиеся не описанные комбинации условий.
  10. Я имел ввиду китайцев, которые используют чужую среду разработки и имеют кристалл пин ту пин с чужим кристаллом.
  11. Они не волшебники. Они еще учатся. Судя по тому, что новые версии среды вылетают как горячие пирожки. Освойте Вивадо. И будет конкурентное преимущество.
  12. Внутри корок Вы ничего не сделаете. Надо корректно их соединять. По идее с пустым sdc файлом временной анализатор считает, что все клоки в одной группе. И все в красном. Потом вы ему что то запрещаете анализировать и краснота постепенно убывает. По идее невозможно симитриовать метастабильность. Поэтому каждый разработчик исподьзует проверенну схему перехода их одного клокового домена в другой. Промоделируйте двухклоковое фифо вашего вендора. Посмотрите как формируется full позаписи и по чтению. Появиться латентность, в основе цепочка триггеров. Может эти корки сопровождаются своими sdc файлами, которые надо запихнуть в головнойsdx
  13. Выбираете С8. Коммерция характеризуется от 0 до 85. Ориентируясь на ваш датчик. Если прописано, на какой частоте работает ip, значит работает. Он ругается на некорректный переход из одного клокового домена в другой. Пропустите сигнал, сформированный одной частотой через два д триггера на другой частоте и обзовите эти клоки из разных групп. Вы все это уже знаете.
  14. Забейте. При повторной полной компиляции (plase & route) всегда будет другая контрольная сумма. Если при plase & route у Вас в проекте есть файл sdc, то среда разработки автоматом создаст папку timing analysis report. Загляните туда. Там должны быть временные модели как slow, так и fast, под разные температурные диапазоны (под разводку вашего кристалла C8/I7. Тут конечно полная фигня. Наверно перед разводкой надо сказать в каком температурном диапазоне Вы хотите использовать Вас кристалл). Основная модель slow. Она покажет мах частоты, на которых могут работать ваши клоки при данной разводке, setup (время в течение которого сигналы на входе регистра должны быть стабильны до прихода активного фронта синхросигнала), hold, время удержания (время в течение которого сигналы на входе регистра должны оставаться стабильными после прихода активного фронта синхросигнала). Модель fast просто учитывает технологический разброс параметров. Типа может найтись кристалл побыстрее в партии, и с ним вдруг у вас появятся нарушения setup и hold. В модели fast нет папки f max. Короче, эти все модели для Вашей конкретной разводки. Если setup или hold имеют отрицательный slack, запускают временной анализатор, он создает список временных ограничений, скармливаете ему Ваш файл sdc, и формируете кучу отчетов для каждой модели. Переразводить проект нужно только тогда, если Вы корректируете файл sdc или изменяете свой проект.
×
×
  • Создать...