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

Массив параметров qsys, tcl

Такая задачка...

 

Есть модуль qsys:

 

module SYNC
#(
    parameter num_sync = 4,                    //число выходов синхронизаци
    parameter period_cnt = 1                    //счетчик на csi_clksys_clk, исходя из заданного периода
)
(
    input                                                                                    csi_reset_n,
    input                                                                                    csi_clksys_clk,
    //сигнал синхронизации
    output            [(num_sync - 1) : 0]                                    coe_sync
);

 

В tcl задается параметр period в мкс, из которого расчитывается значение счетчика period_cnt. А количество интерфесов coe_sync задается параметром num_sync.

 

add_parameter num_sync NATURAL 1
set_parameter_property num_sync DEFAULT_VALUE 4
set_parameter_property num_sync DISPLAY_NAME "Number of sync signals"
set_parameter_property num_sync TYPE NATURAL
set_parameter_property num_sync UNITS None
set_parameter_property num_sync ALLOWED_RANGES {1:16}
set_parameter_property num_sync HDL_PARAMETER true

#Период синхроимпульсов, мкс
add_parameter period NATURAL 1
set_parameter_property period DEFAULT_VALUE 10000
set_parameter_property period DISPLAY_NAME "Period, mks"
set_parameter_property period TYPE NATURAL
set_parameter_property period UNITS None
set_parameter_property period ALLOWED_RANGES {1:5000000}
set_parameter_property period HDL_PARAMETER true

#значение счетчика на системной частоте исходя из периода
add_parameter period_cnt NATURAL 1
set_parameter_property period_cnt DERIVED true
set_parameter_property period_cnt DISPLAY_NAME "Period cnt, ticks"
set_parameter_property period_cnt TYPE NATURAL
set_parameter_property period_cnt ALLOWED_RANGES {1:1000000000}
set_parameter_property period_cnt HDL_PARAMETER true

add_parameter clksys_rate INTEGER
set_parameter_property clksys_rate SYSTEM_INFO CLOCK_RATE
set_parameter_property clksys_rate SYSTEM_INFO_ARG clksys

# 
# connection point sys_reset
# 
add_interface sys_reset reset end
set_interface_property sys_reset associatedClock clksys
set_interface_property sys_reset synchronousEdges DEASSERT
set_interface_property sys_reset ENABLED true

add_interface_port sys_reset csi_reset_n reset_n Input 1


# 
# connection point clksys
# 
add_interface clksys clock end
set_interface_property clksys clockRate 0
set_interface_property clksys ENABLED true

add_interface_port clksys csi_clksys_clk clk Input 1

proc elaborate {} {

    # Generate sync ports
    for {set i 0} {$i < [ get_parameter_value num_sync ]} {incr i} {
        add_interface uart_sync$i conduit start
        set_interface_property uart_sync$i associatedClock ""
        set_interface_property uart_sync$i associatedReset ""
        set_interface_property uart_sync$i ENABLED true
        
        add_interface_port sync$i coe_sync_$i sync_pulse Output 1
        set_port_property coe_sync_$i FRAGMENT_LIST "coe_sync@$i"
    }

    # Считаем значение делителя из периода
    set divider_var [ expr [ get_parameter_value clksys_rate] / 1000 * [ get_parameter_value period] / 1000 - 1]
    set_parameter_value period_cnt $divider_var

}

 

 

Проблема в том, что вычисленный параметр period_cnt один на все интерфейсы sync.

А хотелось бы, чтобы для каждого интерфейса был свой параметр. Число параметров чтобы задавалось параметром num_sync. В интерфейсе задания параметров модуля в qsys должны появиться num_sync строк с параметрами периода.

 

Это возможно?

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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