реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Массив параметров qsys, tcl, как это сделать?
torik
сообщение Sep 18 2017, 09:16
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 103
Регистрация: 1-11-05
Пользователь №: 10 359



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

Есть модуль 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 строк с параметрами периода.

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






--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th December 2017 - 05:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016