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

Altera. Правильное назначение портов.

Работая с макетной платой, я столкнулся с затруднениями в назначении входных/выходных портов.

Каждый раз, когда я хочу какой-то порт в проекте вывести на один из множества светодиодов на плате, мне приходиться обращаться к схеме или таблице соединений, чтобы посмотреть, какая ножка в ПЛИС физически связана с нужным мне светодиодом. Это не сложно, когда у меня в проекте используется только один светодиод. Проблемы появляются, когда у меня в проекте используется очень много выводов: подключены семисегментные индикаторы, микросхема SDRAM, светодиоды и пр.

Каждый раз проверять по схеме или таблице соединений, что куда идёт, очень долго, а самое главное - чревато ошибками. Мне кажется, должен быть инструмент/способ, который может существенно облегчить жизнь при назначении пинов.

Попытавшись в этом разобраться, я нашел, что Quartus создает файл с расширением .qsf, который содержит все назначения пинов в проекте. Поигравшись с этим файлом, я пришел к выводу, что можно внутри этого файла создать имя порта и указать на какую ножку микросхемы он подключен. Поскольку в проекте этот порт отсутствует, но в файле .qsf он вручную описан, то этот порт будет виден в Pin Planner'е, где ему будет присвоен статус Unknown, но так-же ему будет присвоено назначение на нужную мне ножку микросхемы. Таким образом я смогу всей периферии на макетной плате описать соответствие ножкам микросхемы. Что приведет к тому, что в HDL описании мне достаточно будет просто выходному\входному порту дать такое же имя, как порту, вручную описанному в файле .qsf. И поскольку имена совпадают, порт в HDL описании подключается к нужным мне ножкам, что и требовалось изначально.

У меня возникло ощущение, что я упустил какой-то инструмент, который позволяет сделать почти то-же самое, но меньшими усилиями, и гораздо проще, чем то, что я сейчас описал.

Уважаемые гуру, подскажите мне, правильно ли я делаю ? Можно ли так вообще поступать ? И можно ли это сделать более правильным способом ?

Изменено пользователем Flip-fl0p

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


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

Собственно, какую операцию вы хотите упростить?

 

Вы все верно описываете - один раз для конкретной платы прописываются все связи между физическими пинами и именами портов. Это можно сделать либо с помощью текстового редактора, либо с помощью GUI (того же Pin Planner'а). На выходе имеем готовый .qsf файл (может быть другое расширение). В следующем проекте просто выполняется команда "Import assignments ...". Для готовых отладочных плат такой файл обычно подготавливается производителем.

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


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

А почему не сделать назначение прямо в Pin Planner'е? Там автоматически появляются все порты top-level модуля. Так же намного удобнее.

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


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

А почему не сделать назначение прямо в Pin Planner'е? Там автоматически появляются все порты top-level модуля. Так же намного удобнее.

Можно и в Pin Planner'е делать. Просто когда есть готовый файл назначений, то его проще скопировать.

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


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

Десять раз показывал. В вериложном файле:

module Top_m (

/* Test */
 (* chip_pin = "1",
    altera_attribute = "-name io_maximum_toggle_rate 0" *)
 output		TEST,		// Test output

/* Выводы ?? используются для SignalProbe */

/* Clock 250MHz, инверсные входы LVDS */
 (* chip_pin = "91",
    altera_attribute = "-name global_signal on; -name io_standard lvds" *)
 input			PLC_N,

/* ADC1 */
 (* chip_pin = "104",
    altera_attribute = "-name io_maximum_toggle_rate 0" *)
 output		PDWN1,

 (* chip_pin = "99, 103, 121, 127, 129, 133, 144",
    altera_attribute = "-name io_standard lvds; -name pad_to_input_register_delay 0", useioff = 1 *)
 input [7:1]		S1D_N,
 (* chip_pin = "10",
    altera_attribute = "-name io_standard lvds; -name pad_to_input_register_delay 0", useioff = 1 *)
 input			S1D_P,

/* TRIG */
 (* chip_pin = "106",
    altera_attribute = "-name io_standard 2.5V; -name auto_open_drain_pins on; -name io_maximum_toggle_rate 0" *)
 output		TRHYS,

 (* chip_pin = "89",
    altera_attribute = "-name io_standard lvds" *)
 input			TRC_N,
...

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


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

Это и есть самое простое - описать все ножки сразу с понятными именами и затем лишь подключать их в top-файле.

Часто вместе с документацией к evaluation бордам идёт и файл с готовым описанием ножек.

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


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

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

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

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

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

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

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

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

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

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