В чем разница между дисплеемпротивстробоскопапротивмонитора в Verilog?дисплей против строба против монитора в verilog?
ответ
Я буду красив и суммирую LRM (Справочное руководство по языку), но вы должны прочитать его. Все в IEEE Std 1800-2012 § 21,2 системы отображения задач (Технически SystemVerilog, но эти функции идентичны.)
$display
: печатать непосредственные значения- § 21.2.1 Дисплей и писать задачи
$strobe
: распечатать значения в конце текущего временного интервала- § 21.2.2 стробируется мониторинг
$monitor
: печать значения в конце текущего временного шага, если какие-либо ценности изменились.$monitor
можно вызвать только один раз; последовательный вызов будет отменять предыдущий.- § 21.2.3 Непрерывный мониторинг
$write
: такой же, как$display
, но не прекращается с новой строки (\n
)- § 21.2.1 Дисплей и записи задач
Пример:
reg [3:0] a,b;
integer i;
initial begin
$monitor("monitor a:%h b:%h @ %0t", a, b, $time);
for(i=0; i<4; i=i+1) begin
$strobe("strobe a:%h b:%h @ %0t", a, b, $time);
$display("display a:%h b:%h @ %0t", a, b, $time);
case(i)
0 : a = 4;
1 : b = 1;
2 : begin end // do nothing
3 : {a,b} = 9;
endcase
$display("display a:%h b:%h @ %0t", a, b, $time);
#1;
end
end
Выходы: (обратите внимание на порядок печати и, что монитор не отображается в момент времени 2)
дисплея a: xb: x @ 0
дисплей a: 4 b: x @ 0
монитор а: 4 б: х @ 0
строб A: 4 B: X @ 0
дисплея: с 4 Ь: х @ 1
дисплея: 4 б: 1 @ 1
монитора A: 4 B: 1 @ 1
строб A: 4 B: 1 @ 1
дисплей: 4 б: 1 @ 2
дисплей: 4 б: 1 @ 2
строб A: 4 B: 1 @ 2
дисплея : 4 б: 1 @ 3
дисплеем: 0 B: 9 @ 3
монитора A: 0 B: 9 @ 3
строб A: 0 B: 9 @ 3
Verilog/SystemVerilog содержит хорошо организованную очередь событий. Все утверждения в каждой метке времени выполняются в соответствии с этой очередью.
- $ дисплея выполняется в активной области, так что если есть какое-либо неблокируемое задание (который выполняет в INACTIVE области), это не будет показано на $ дисплея.
- $ write также выполняется в ACTIVE region, но для ввода другой строки требуется явный вызов символа новой строки (\ n). Эта системная задача обычно используется, когда вы хотите отображать многомерный массив, используя для цикла.
- $ строб выполняется в MONITOR/POSTPONE регион, то есть в конце времени печать. Следовательно, обновленное значение отображается строкой $.
- $ монитор отображается каждый раз, когда изменяется один из параметров его отображения. Должен использоваться только один $ monitor для Simulation.
Посмотрите на это изображение: VERILOG EVENT REGIONS
Пример кода доступна по адресу: Display/Strobe/Monitor
Надежда этот код становится ясно.
Я думаю, что $ strbe и $ monitor выполняются в области _postponed_. –
@Matthew Taylor. Спасибо за указатели. Я отредактировал ответ. – sharvil111
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что нам не нужно читать руководство для вас. Пожалуйста, покажите, что вы исследовали до сих пор и все еще находите сбивающим с толку. –
@ dave_59 Одной из причин строгих правил в SO является утверждение о том, что мы создаем базу данных вопросов и ответов. Этот вопрос кажется идеальным для такой базы данных. На самом деле, я просто Googled «строгальный экран verilog» (пытаясь быть справедливым и думая, на что может быть кто-то действительно Google), и Google пригласил меня добавить «монитор», и эта страница заняла второе место. –
@mathew taylor, «Off-Topic» не имеет ничего общего с вопросом, является ли вопрос хорошим, плохим или идеальным. Это вопрос о том, подходит ли тема вопроса к сфере охвата сообщества, в которое он был помещен. –