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

Двунаправленные сигналы в VERILOG.

Вопросы:

1. почему при cs=1 && wr_en=1 активно 3-е состояние - 16'bZ.

по логике: (a=1) ? true : false

2. почему данные с data_f = 0123 не передаются на выходную шину data_out_nii, а появляется какая-то С480?

или моделировать в квартусе двунаправленную шину и выставлять на ней данные для чтения некорректно?

1. Не третье: на data_f_ = XXX0 - как раз из-за перехода шины в активное состояние и столкновений сигналов.

2. Ну почему же, все как описано: в состоянии 5 данные с data_f_ = С480 передаются на data_out_nii. А вот почему на data_f_ это формируется - смотрите сами. ;)

PS. Да, кстати, С480 - это перевернутые 0123 ;)

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


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

Хорошо, попробую дать пару тактов на считывание с шины. может и успеет.

мне тоже интересно, почему это формируется на data_f и к тому же перевернутое...

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


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

Хорошо, попробую дать пару тактов на считывание с шины. может и успеет.

мне тоже интересно, почему это формируется на data_f и к тому же перевернутое...

Да все и так работает как надо. А шину, как вы собрали наоборот, так она и показывается.

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


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

И все-таки пока не понял, почему работает именно так, а не иначе.

 

Возьмем рассмотренный до этого пример:

 

module tristate_buff
#(parameter bus_width=16)
(input clk,
input wire [bus_width-1:0] data_in,
output reg [bus_width-1:0] data_out,
inout wire [bus_width-1:0] DQ,
input wire tristate_n
);

assign DQ = (tristate_n == 1'b0) ? 16'bZ : data_in;

always @(posedge clk) 
    data_out <= DQ;

endmodule

 

управляющий сигнал tristate_n=0, то DQ=16'bZ - Z состояние

если tristate_n = 1, то data_out = DQ

post-44580-1269890030_thumb.jpg

 

так почему на времянке получается далеко не так?

данные со входа на DQ не пишутся совершенно,

а при tristate_n = 0 data_out=DQ, но ведь по логике это происходит при tristate_n = 1

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


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

так почему на времянке получается далеко не так?

данные со входа на DQ не пишутся совершенно,

а при tristate_n = 0 data_out=DQ, но ведь по логике это происходит при tristate_n = 1

Ну чего не так-то? Все как описано. Вы наверное не сильно различаете DQ и DQ_ - это разные шины:

одна из них - то что вы задаете на inout, другая - то что реально на пине. В начале X из-за того что вы снаружи на шину задаете нули, а из схемы идет 3311 и в результате на DQ_ иксы. Я же написал - столкновения сигналов.

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


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

А как понять, что происходит на шинах DQ и DQ_, когда приходит tristate_n=0?

выполняется условие:

1. DQ = 16'bZ

2. data_out = DQ

 

т.е. на пине будет 3-е состояние для внешнего устройства, а с внутреннего inout я забираю выставленное мною на времянке значение?

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


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

Необходимо решить такую задачу: имеется cpld, которая мультиплексирует сигналы между контроллером ethernet и двумя процессорами. Выбор процессора осуществляется перемычками на плате. Один из мультиплексируемых сигналов является двунаправленным, причем протокола обмена у меня нет, тоесть я не знаю направления передачи данных в конкретный момент времени. Собственно вопрос: можно ли соединить выходы в некотором роде "напрямую", чтобы cpld была "прозрачной" для сигнала?

?

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


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

Собственно вопрос: можно ли соединить выходы в некотором роде "напрямую", чтобы cpld была "прозрачной" для сигнала?
Нет. Вам нужен аналоговый мультиплексор

 

 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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