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

Подтяжка входов

Сейчас перевожу вход в третье состояние записав в него 1'dZ, а хочется перевести его в "слегка подтянутое к питанию". Чую, что такая возможность етсь (неиспользуемые пины можно подтянуть), но не могу найти синтаксис.

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


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

В смысле VHDL'а это делается так:

 

some_std_logic_signal <='H'; --pullup

some_std_logic_signal <='L'; --pulldown

 

Вопрос в том, будет ли оно синтезироваться. Че-то не видел описания синтеза такой конструкции в описании XST.

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


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

Сейчас перевожу вход в третье состояние записав в него 1'dZ, а хочется перевести его в "слегка подтянутое к питанию". Чую, что такая возможность етсь (неиспользуемые пины можно подтянуть), но не могу найти синтаксис.
На выбор:

  1. Примитивы pullup/pulldown
  2. Типы wire: tri0, tri1
  3. Присваивания в wire/assign с явно заданным strength
PS. Ничего из этого не синтезируется :crying:

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


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

Как это, как это?

Примитивы синтезируются! В смысле вставляются при имплементации!

А что за ПЛИС? У Xilinx можно также в UCF-файле указать параметр пина PULLUP или PULLDOWN.

Короче, надо наверное сказать, что за ПЛИС у Вас.

 

Просто вопрос в теме "VHDL" - вот и отвечается с точки зрения ЯЗЫКА, а не реализации в железе.

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


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

Как это, как это?

Примитивы синтезируются! В смысле вставляются при имплементации!

В доке на XST явно написанно, что все эти конструкции игнорируются :(

Так что НЕ ВСЕ синтезаторы их понимают

У Xilinx можно также в UCF-файле указать параметр пина PULLUP или PULLDOWN.
Угу, но не в Verilog'е (точнее в нем тоже можно, но в виде прагм/директив для синтезатора, а не конструкций языка)

 

Похоже придется сделать еще одну ревизию платы :( с резисторами.
Ищите в констрейнах, должно быть :rolleyes:

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


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

Сейчас перевожу вход в третье состояние записав в него 1'dZ, а хочется перевести его в "слегка подтянутое к питанию". Чую, что такая возможность етсь (неиспользуемые пины можно подтянуть), но не могу найти синтаксис.

 

А Вы задачу озвучьте. Зачем это надо. Одно дело резисторы экономить на шине с открытым коллектором, другое дело в z состояние входы (Неиспользуемые), средствами пакета.

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


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

На выбор:

  1. Примитивы pullup/pulldown
  2. Типы wire: tri0, tri1
  3. Присваивания в wire/assign с явно заданным strength
PS. Ничего из этого не синтезируется :crying:

Пишу на Verilog. Для моделирования необходимо следующее:

Есть модуль, входы которого при определенных условиях закорачиваются на его выходы. Если к данным входам модуля ничего не цепляется, то на соответствующих выходах должна быть слабо подтянутая единица. Если же на какой либо вход попадает 0, то соответствующий выход также должен стать 0. Как это написать? Целый день бьюсь...

 

 

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


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

Fynjisx,

module pu (input i, output o);

pullup (weak1) (i);  // или tri1 i; или pullup (i); 
assign o = i;   

endmodule

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


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

Сейчас перевожу вход в третье состояние записав в него 1'dZ, а хочется перевести его в "слегка подтянутое к питанию". Чую, что такая возможность етсь (неиспользуемые пины можно подтянуть), но не могу найти синтаксис.

3 способа как минимум на выбор (на примере ISE + XST ):

1. Пользовать примитив PULLUP.

2. Пользовать атрибут верилоговский с одноимённым названием.

3. Не совсем средствами языка, однако проблему решает : задать constraint в UCF файле.

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


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

Сейчас перевожу вход в третье состояние записав в него 1'dZ

 

В современном цифровом дизайне очень рекомендуется избегать tristate logic и юзать BUS Multiplexing, т.к например Encounter Test просто хренеет от tristate contention и если (вдруг) тебе захочется продать свои IP кому-то, то лучше сразу делать их реюзабельными. :1111493779:

 

Вот что пишут Michael_Keating, Pierre_Bricaud в своем "Reuse Methodology Manual" (Kluver Academic Publishers, 2002)

 

 

3.5.2 Tristate vs. Mux Buses

 

When bus structures first migrated from boards onto chips, there was some contro-

versy over whether to use a tristate bus or a multiplexer-based bus. Tristate buses are

popular for board-level design, because they reduce the number of wires in the design.

However, tristate buses are problematic for on-chip interconnect. It is essential to

ensure that only one driver is active on the bus at any one time; any bus contention,

with multiple drivers active at the same time, can reduce the reliability of the chip sig-

nificantly. For high-performance buses, where we want to drive the bus on nearly

every cycle, this requirement can produce very timing-critical, technology-dependent

designs. Similarly, tristate buses must never be allowed to float; if they float to thresh-

old voltage, they can cause high currents in the receiver, again reducing long-term

chip reliability. Either some form of bus-keeper, or a guarantee that exactly one driver

is driving the bus at all times, is required. This requirement is particularly difficult to

meet during power-on.

 

Rule – For these reasons, we consider multiplexer-based buses to be the only accept-

able architecture for on-chip interconnect. Tristate buses should never be used on

chip.

 

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


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

Подтяжка входов, Как это пишется в верилоге

Похоже придется сделать еще одну ревизию платы с резисторами.

Вы не с той стороны "копаете". Вам нужно посмотреть IO-примитивы для вашей конретной модели ПЛИС и напрямую поставить их в проект. Далеко не всё, что позволяет Verilog, можно реализовать. Повторюсь "пробовал, не синтезируется" - это не показатель. Отвлекитесь от этих попыток и возьмите документацию на Вашу ПЛИС.

 

3. Не совсем средствами языка, однако проблему решает : задать constraint в UCF файле.

Вариант. Но проект "в железе" и проект "на модели" тогда будут отличаться.

 

В современном цифровом дизайне очень рекомендуется избегать tristate logic и юзать BUS Multiplexing, т.к например

Ну вроде бы о том, чтобы использовать tristate logic внутри чипа речь и не идет.

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


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

Fynjisx,

module pu (input i, output o);

pullup (weak1) (i);  // или tri1 i; или pullup (i); 
assign o = i;   

endmodule

а если вектор?

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


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

Также:

module pu (input [1:0] i, output [1:0] o);

tri1 [1:0] i; // или pullup (i[0]); pullup (i[1]); 

assign o = i;   

endmodule

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


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

Вы где слабую единицу планируете применить? В синтезируемом модуле или в модуле тестового воздействия?

 

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


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

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

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

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

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

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

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

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

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

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