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

Flip-fl0p

Свой
  • Постов

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

  • Посещение

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


  1. В 28.07.2023 в 21:04, sazh сказал:

    rx_aligner

    А можно поподробнее ? ))) Все время приходилось своими силами выравнивать клок путем динамического сдвига фазы. Неужели можно это не делать теперь ?

  2. Прежде чем принимать поток по 8b/10b - неплохо было бы сделать битовую синхронизацию. Ошибки могут быть не только из-за неправильной работы декодера, но и из-за неправильного положения фронта клока. Вообще можно скачать готовое ядро 8b/10b от Xilinx. У них есть разные варианты в том числе и на основе блочной памяти. 

    • Thanks 1
  3. 57 минут назад, Koluchiy сказал:

    Вопрос: при отсутствующих ILA оказывают ли mark_debug влияние на синтез?

    Скорее всего да. Ибо часто бывало так, что не подключая ни одну ILA к проекту, но оставляя линии помеченными mark_debug  проект собирался со слаками. Удалив атрибуты mark_debug, но при этом больше не внося никаких изменений в код - собирался с огромными запасами по слкам. 

  4. Мало исходных данных. 

    1. Снизить частоту там где есть возможность.

    2. Проверить правильность всех CDC.

    3. Правильно обкострейнить входы\выходы.

    4. Описать мультициклы если они есть.

    5. Удалить все ILA и все лишние атрибуты типа dont_touch, mark_debg

    6. Там где можно поставить auto_pipeline регистры.

  5. А как вы себе представляете это ? ILA появляется только если есть битстрим, в котором эта ILA подключена. А дальше в окнах настройки триггера вы можете выбрать какой LTX подцепить. 

  6. Можно попробовать. Давайте тогда я оценю фронт работы, чтобы понимать - имеет ли смысл вообще браться за неё. Можно прислать мне на почту: [email protected]

    Если есть краткое описание устройства - то вообще отлично. Единственный нюанс - я не очень хорошо разбираюсь в области цифровой обработки сигналов (DSP). Мне ближе системная часть. 

    • Like 1
  7. А попробуйте отдельно подключать goldem model от микрона например.

    Я помню, что по какой-то причине пришлось руками прикручивать модель памяти. Но за давностью лет не помню почему 😭

  8. В 09.06.2022 в 22:20, WladimirK сказал:

    Ко мне на почту не пришел ваш вопрос, извиняюсь, что так поздно отвечаю. Последняя точно для работы с integer. Например резервирую переменную: signal x std_logic_vector(7 downto 0). Далее я хочу ее использовать в качестве счетчика, то есть x<=x+1; так вот без этой библиотеки я не смогу использовать вектор как целое число. А про первую, надо почитать, подзабыл, но я ее везде использую. Привык:)

     

    VHDL - язык со строгой типизацией. 

    Если Вам необходимо инкрементить тип STD_LOGIC_VECTOR то вы можете подключить стандартную библиотеку IEEE.numeric_std

    затем вы тип STD_LOGIC_VECTOR преобразуете в тип UNSIGNED. Инкрементируете. И преобразуете обратно в тип STD_LOGIC_VECTOR.

    Или же сразу счетчики объявляете типом UNSIGNED.

        signal x std_logic_vector(7 downto 0) := (others => '0');
        signal y unsigned(7 downto 0)        := (others => '0');
    begin
        counter_x_proc : process
        begin
            if (rising_edge(clk)) then 
                x <= std_logic_vector(unsigned(x) + "1");
            end if;
        end process
        
        counter_y_proc : process
        begin
            if (rising_edge(clk)) then 
                y <= y + "1";
            end if;
        end process
    end process;

     

  9. В 07.06.2022 в 13:29, jenya7 сказал:

    я с ModelSim никак не могу подружится. у меня в тестбенчах полный рассинхрон. работают только самые тривиальные. чуть посложнее и  :dash2:.

    Пока не заработает на симуляции - нет смысла работать с железом. Учите модельсим. 

  10. 6 часов назад, slkhome сказал:

    Подставил указанну строчку в *.ini и ничего не изменилось в выводе, вообще! 

    Подставил и в локальный и в глобальный *.ini - ничего.

    В чем может быть проблема?

    Потому-что надо не подставлять строчку, а редактировать этот файл.

  11. В файлике modelsim.ini править надо

    у меня такой вывод:

    ; MessageFormatNote      = "** %S: %R\n   Time: %T  Iteration: %D%I\n"
    ; MessageFormatWarning   = "** %S: %R\n   Time: %T  Iteration: %D%I\n"
    ; MessageFormatError     = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
    ; MessageFormatFail      = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
    ; MessageFormatFatal     = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
    ; MessageFormatBreakLine = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F Line: %L\n"
    ; MessageFormatBreak     = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
    ; MessageFormat          = "** %S: %R\n   Time: %T  Iteration: %D%I\n"
    MessageFormat          =  "------------------------------------------------------------------------------------------------------\n ****** %R \n\t\t\t\t\t | process : %O\n\t\t\t\t\t | Time    : %T\n\t\t\t\t\t | line    : %L\n\t\t\t\t\t | Severity: %S\n------------------------------------------------------------------------------------------------------\n\n"

     

  12. 04.05.2022 в 18:33, lyaksandrov сказал:

    Всем, привет. Сразу скажу, что в проектировании на ПЛИС я полный 0. Но выпала такая потребность (для учебы) создать приемник rs 232. Посмотрел много всего, но так и не разобрался и ни один код не заработал. Требуемые параметры 16 МГц Скорости 57600 и 115200,  Бит четности Odd 6. Может кто направить или подсказать с чего начать делать? Возможно у кого-то есть свои наработки. Язык использую Verilog.

    Если и хотите остаться нулем в ПЛИС - то используйте чужие наработки. 

  13. 5 минут назад, misyachniy сказал:

    У каждого свой метод чтения. Я такие конструкции сведу в один абзац и все будет читаемо.

    9'd70 - адрес переменной переменной, UV_Z  - наименование переменной, все что в средине базовый адрес и сигналы разрешения и так понятны.

    Могу скопировать массив строк в программу процессора и сравнить с текстом программы

    if (((Adress_Config == (9'd70 + 9'd256)) & ack_config & Debug) UV_Z <= Data_Config[13:1];

    По поводу  "достаточно открыть сгенерированный нетлист. " - ничего не могу сказать.

    Удобство чтения - очень субьективно. 

    Но Magic number - плохая практика. Откуда взялись эти 9'd70 + 9'd256. Что они значат. Зачем они. Я такой подход не одобряю.

    А в чем сложности посмотреть сгенерированный нетлист ?

  14. 10 минут назад, misyachniy сказал:

    Перебираю чужой проект. Подчищаю и "переписываю под себя". Для проверки сравниваю sof файлы "старый" и "новый."

    Есть вот такая конструкция

    
    always @ (posedge clk)
     begin
      begin
       if(Adress_Config == (9'd70 + 9'd256)) 
        begin 
        if(ack_config == 1'b1 && Debug == 1'b1) 
         begin
        UV_Z <= Data_Config[13:1];
         end
        end
       end
      end

     

    Я убрал лишне

    
    if ((Adress_Config == (9'd70 + 9'd256)) && (ack_config == 1'b1 && Debug == 1'b1)) UV_Z <= Data_Config[13:1];

    Сравнение файлов показывает различия.

    По школьным знаниям могу предположить, что в первом варианте реализуется "приоритетный шифратор", во втором - "дешифратор". На мой взгляд функционировать должно одинаково, но почему генерится другой файл?

    //-----

    Ну и чтобы два раза не вставать, встретил два таких оператора вместе

    
    if(RM_Rise == 1'b1)        Dis_Foto <= 1'b1;
    if(Res_Dis_Foto == 1'b1) Dis_Foto <= 1'b0;

    Понятно что Dis_Foto присваивается 1 и 0 одновременно, но при сборке проекта никаких предупреждений не выводиться.

    Как работает такая конструкция?

     

     

     

     

    Вы простую и понятную конструкцию заменили на непонятную и не читаемую. Зачем ?

    Чтобы ответить на Ваш вопрос - достаточно открыть сгенерированный нетлист.

  15. 21 минуту назад, щещ сказал:

    А так это Мега функция

    Я её не сам же написал

    Какая разница какой язык будет? 

    Можно и vhdl было выбрать

     

    Можно говорить на современном языке и понимать окружающих(VHDL, V , SV). А можно говорить на мертвом диалекте и ничего не понимать (AHDL) Решать Вам.

  16. 12 минут назад, jenya7 сказал:

    а когда flag_edge = '1' ?

    Он формируется детектором фронта. У меня это отдельный самописный модуль с кучей параметров.

    Вот мой старый пример: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=80167&page=14#comments

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