собственно сообщение 527.
в module counter должен быть ТОЛЬКО синтезируемый код.
а в module testbench всё что относится к тестированию.
Собственно там так и сделано - норм.
По module counter (в вивадо или алтера) можно посмотреть "схему" во что превращается описание. Какие есть возможности у других программ - я без понятия.
Titus(15.10.2024)
Затворные емкости в любом случае разрядятся со временем, ибо существует ток утечки затворной емкости в нашем неидеальном миреИ для чипов использующих динамические латчи в доках обычно прописывается минимально возможная частота клока, при которой динамические латчи работают без амнезии
. Также возможны варианты построения ДФФ на паре SLATCH + DLATCH, в этом случае статический латч обычно идет первым в цепочке и сохраняет свое состояние при отсуствии клока очень продолжительное время, а следующий динамический латч повторяет входные данные с первого слатча.
Пока никто не прояснил мои вопросы по ModelSim, спрошу еще по Verilog'у:
Как обычно реализуют модули с двунаправленными шинами? Например, как шина данных на Z80?
Titus(15.10.2024)
DATA объявляется так :Вот наш с Оргом общий проект старого верилога 6502 https://github.com/andkorzh/OLD-Veri...log/Core6502.vinout[7:0] DATA;
Топ модуль содержит двунаправленную шину DATA[7:0].
От конфликтов избавится можно путем разделения доступа с помощью комбинаторики, чтобы исключалась возможность одновременного присуствия двух и более драйверов на шине. Обычно процессоры в своей внутренней логике уже содержат подобные блокировки, и оно будет работать "из коробки" если точно повторять внутреннюю структуру чипа. Например декодер портов чтения, который имеет только одно значение на выходе и управляет загрузкой данных на шину из разных источников, это избавляет от этой проблемы полностью.
Последний раз редактировалось and1981; 15.10.2024 в 12:36.
Titus(15.10.2024)
module top(
input clk,
input rd,
input wr,
inout data
);
reg data_out;
wire data_in;
always @(posedge clk)
if (wr)
data_out = data_in;
assign data = rd ? data_out : 1'bz;
assign data_in = data;
endmodule
schematic.pdf
- - - Добавлено - - -
module top(
input clk,
input csA,
input csB,
input dataA,
input dataB,
output data
);
reg data;
always @(posedge clk)
begin
case ({csA,csB})
2'b10: data = dataA;
2'b01: data = dataB;
2'b00: data = data;
default: data = 1'b1;
endcase
end
endmodule
schematic1.pdf schematic2.pdf
- - - Добавлено - - -
Ну или вот такое извр
always @(posedge clk)
begin
data <= csA ? dataA : csB ? dataB : 1'bz;
end
schematic3.pdf schematic4.pdf
- - - Добавлено - - -
Можно - но НЕ нужно использовать значение 1'bz внутри схемы.
1'bz - это для ВНЕШНИХ буферов (физический вывод).
ПС: примеры не самые изящные - айэмсорри (с)
Titus(15.10.2024)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)