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

AlexRayne

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

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

  • Посещение

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

    1

AlexRayne стал победителем дня 11 апреля 2023

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

Репутация

7 Обычный

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

  • Звание
    Знающий
    Знающий

Старые поля

  • skype
    Array

Информация

  • Город
    Array

Контакты

  • Skype
    Array

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

6 861 просмотр профиля
  1. А полагаете в аналогой части, до фильтра, он не насытит канал?
  2. кажется он думает шта разрабатывать аналоговые фильтры Nго-порядка проще чем цифровые )))
  3. RGMII интерфейс делается в 2х вариантах: 1) Center-aligned - когда надо формировать клок TX запаздывающий на 90* 2) Edge-aligned - клок нужен синхронный с данными, приемник сам задерживает этот клок У меня 2й случай. Поэтому убрал задержку клока. Взял от интела рекомендованые констрейны для него: proc constrain_rgmii_output_pins_edgealigned { name src_clk clk_src clk_pin data_pins } { puts "Inserting timing constraints for RGMII edge-aligned output pins $name" puts "RGMII clock : $src_clk" puts "RGMII clock source: $clk_src" puts "RGMII clock pin: $clk_pin" puts "RGMII data pins: $data_pins" ##1ns setup time and 1ns hold time ## create_generated_clock -name "${name}_tx_clk_125m" -source [get_pins "$clk_src"] [get_ports "$clk_pin"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -max -1 [get_ports "$data_pins"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -min -3 [get_ports "$data_pins"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -max -1 -clock_fall [get_ports "$data_pins"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -min -3 -clock_fall [get_ports "$data_pins"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -max -1 [get_ports "$clk_pin"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -min -3 [get_ports "$clk_pin"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -max -1 -clock_fall [get_ports "$clk_pin"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -min -3 -clock_fall [get_ports "$clk_pin"] # set_clock_groups \ # -exclusive \ # -group [get_clocks "$src_clk" "${name}_tx_clk_125m"] # Set multicycle paths to align the launch edge with the latch edge set_multicycle_path 0 -setup -end -rise_from [get_clocks "$src_clk"] -rise_to [get_clocks "${name}_tx_clk_125m"] set_multicycle_path 0 -setup -end -fall_from [get_clocks "$src_clk"] -fall_to [get_clocks "${name}_tx_clk_125m"] ## edge-aligned output ## Set false paths to remove irrelevant setup and hold analysis ##setup time, set false path, rise-->fall, fall-->rise set_false_path -rise_from [get_clocks "$src_clk"] -fall_to [get_clocks "${name}_tx_clk_125m"] -setup set_false_path -fall_from [get_clocks "$src_clk"] -rise_to [get_clocks "${name}_tx_clk_125m"] -setup ##hold time, set false path, rise-->rise, fall-->fall set_false_path -rise_from [get_clocks "$src_clk"] -rise_to [get_clocks "${name}_tx_clk_125m"] -hold set_false_path -fall_from [get_clocks "$src_clk"] -fall_to [get_clocks "${name}_tx_clk_125m"] -hold } времянка setup-hold теперь ожидаемая - выровнены совпадающие перепады клоков. но ошибка Port Rate так и осталась
  4. добавил set_false_path -from rgmii_rx_clk_125m -to [get_ports {rgmii_tx* rgmii_gtxc}] set_clock_groups -asynchronous -group {rgmii_rx_clk_125m} set_clock_groups -asynchronous -group {rgmii_clk_125m rgmii_tx_clk_125m} это не убрало проблему с Port Rate.
  5. почемуто он на остальные порты rgmii_tx_ctl, rgmii_txd* не сагрился, это может както связано с тем что rgmii_gtxc с отдельного клока (задержаного) берется: rgmii_rxc -> IO_BUF:rgmii_rxc~input -> LCELL:rgmii_tx_clk_d -> CLKCTRL: gmii_tx_clk_d~clkctrl -> ALTDDIO_OUT -> rgmii_gtxc констрейны взял у Форенчича: create_clock -period 8.000 -add -name rgmii_clk_125m [get_pins {rgmii_rxc~input|o}] #proc constrain_rgmii_input_pins { name clk_pin data_pins } # ("rgmii" "rgmii_rxc" "rgmii_rx_ctl rgmii_rxd*") create_clock -name "virt_${name}_rx_clk_125m" -period 8.000 create_clock -name "${name}_rx_clk_125m" -period 8.000 "$clk_pin" -waveform {2 6} set_input_delay -add_delay -clock "virt_${name}_rx_clk_125m" -max 1.25 [get_ports "$data_pins"] set_input_delay -add_delay -clock "virt_${name}_rx_clk_125m" -min -0.25 [get_ports "$data_pins"] set_input_delay -add_delay -clock "virt_${name}_rx_clk_125m" -clock_fall -max 1.25 [get_ports "$data_pins"] set_input_delay -add_delay -clock "virt_${name}_rx_clk_125m" -clock_fall -min -0.25 [get_ports "$data_pins"] set_false_path -rise_from [get_clocks "virt_${name}_rx_clk_125m"] -fall_to [get_clocks "${name}_rx_clk_125m"] -setup set_false_path -fall_from [get_clocks "virt_${name}_rx_clk_125m"] -rise_to [get_clocks "${name}_rx_clk_125m"] -setup set_false_path -rise_from [get_clocks "virt_${name}_rx_clk_125m"] -rise_to [get_clocks "${name}_rx_clk_125m"] -hold set_false_path -fall_from [get_clocks "virt_${name}_rx_clk_125m"] -fall_to [get_clocks "${name}_rx_clk_125m"] -hold #proc constrain_rgmii_output_pins { name src_clk clk_src clk_pin data_pins } # ("rgmii" "rgmii_clk_125m" "rgmii_rxc~input|o" "rgmii_gtxc" "rgmii_tx_ctl rgmii_txd*") create_generated_clock -name "${name}_tx_clk_125m" -source [get_pins "$clk_src"] [get_ports "$clk_pin"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -max 1 [get_ports "$data_pins"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -min -1 [get_ports "$data_pins"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -max 1 -clock_fall [get_ports "$data_pins"] set_output_delay -add_delay -clock [get_clocks "${name}_tx_clk_125m"] -min -1 -clock_fall [get_ports "$data_pins"] set_false_path -rise_from [get_clocks "$src_clk"] -fall_to [get_clocks "${name}_tx_clk_125m"] -setup set_false_path -fall_from [get_clocks "$src_clk"] -rise_to [get_clocks "${name}_tx_clk_125m"] -setup set_false_path -rise_from [get_clocks "$src_clk"] -rise_to [get_clocks "${name}_tx_clk_125m"] -hold set_false_path -fall_from [get_clocks "$src_clk"] -fall_to [get_clocks "${name}_tx_clk_125m"] -hold чтото тут нетак
  6. Здравствуйте! Имею борду alinx AC4075 c плисой EP4CE75F23C8, на несущей плате AV6045 c Phy RTL8211EG подключеным по RGMII интерфейсу. Уровни питания интерфейса RTL8211 сконфигурированы в 3,3В (перемычкой производителя) вот распиновка интерфейса обмена: set_location_assignment PIN_B3 -to rgmii_txd[3] set_location_assignment PIN_A7 -to rgmii_txd[2] set_location_assignment PIN_B1 -to rgmii_txd[1] set_location_assignment PIN_B2 -to rgmii_txd[0] set_location_assignment PIN_A9 -to rgmii_gtxc set_location_assignment PIN_C8 -to rgmii_tx_ctl set_location_assignment PIN_F2 -to rgmii_rxd[3] set_location_assignment PIN_A6 -to rgmii_rxd[2] set_location_assignment PIN_F1 -to rgmii_rxd[1] set_location_assignment PIN_A5 -to rgmii_rxd[0] set_location_assignment PIN_B6 -to rgmii_rxc set_location_assignment PIN_B10 -to rgmii_rx_ctl set_location_assignment PIN_A3 -to gmii_rx_er проект выдает такой ошику: Report Minimum Pulse Width: Found 1 results (1 violated). Worst case slack is -5.445 Tcl Command: report_min_pulse_width -multi_corner -panel_name {Minimum Pulse Width: rgmii_tx_clk_125m} -detail full_path -nworst 100 [get_clocks {rgmii_tx_clk_125m}] Delay Model: Slow 1200mV 85C Model Node rgmii_gtxc Clock rgmii_tx_clk_125m Type Port Rate Actual Width 8.000 Required Width 13.445 Slack -5.445 (VIOLATED) ЧЯНДТ? Насколько я понимаю он гворит мне что порт не умеет в мои частоты? Как правильно подключать RGMII в портам плисы? Кто побеил такое, памагите!
  7. вот поэтому их надо перекладывать в другой объект, чтоб компилятор не мог заинлайнить. И по моей практике - не инлайнит он на АРМах, надо особенно его еще уговорить заинлайнить, особенно с ключом Os
  8. по картинке которую вы положили - вам не понравилось что он сделал гото раньше чем чтото посчитал. А с какого перепугу вы решили что этого нелья делать? Что у Вас там вобще делается? вот поэтому народ и пишет что вам надо обращаться на канал рен-тв, к экстрасенсам. ну или в чат-ЖПТ песатъ Есть такой способ, но не понравится - раскидайте код по функциям глобальным (не конст), и для гарантии в другой объект их переложите, не там где вызываете. последовательность таких вызовов он не имеет права менять
  9. А собсно что вам не нравится то? Вы не потрудились привести исходник, описать что ожидаете получить, и что ломается. в чем проблема. Вы так долго будете свои картинки тут постить
  10. помойка с кучей "стандартных библиотек". линуксы свои навороты давно пропихивают в стандарт, но он на то и стандарт чтоб как в палате мер и весов неприксновенно лежать
  11. а какой буффер вы ожидаете переполнить от itoa? но так таки да, если функция неудобно, лучше свое наколхозить - из того же printf надергать
  12. тогда зачем вам printf в 16К кода? достаточно itoa, puts
  13. Ну вот я поработал с A7682 - не встретил этого дна. Так что не у всех производителей таки.
  14. Если инициализация будет кодом - то никак компилятор не соптимизирует. А если константами - то может чего то и выгорело, если бы это была не единая структура а набор.
×
×
  • Создать...