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

Непрерывное присвоение на Verilog

также и выходные шины данных мешать можно, при условии, что невыбранный модуль выдает на нее нули - передается всем одна шина типа wor (или wand - если невыбранный модуль вылает FFFFF).

 

..или wire, если невыбранный модуль передает ZZZZ - вариант? ну всмысле обычная шина без подтяжки и буферы с третьим состоянием.

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

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


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

..или wire, если невыбранный модуль передает ZZZZ - вариант?

не, не вариант. По правилам языка, тогда нужен тип "tri/trior/triand/trireg/tri0/tri1", но они, на сколько я понимаю, не синтезируемы. А конвертация внутренних тристабильных шин для типа wire реализована для синтеза редко где.

 

из стандарта:

A wire net can be used for nets that are driven by a single gate or continuous assignment. The tri net type can be used where multiple drivers drive a net.

 

UPD:

Зато, это вариант, если технология позволяет создавать на кристалле реальные тристабильные шины.

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


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

ISE все шины собранные в кучу которые данные или ZZZZ прекрасно переваривает и заменяет по-моему шиной или. Я как то смотрел как он делает, но сейчас забыл)

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


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

А конвертация внутренних тристабильных шин для типа wire реализована для синтеза редко где.

 

работаю в ISE 14.7, шину с третьем состоянием переваривает нормально. Повесил киперы (приметив KEEPER) на всякий случай..

 

Кстати, в ISE в Language Templates (verilog->Synthesis Constructs->Coding Examples->Bi-directional I/O->Unregistered) описаны примеры использования двунаправленных портов, и судя по всему тристабильных.

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


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

а использовать киперы разве корректно? Они же 3 состояние заменять прошлым и весь мультиплексор рухнет, нет?

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


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

а использовать киперы разве корректно? Они же 3 состояние заменять прошлым и весь мультиплексор рухнет, нет?

 

есть шина

wire [7:0] data_bus;

KEEPER (.O(data_bus[0]));

KEEPER (.O(data_bus[1]));

KEEPER (.O(data_bus[2]));

.......

 

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

В каждом модуле конструкция типа:

 

inout [7:0] data_bus;

input mem_RE;

reg [7:0] memory;

assign data_bus = mem_RE ? memory : 8'hZZ;

 

Я ни чего некоректного тут не вижу, может быть кто-то из гуру меня поправит.

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

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


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

работаю в ISE 14.7, шину с третьем состоянием переваривает нормально.

ISE и должен. Потому, что в древних кристаллах были физические тристабильные буфера. Ну а от совместимости, когда их не стало, им деваться и некуда. И опасно это тем, что потом, вдруг, на какой-то другой архитектуре это ляжет на реальные тристабильные шины, с какими нибудь последствиями, например, в виде коллизий...

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


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

В Альтерах цепи с тремя состояниями преобразуются в обычную логику, мультиплексоры. Можно использовать.

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


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

А вот интересно, как обстоит дело с энергопотреблением? наверное, у монтажного ИЛИ утечки куда больше чем у ИЛИ на логических элементах?

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


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

и вот тут у меня возник вопрос, что есть монтажное или, и что есть логические элементы?

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


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

и вот тут у меня возник вопрос, что есть монтажное или, и что есть логические элементы?

Это разные методы описать одно и то же, используя разные средства языка описания аппаратуры. Если рассматривать в рамках темы - оператора непрерывного присваивания Verilog. В железе - монтажное ИЛИ делается соединением выходов с открытым эмиттером в одну цепь, или соединением выходов через диоды в одну цепь. А как это описание синтезатор реализует в железе, зависит от возможностей той технологии, на которой это реализуется - это уже надо смотреть конкретные возможности конкретной технологии.

 

PS

А еще для wired logic в верилоге есть всякие nmos, pmos, tranif0, tranif1, и подобное.... Но, тоже, в основном, не синтезируемое.

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


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

и вот тут у меня возник вопрос, что есть монтажное или, и что есть логические элементы?
Вы беспросветный программист ))) (по складу ума)

 

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


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

ну прекрасно, а скажите мне, ваши логические элементы не сведутся в итоге к транзисторам?

 

то есть вопрос что больше потребляет монтажное ИЛИ или ЛОГИЧЕСКИЕ элементы по мне поставлен не корректно. Потому что схема (ну я опускаю суммирование при помощи диодов) в целом одна и та же, и там и там в итоге будут транзисторы. Остается вопрос быстродействия, потому что даже схему на диодах можно так задавить резисторами, что она будет потреблять микроамперы, другое дело что и в 1 будет выходить долго долго....

 

И кто теперь беспросветный программист? ;) хоть и по складу ума...

 

Может я упустил момент какого-то прогресса, и сейчас есть какие-то Логические элементы которые в итоге собраны не на транзисторах?

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


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

Синтезатор ничего в железе не реализует. Синтезатор создает описание вашего проекта ввиде списка цепей - RTL. Затем Имплементатор переводит его на ту технологию, которая используется, сопоставляя логическую схему существующим у него компонентам. И потом роутер уже разводит это по кристаллу (в случае FPGA) Таким образом, конечно в конечном итоге, все оказывается собранным на транзисторах, но логические функции в FPGA реализуются на основе LUT ( это память где записаны всевозможные результаты).

 

Таким образом, и wire и reg это математические сущности, играющие по определенным правилам. В конечном итоге, схему синтезированную из Veriloga, можно реализовать хоть в майнкрафте.

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


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

Синтезатор ничего в железе не реализует. Синтезатор создает описание вашего проекта ввиде списка цепей - RTL. Затем Имплементатор переводит его на ту технологию, которая используется, сопоставляя логическую схему существующим у него компонентам.
Не знаю, что за имплементатор Вы имеете в виду, но после операции синтез (выполняемой для Xilinx программой xst.exe) создаётся список цепей - тут Вы правы. Но упомянутые цепи соединяют, как раз, те аппаратные примитивы, которые существуют в ПЛИС, которая используется.

 

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


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

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

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

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

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

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

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

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

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

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