Jump to content
    

BIDIR Verilog (quartus)

woofer46, у Вас вывод dataInIO модуля соединен с двунаправленной ножной dataIO через мультиплексор lpm_mux2. Т.е. эти цепи физически разделены и ножка dataIO на вход не работает.

Да, кажется одну из ошибок я понял

Share this post


Link to post
Share on other sites

module 3statePort
(
inout [7:0]dataInIO, // двунаправленный порт
input direction, // сигнал управления
input [7:0] dataIn, // данные на передачу (Эти данные я буду передавать?)
output[7:0]dataOUT // данные с приема(Тут полученные данные извне)
);
assign dataInIO  = direction ? dataIn : 8'bz;  //Если дир == 1 на двунаправленные порт dataInIO будет выводиться значение dataIn, иначе ножка как вход z-state
assign dataOUT = direction ? 8'h00 : dataInIO; // Если дир == 1  dataOUT будет выводится данные dataInIO, иначе нули

 

Гуру дело говорит!

В общем-то самое правильное было бы - вытащить из блока ноги "dataOUT", "dataIn" и "direction" в Top, а там уже использовать библиотечный модуль BUFFIO

 

woofer46, у Вас вывод dataInIO модуля соединен с двунаправленной ножной dataIO через мультиплексор lpm_mux2. Т.е. эти цепи физически разделены и ножка dataIO на вход не работает.

 

Спасибо! Изменил структуру, теперь у меня threestatePort, в зависимости от dir коммутирует на dataOUT или dataInIO или dataIn.

Дальше dataOUT расходится по модулям.

module threestatePort
(
input clk80,
inout [7:0]dataInIO, // двунаправленный порт
input direction, // 1 - выдача, 0 - вход
input [7:0] dataIn, // данные на передачу (то что передадим)
output[7:0]dataOUT // данные с приема (эти данные придут извне)
);

assign dataInIO  = direction ? dataIn : 8'bz;  //Если dir==1 то на dataInIO выдаем dataIn
assign dataOUT = dataInIO; //Присваиваем значение dataInIO, dataOUT будем смотреть когда dir 0 (слушаем извне)
endmodule

 

post-86990-1451394634_thumb.png

Share this post


Link to post
Share on other sites

module threestatePort
(
input clk80,
inout [7:0]dataInIO, // двунаправленный порт
input direction, // 1 - выдача, 0 - вход
input [7:0] dataIn, // данные на передачу (то что передадим)
output[7:0]dataOUT // данные с приема (эти данные придут извне)
);

assign dataInIO  = direction ? dataIn : 8'bz;  //Если dir==1 то на dataInIO выдаем dataIn
assign dataOUT = dataInIO; //Присваиваем значение dataInIO, dataOUT будем смотреть когда dir 0 (слушаем извне)
endmodule

Ужасное оформление текста. А это верный путь к большому числу ошибок!

Смотрите "Краткий Курс", главу о "написании кода"...

 

Share this post


Link to post
Share on other sites

Теперь другое дело. А зачем Вам тактовый сигнал в модуле threestatePort?

Лишний, подчистил)

 

Еще раз спасибо =)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...