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

Как сделать по умолчанию в SPARTAN3 все выходные сигналы LVTTL?

По умолчанию при программировании Spartan2 ISE ставит все IOB в LVTTL, в Spartan3 ISE по умолчанию ставит в LVCMOS25.

Как сделать по умолчанию в SPARTAN3 все выходные сигналы LVTTL? И не мучаться с назначением в UCF каждого пина в установку LVTTL, как-то этот вопрос ребята из Xilinx не продумали...

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


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

По умолчанию при программировании Spartan2 ISE ставит все IOB в LVTTL, в Spartan3 ISE по умолчанию ставит в LVCMOS25.

Как сделать по умолчанию в SPARTAN3 все выходные сигналы LVTTL? И не мучаться с назначением в UCF каждого пина в установку LVTTL, как-то этот вопрос ребята из Xilinx не продумали...

 

.ucf наиболее простой способ изменения IOSTANDARD

 

####################################################

Net fpga_0_DDR_SDRAM_16Mx16_DDR_Clk_pin LOC=J5;

Net fpga_0_DDR_SDRAM_16Mx16_DDR_Clk_pin IOSTANDARD = SSTL2_I;

....

Net fpga_0_Ethernet_MAC_PHY_tx_clk_pin LOC=T7;

Net fpga_0_Ethernet_MAC_PHY_tx_clk_pin IOSTANDARD = LVCMOS33;

####################################################

 

для map никаких ключиков связаных с уровнями IO нет.

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


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

По умолчанию при программировании Spartan2 ISE ставит все IOB в LVTTL, в Spartan3 ISE по умолчанию ставит в LVCMOS25.

Как сделать по умолчанию в SPARTAN3 все выходные сигналы LVTTL? И не мучаться с назначением в UCF каждого пина в установку LVTTL, как-то этот вопрос ребята из Xilinx не продумали...

 

хмм ну ucf то вам все равно делать, вот и вколотите на все пины нужный стандарт.

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


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

MAZZI, чтобы

... не мучаться с назначением в UCF каждого пина в установку LVTTL
Вы можете помучаться в верилоге/ВХДЛе с назначением каждого пина в установку LVTTL.

Однако вариант с UCF предпочтителен.

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


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

Есть несколько неприятностей, у меня построенна система на MACRO_m4 автоматической связи регистров с программированием и с автоматическим генерированием UCF, Verilog_TOP, т.д.

Также у устройства есть стандартные шины, в данном случае некоторые сигналы могут не использоваться и они не описываются в UCF, но в Verilog_TOP они присутствуют и не исключаются (в итоге просто разводятся на любые свободные не используемые пины).

 

Т.к. из документации по Spartan3:

Если используются стандарты, требующие опорного напряжения VREF, то при установке ПЛИС семейства на плату следует руководствоваться следующими правилами подключения контактов VREF:

...

2. На все контакты VREF одного банка должно быть подано одинаковое напряжение питания.

3. В пределах одного банка блоки ввода-вывода могут быть запрограммированы на совместимость только со стандартами, которые используют одинаковое значение VREF. ...

 

У меня получалось, что все "используемые" сигналы в LVTTL, "не используемые" LVCMOS25, вот и не давало нормально развести проект. Исправил в Xilinx PACE (Create Area Constraints) "не используемые" в LVTTL. И все прошло как надо. Для себя вижу, что необходимо дорабатывать систему генерации проекта.

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


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

Скорректируйте систему генерации верхнего уровня (либо создайте дополнительно скрипт/программу на Python/Perl/Tcl/etc...), чтобы перед каждым сигналом указывался тип io-стандарта, в вашем случае

(*IOSTANDARD="LVTTL"*)

. То есть:

module top
    (
        (*IOSTANDARD="LVTTL"*)
        input  wire            TOP_LEVEL_INPUT_SINGLE,
        (*IOSTANDARD="LVTTL"*)
        input  wire [  7 : 0 ] TOP_LEVEL_INPUT_BUS,
        (*IOSTANDARD="LVTTL"*)
        output wire            TOP_LEVEL_OUTPUT_SINGLE,
        (*IOSTANDARD="LVTTL"*)
        output wire [  7 : 0 ] TOP_LEVEL_OUTPUT_BUS
    )
    
    ...

endmodule

 

Удобно полностью исключить ucf из проекта, указывая полные спецификации сигналов:

 

module top
    (
        (*LOC="AR6"*) (*IOSTANDARD="LVTTL"*)
        input  wire            TOP_LEVEL_INPUT_SINGLE,
        (*LOC="AK38"*) (*IOSTANDARD="LVTTL"*)
        input  wire [  7 : 0 ] TOP_LEVEL_INPUT_BUS,
        (*LOC="AL38"*) (*IOSTANDARD="LVTTL"*)
        output wire            TOP_LEVEL_OUTPUT_SINGLE,
        (*LOC="J31 E34 L34 K37 H31 D35 K33 K34"*) (*IOSTANDARD="LVTTL"*) (*IOBDELAY="NONE"*)
        output wire [  7 : 0 ] TOP_LEVEL_OUTPUT_BUS
    )
    
    ...

endmodule

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


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

По умолчанию при программировании Spartan2 ISE ставит все IOB в LVTTL, в Spartan3 ISE по умолчанию ставит в LVCMOS25.

Как сделать по умолчанию в SPARTAN3 все выходные сигналы LVTTL? И не мучаться с назначением в UCF каждого пина в установку LVTTL, как-то этот вопрос ребята из Xilinx не продумали...

Я пошел несколько другим путем...

