Jump to content

    

andrew_b

Свой
  • Content Count

    2336
  • Joined

  • Last visited

Community Reputation

0 Обычный

1 Follower

About andrew_b

  • Rank
    Гуру

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

7998 profile views
  1. Аж два. # Center-Aligned Rising Edge Source Synchronous Inputs # # For a center-aligned Source Synchronous interface, the clock # transition is aligned with the center of the data valid window. # The same clock edge is used for launching and capturing the # data. The constraints below rely on the default timing # analysis (setup = 1 cycle, hold = 0 cycle). # # input ____ __________ # clock |_________| |_____ # | # dv_bre | dv_are # <------>|<------> # __ ________|________ __ # data __XXXX____Rise_Data____XXXX__ # set input_clock <clock_name>; # Name of input clock set input_clock_period <period_value>; # Period of input clock set dv_bre 0.000; # Data valid before the rising clock edge set dv_are 0.000; # Data valid after the rising clock edge set input_ports <input_ports>; # List of input ports # Input Delay Constraint set_input_delay -clock $input_clock -max [expr $input_clock_period - $dv_bre] [get_ports $input_ports]; set_input_delay -clock $input_clock -min $dv_are [get_ports $input_ports]; # Report Timing Template # report_timing -from [get_ports $input_ports] -max_paths 20 -nworst 1 -delay_type min_max -name src_sync_cntr_rise_in -file src_sync_cntr_rise_in.txt; # Center-Aligned Falling Edge Source Synchronous Inputs # # For a center-aligned Source Synchronous interface, the clock # transition is aligned with the center of the data valid window. # The same clock edge is used for launching and capturing the # data. The constraints below rely on the default timing # analysis (setup = 1 cycle, hold = 0 cycle). # # input _________ ____ # clock ____| |_________| # | # dv_bfe | dv_afe # <------>|<------> # __ ________|________ __ # data __XXXX____Fall_Data____XXXX__ # set input_clock <clock_name>; # Name of input clock set input_clock_period <period_value>; # Period of input clock set dv_bfe 0.000; # Data valid before the falling clock edge set dv_afe 0.000; # Data valid after the falling clock edge set input_ports <input_ports>; # List of input ports # Input Delay Constraint set_input_delay -clock $input_clock -max [expr $input_clock_period - $dv_bfe] [get_ports $input_ports] -clock_fall; set_input_delay -clock $input_clock -min $dv_afe [get_ports $input_ports] -clock_fall; # Report Timing Template # report_timing -from [get_ports $input_ports] -max_paths 20 -nworst 1 -delay_type min_max -name src_sync_cntr_neg_in -file src_sync_cntr_neg_in.txt;
  2. Вот какой шаблон есть в Вивадо: # Center-Aligned Double Data Rate Source Synchronous Inputs # # For a center-aligned Source Synchronous interface, the clock # transition is aligned with the center of the data valid window. # The same clock edge is used for launching and capturing the # data. The constraints below rely on the default timing # analysis (setup = 1/2 cycle, hold = 0 cycle). # # input ____________________ # clock _____________| |_____________ # | | # dv_bre | dv_are dv_bfe | dv_afe # <------>|<------> <------>|<------> # _ ________|________ ________|________ _ # data _XXXX____Rise_Data____XXXX____Fall_Data____XXXX_ # set input_clock <clock_name>; # Name of input clock set input_clock_period <period_value>; # Period of input clock (full-period) set dv_bre 0.000; # Data valid before the rising clock edge set dv_are 0.000; # Data valid after the rising clock edge set dv_bfe 0.000; # Data valid before the falling clock edge set dv_afe 0.000; # Data valid after the falling clock edge set input_ports <input_ports>; # List of input ports # Input Delay Constraint set_input_delay -clock $input_clock -max [expr $input_clock_period/2 - $dv_bfe] [get_ports $input_ports]; set_input_delay -clock $input_clock -min $dv_are [get_ports $input_ports]; set_input_delay -clock $input_clock -max [expr $input_clock_period/2 - $dv_bre] [get_ports $input_ports] -clock_fall -add_delay; set_input_delay -clock $input_clock -min $dv_afe [get_ports $input_ports] -clock_fall -add_delay; # Report Timing Template # report_timing -rise_from [get_ports $input_ports] -max_paths 20 -nworst 2 -delay_type min_max -name src_sync_cntr_ddr_in_rise -file src_sync_cntr_ddr_in_rise.txt; # report_timing -fall_from [get_ports $input_ports] -max_paths 20 -nworst 2 -delay_type min_max -name src_sync_cntr_ddr_in_fall -file src_sync_cntr_ddr_in_fall.txt;
  3. Выделение фронта занимает три (максимум четыре такта) клока 150 МГц. Но поскольку у вас данные стабильны в узком окне (всего по 5 нс до и после фронта), то такой метод не подойдёт. Обычно передача в другой домен делается через FIFO. Но в данном случае проще сделать через то же выделение клока, но только после входных регистров. Да я уже понял. Надо дочитывать тему до конца, прежде чем отвечать.
  4. Вам говорят, что клок, сопровождающий данные, у вас всего лишь 12 МГц, что в 12 раз меньше внутренней тактовой FPGA (150 МГц). При таком раскладе использовать 12 МГц как клок смысла нет. Выделите у этого низкого клока фронты вашей высокой тактовой и защёлкивайте по этим стробам данные.
  5. Хорошо. А на основе чего они создаются? Не из /dev/astral же всё берется: вы в GUI накидываете файлы, выставляете опции. На основе всего вот этого и формируются файлы. В тоже время вы пишете: А как иначе? Вы либо формируете список файлов через GUI, либо создаёте *.prj файлы руками.
  6. Да ладно. Байты бывают разные. Поэтому, например, во всяких RFC используется не термин "байт", а термин "октет". Вот октет = 8 бит.
  7. Ну разумеется. Проект состоит из файлов. Я не понимаю. Делает что?
  8. У вас есть уже сформированные файлы? Вот и перенесите их содержимое в тиклевый скрипт.
  9. Так в вашеи тиклевом скрипте и формируйте. Открыть файл, записать несколько строк, закрыть файл. http://tclstudy.narod.ru/tcl/lesson24.html
  10. Где вы его ищете? Ищите в SignalTap:Pre-synthesis.
  11. Это зависит не от Квартуса, а от FPGA. Не во всех FPGA можно проинициализировать блочную память. Например, в 10M16DAU324I7G нельзя.
  12. type array_tube_data is array (0 to 20) of TUBE_DATA; signal data : array_tube_data; data(0).L_ADC_VAL_3MS <= ...; ... <= data(20).R_DAC_VAL_3;