Altera dev board. Проблемы с GPIO

Думаю, что владельцы альтеровских плат разработчика либо сталкивались с такой проблемой, либо уже знают ее решение.
Итак, имеется отладочная плата DE2, на нее выведен 40 пиновый разъем GPIO (general purpose inout ).
Создаю проект, импортирую pin assignments из csv файла. Сам GPIO — Это 38 проводная шина.
Мой проект содержит приемник и передатчик uart. формируем байт для передатчика с помощью свитчей, что распаяны на плату, индицируем принятый байт светодиодами. Загвоздка приключилась вот с чем. Выход передатчика хотел подцепить на GPIO[26], вход приемника на GPIO[28], но квартус пишет ошибку: «port GPIO is declared more than once».
Собсно проблему решил переобозначением в Assignment Editon конкретно этих пинов на TxOut и RxIn.

А теперь вопрос: есть ли возможность часть бит разъема GPIO использовать как входы, а часть как выходы не меняя их имен в Pin Assignment? И если да, то как? Вроде у Petrovich'а есть DE nano?

кусочек toplevel файла:

module uart(CLOCK_50, SW, KEY, LEDG, LEDR, GPIO);
input CLOCK_50;
input [17:0] SW;
input [3:0] KEY;
output [17:0] LEDR;
output [8:0] LEDG;
input [26:26]GPIO;
output [28:28]GPIO;

...

endmodule
  • 0
  • 02 декабря 2011, 13:32
  • tda2030

Комментарии (13)

RSS свернуть / развернуть
подозреваю, что так низя, но сомневаться меня заставляет тот факт, что колодка GPIO определена как одна шина. Немножко странно, если учесть то, что она может использоваться как разъем для подключение периферии (данные от периферии к плате и наоборот)
0
module uart(CLOCK_50, SW, KEY, LEDG, LEDR, GPIO);
input [26:26]GPIO;
output [28:28]GPIO;

что такое 28:28???

>есть ли возможность часть бит разъема GPIO использовать как входы, а часть как выходы

возможно все :),
ключевое слово inout

inout GPIO;

reg OE;
wire OUT;
assign GPIO = OE? OUT: 1'bz;

соответственно при чтении GPIO будет читаться состояние GPIO,
а при записи OE<=1, GPIO станет выходом.
0
  • avatar
  • _pv
  • 02 декабря 2011, 14:47
output [28:28] GPIO — Объявление одного 28го бита шины GPIO как выхода. Придумал не сам, видел в одном из примеров Альтеровских обучалок
Если сделать как
output [28] GPIO, то тут же ошибка «can't declare packed array dimensin with a single-valued range».

что до inout, да, думал про это, но не совсем нравится подход, но пока к двунаправленным битам (шинам) как-то настороженно отношусь. Возможно это объясняется небольшой пока практикой работы с ПЛИС

зы. кстати да, а если декларировать выход (wire, не reg) и нифига к нему не подключить… там ж ведь z будет?
0
ну если просто декларировать wire и ни разу его не использовать — то синтезатор его выкинет )
Если подключить его только к одному сигналу — вот тогда z будет.
Как-то так
0
ну да, я это и имел ввиду. спасибо. :)
кстати да, оптимизация синтезатора — это еще один инструмент для дебаггинга. Если ты написал код, а LEшек слишком мало для него, наверняка что-то недоподключил или сделал так, что это устройство не задействовано и синтезатор его выкинул нафиг
0
upd: только что смотрел альтеровское видео. Так вот, там группа этих GPIO была продекларирована как раз как inout.
По ходу дела вопрос снимается, если, конечно, нет других решений :)

Спасибо :)
0
Вы каким-нибудь System Builderom пользовались? У меня с ним косяк был.
У на плате этих GPIO 2 штуки. И он мне сгенерил проект, в котором у них обоих одинаковые имена были )))
Причем эти GPIO у меня оба хитрые. Там 2 пина — земля, 2 — плюс питания, а еще есть пины, которые могут работать только в одну сторону(вроде только на вход, точно не помню) из ограничений самого Циклона.
0
DE2 — та что на 4-м циклоне и 120к LE? Где/по чем купили? )
0
сильно заморачиваться не стал, купил у производителя:
www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=502&PartNo=2

на e-bay нашел одну бушную DE2-70, но цена была не намного дешевле новой 2-70.
0
за 600 баксов?
Или академик?
0
полная
0
если посмотреть на ее стоимость у нас, в РФ, то это еще не так дорого :)
0
Разобрался с тем, как это правильно делать. в моем примере GPIO декларируется как inout, а затем, используя мегафункцию ALTIOBUF (довольно много настроек), определять, что это будет — вход, выход или вход/выход
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.