Сделал софтовый инструмент, который дописывает в верхний проект буфера, входы-выходы и провода - это особенно удобно для диф пар, и в нем же я делаю назначения типов выводов. Это такая табличка, в которой колонки можно заполнять по маске. Т.е если указать маску "output", колонку "IO_standart", и текст "LVTTL", то вот таким способом все выходы будут назначены по одному клику. Это для того, чтобы быстро работать с шинами. Указал маску на название шины - и вся шина точно переписывается. Туда же из списка связей импортируются LOC'и. Далее автоматически генерятся верхние Верилоги и UCF.

См. статью "Между ISE и ViewDraw".

Изменено пользователем iosifk

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


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

Скорректируйте систему генерации верхнего уровня (либо создайте дополнительно скрипт/программу на Python/Perl/Tcl/etc...), чтобы перед каждым сигналом указывался тип io-стандарта, в вашем случае
(*IOSTANDARD="LVTTL"*)

. То есть:

module top
    (
        (*IOSTANDARD="LVTTL"*)
        input  wire            TOP_LEVEL_INPUT_SINGLE,
        (*IOSTANDARD="LVTTL"*)
        input  wire [  7 : 0 ] TOP_LEVEL_INPUT_BUS,
        (*IOSTANDARD="LVTTL"*)
        output wire            TOP_LEVEL_OUTPUT_SINGLE,
        (*IOSTANDARD="LVTTL"*)
        output wire [  7 : 0 ] TOP_LEVEL_OUTPUT_BUS
    )
    
    ...

endmodule

 

Удобно полностью исключить ucf из проекта, указывая полные спецификации сигналов:

 

module top
    (
        (*LOC="AR6"*) (*IOSTANDARD="LVTTL"*)
        input  wire            TOP_LEVEL_INPUT_SINGLE,
        (*LOC="AK38"*) (*IOSTANDARD="LVTTL"*)
        input  wire [  7 : 0 ] TOP_LEVEL_INPUT_BUS,
        (*LOC="AL38"*) (*IOSTANDARD="LVTTL"*)
        output wire            TOP_LEVEL_OUTPUT_SINGLE,
        (*LOC="J31 E34 L34 K37 H31 D35 K33 K34"*) (*IOSTANDARD="LVTTL"*) (*IOBDELAY="NONE"*)
        output wire [  7 : 0 ] TOP_LEVEL_OUTPUT_BUS
    )
    
    ...

endmodule

 

Сейчас уже Synplify поддерживает аттрибуты Verilog (*LOC="AR6"*) (*IOSTANDARD="LVTTL"*)? А то я ещё пользуюсь 8.4 и здесь он вроде не поддерживает (хотя я не проверял) :).

 

4iosifk:

Дай ссылку на "См. статью "Между ISE и ViewDraw"" :)

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


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

4iosifk:

Дай ссылку на "См. статью "Между ISE и ViewDraw"" :)

 

Ну так все там же, где и раньше. Вот вчера 5700-й был...

"Милости просим", как говорится - www.iosifk.narod.ru - статьи ... Если что найдете полезного, прекрасно.. А будут вопросы - пишите...

Буду со вторника по четверг в Москве на ЧипЭкспо, так что почту буду читать только в след. понед и в пятницу..

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


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

Удобнополностью исключить ucf из проекта, указывая полные спецификациисигналов:

Я считаю такой подход в корне неверным. Не надо загромождать rtl-кодтакими подробностями реализации, которые на синтез не влияют. Каждомусвое. Код --- в .vhd или в .v, констрейны --- в соответствующих файлах:для синтезатора --- в своих, для разводчика --- в своих.

Зачем пересинтезировать проект, если вам, скажем, потребовалось сигнал перекинуть на другой пин?

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


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

to andrew_b: а у меня на верхнем уровне код состоит только из подключений модулей, т.е. является шаблоном для работы с отдельно взятой серией плат, там загромождать особо нечего :). Сам проектированием PCB не занят, работаю с готовыми, причем стандартно на платах стоит 2 кристалла, один для общения с компом, а другой - "рабочий". Смена пина в "рабочем" обычно требует не только перекомпиляции проекта, но и серьезного общения с теми, из-за кого эта смена произошла, так как обычно только сменой пина это не обходится :).

Ну и плюс дискуссия ведется по поводу наиболее простого и удобного способа "Как сделать по умолчанию в SPARTAN3 все выходные сигналы LVTTL", а не по поводу "как я считаю нужным проектировать" :)

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


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

Как сделатьпо умолчанию в SPARTAN3 все выходные сигналы LVTTL? И не мучаться сназначением в UCF каждого пина в установку LVTTL

А wildcard воспользоваться? Написать в .ucf

NET "*" IOSTANDARD = LVTTL;

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


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

Как сделатьпо умолчанию в SPARTAN3 все выходные сигналы LVTTL? И не мучаться сназначением в UCF каждого пина в установку LVTTL

А wildcard воспользоваться? Написать в .ucf

NET "*" IOSTANDARD = LVTTL;

 

Круто! Я и забыл что в UCF таким образом можно определять параметры. Это так же означает, что можно сразу же и группы по имени определять. Хорошо, что ты это написал! :)

 

По поводу где определять ограничения в VRL_TOP или в UCF, я считаю, что тут необходимо смотреть на само ограничение, к примеру, назначение пинов я генерю только в UCF, т.к. одно и тоже устройство, я использую как на Spartan2 так и на Spartan3 (так сложилось исторически).

Минус ещё задания ограничений в VRL - у каждого синтезатора поддержка атрибутов может отличаться (к примеру, Synplify и ISE XST), поэтому я решил, что атрибуты по возможности переношу в UCF.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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