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

Моделирование двунаправленных шин в MAX+plus 2

При моделировании устройства имеющего двунаправленную шину, симулятор выдаёт сотни предупреждений Warning: found logic contention at xxx us at node 'xxx'. При этом на временной диаграмме низкие уровни отображаются правильно, а там где должны быть высокие уровни - заштрихованые области. Что с этим делать или как это можно исправить?

 

Вот часть описания логики(we = 0):

input [15:0] data_in;
inout [15:0] data_out;
output we;
reg [15:0] data_latch;

assign data_out[15:0]=we?(16'bz):data_latch[15:0];

always@(posedge clk or negedge reset)
if(!reset)
   data_latch<=0;
else
   data_latch<=data_in;

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


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

Гм, не поленился, промоделировал у ся. Хотя ошибка в этом примере очевидна - we должен быть input. Как еще такое синтезатор ваш смог компилировать? :blink: Может я чего-то не понимаю?

 

А в скобках we=0 это что такое? Компилятор такие записи не понимает :)

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


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

Если ставить we входом и подать низкий уровень, то симулятор продолжает выдавать предупреждения. Мне нужно чтоб при we = 0 информация со входа после обработки попадала на выход и правильно отображалась.

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


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

Мой Квартус симулирует этот код

module Test4( data_in, data_out, we, clk, reset);

input clk;
input reset;
input [15:0] data_in;
inout [15:0] data_out;
input we;
reg [15:0] data_latch;

assign data_out[15:0]=we?(16'bz):data_latch[15:0];

always@(posedge clk or negedge reset)
if(!reset)
   data_latch<=0;
else
   data_latch<=data_in;

endmodule

 

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

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


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

Вы вообще в чем симулируете?

Я написал в теме что моделирую в MAX+plus 2. С Квартусом ещё не работал, поскольку считал что он предназначен для проектирования навороченных кристалов семейств FLEX и APEX. Наверно если проблему решить не удасться буду переходить на Квартус.

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


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

Нет у Вас никаких проблем. Просто описание проекта не полное.

У Вас нет inout [15:0] data_out;

У ВАс есть только out [15:0] data_out;

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


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

Это только часть кода, data_out используется и для считывания, направление шины переключается сигналом WE.

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


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

Работа в Квартусе отличается от работы в МАХ только тем, что Квартус поддерживает верилог 2001, а МАХ нет. Вот и все.

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


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

Работа в Квартусе отличается от работы в МАХ только тем, что Квартус поддерживает верилог 2001, а МАХ нет. Вот и все.

 

Неудержусь :)

 

Насколько мне известно MAX код с VHDL/Verilog переводит в AHDL, а потом синтезирует (или я ошибаюсь?). Дело в том что я когда начинал с CPLD альтеры так и не смог нормально заставить работать счетчик в MAX3000 на VHDL, на AHDL более навороченные проекты работали. Попытка перевести код VHDL в AHDL давала какую-то комбинаторную логику :( . C тех пор предпочитаю пользоваться нормальными синтезаторами :).

 

2 Proton

Если квартус может синтезировать под Вашу плис то лучше работайте в нем, а не в дурацком МАХ :)

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


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

чего за возня на пустом месте?

http://www.altera.com/support/examples/ver...er_bidirec.html

:santa2:

(на будущее к вопросу о моделирование: моделировать нужно програмками для моделирования а не паяльной лампой)

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


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

Благодарю всех ответивших, что наставили меня на путь истинный. Судя по ответам MAX+plus никто не использует, значит неспроста. Буду разбираться с Квартусом, тем более что даже указаный фирменный пример MAX+ моделирует с десятками предупреждений.

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


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

Указанный файл без всяких предупреждений работает при моделировании в МАХ+.

Если у Вас есть предупреждения, значит не выставили на входе bidir состояние zz в интервале oe.

Нет плохих синтезаторов. Есть кривые руки.

Да и кто Вам сказал, что Вы получите в Квартусе оптимальный код на старых кристаллах (тех, которые поддерживает МАХ+

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


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

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

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

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

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

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

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

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

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

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