LordVader 0 31 октября, 2009 Опубликовано 31 октября, 2009 · Жалоба Если есть специалисты кто такие веши моделировал помогите пожалуйста!! Заранее благодарен!! :smile3046: module tb; ... wire [7:0] data; ... device dut( .data(data) ... ... assign data = give_data_to_device ? data_for_device : 8'hZZ; ... endmodule module device ( inout wire [7:0] data, ... ); ... тут data должна назначаться так же, как и выше ... endmodule и всё работает. Конфликты на такой шине приводят к иксам. Если нету источников - будут Z-ы (всё видно на картинках в моделсиме). Можно сделать tri1 иди tri0 вместо вайра - будет вместо Z-ов подтяжка к 1 или к 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 1 ноября, 2009 Опубликовано 1 ноября, 2009 · Жалоба Зачем вам продолжение! В продолжении написано стандартная часть подключения моделируемого модуля и входные значения!!Именно ТАМ и должно быть написан ваш inout inout используют при описание проекта, а при моделирование в качестве входных портов используют reg, а выходной wire!Бред сивой кобылы :cranky: reg и wire НИКАК не связанны с направлением портов, и еще у меня есть стойкое подозрение, что под 'портом' вы понимаете не то, что понимает Verilog :rolleyes: Порт - это входы и выходы МОДУЛЯ, перечисленные в ЗАГОЛОВКЕ модуля, а не где то в середине его тела. И менно так описывается в примере моделирования под Modelsim!Ой! А если у меня будет написано (на С) так - int i,j,k; float a,b,c; то по вашему это будет означать, что все (и везде) целые переменные должны называться i j или в крайнем случае k, а плавающие - a b и c? Ног в этом примере не описывается вариант что делать если в проекте стоит двунаправленный порт! Блин, я уже уморился спрашивать и говорить - ваш двунаправленный порт должен быть описан как inout в МОДЕЛИРУЕМОМ модуле, а не в тестбенче. В тестбенче это будет обычный wire. Если есть специалисты кто такие веши моделировал помогите пожалуйста!! Заранее благодарен!! :smile3046:Нафига вам специалисты, если вы их не слушаете? :maniac: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 1 ноября, 2009 Опубликовано 1 ноября, 2009 · Жалоба Нафига вам специалисты, если вы их не слушаете? :maniac: Специалистов много. А вот с учителями в стране действительно напряг. Я б ответил, да вот выше симулятора Квартуса еще не опускался. Чтобы влуд не разводить, давайте вместе. Я модуль, Вы тестбенч. module ap6 ( inout [7:0] da, inout [7:0] db, input oe_n, input [9:0] adr_arm ); wire dir; assign dir = (adr_arm == 10'h002), db = (dir & !oe_n) ? da : 8'hzz, da = (!dir & !oe_n) ? db : 8'hzz; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
neptune-1 0 1 ноября, 2009 Опубликовано 1 ноября, 2009 · Жалоба Я модуль, Вы тестбенч. odule testbench; reg [7:0] a; reg [7:0] b; reg oe_n; reg [9:0] addr; wire [7:0] da; wire [7:0] db; initial begin oe_n = 1'b0; a = 8'bz; b = 8'b1; addr = 10'h2; fork #50 addr = 10'b0; #50 b = 8'bz; #50 a = 8'b0; join end assign da = a; assign db = b; ap6 AP6(.da(da), .db(db),.oe_n(oe_n),.adr_arm(addr)); endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 2 ноября, 2009 Опубликовано 2 ноября, 2009 · Жалоба odule testbench; reg [7:0] a; reg [7:0] b; reg oe_n; reg [9:0] addr; wire [7:0] da; wire [7:0] db; initial begin oe_n = 1'b0; a = 8'bz; b = 8'b1; addr = 10'h2; fork #50 addr = 10'b0; #50 b = 8'bz; #50 a = 8'b0; join end assign da = a; assign db = b; ap6 AP6(.da(da), .db(db),.oe_n(oe_n),.adr_arm(addr)); endmodule Спасибо!! это то что нужно!! Теперь я все понял! =)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться