Я.К. 0 29 апреля, 2011 Опубликовано 29 апреля, 2011 · Жалоба Понадобилась двунаправленная шина, что-то никак не разберусь, как её сделать. Решил сначала сделать тестовый модуль, чтобы понять, что к чему. Вроде всё по науке, однако он, зараза, всё равно не работает. По идее, по OE он должен что-то выдавать на bidirPort'у, а по !OE - просто читать с bidirPort'а и передавать на outPort. ModelSim компилирует, но смоделировать не может. Как исправить положение? Модуль: `timescale 1 ns/100 ps; module BidirModule ( input wire oe, inout[7:0] bidirPort, output[7:0] outPort ); assign bidirPort = oe ? 8'hFF : 8'bZZZZZZZZ; assign outPort = !oe ? 8'hZZ : bidirPort; endmodule Тестбенч: `timescale 1 ns/100 ps; module BidirModuleTB; wire[7:0] testOut; BidirModule underTest ( .oe(1'b0), .bidirPort(8'hFF), .outPort(testOut) ); endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 29 апреля, 2011 Опубликовано 29 апреля, 2011 · Жалоба Может условия перепутали и надо так? assign outPort = !oe ?bidirPort:8'hZZ; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
id_gene 0 3 мая, 2011 Опубликовано 3 мая, 2011 · Жалоба ModelSim компилирует, но смоделировать не может. Потому что у вас в тесте нет активности, все статическое. Вам надо задать переключения oe. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться