
Сообщение от
b2m
Я не специалист, но по-моему "always @(negedge clk or negedge SHRTC)" это неправильно. Попробуй разделить на две части, одна из которых будет привязана к negedge clk, а вторая - к negedge SHRTC.
Формально в этом нету особой неправильности. Но на практике все такие конструкции имеют такой вид:
Код:
reg [3:0] rrr;
always @(posedge xxx or posedge yyy)
if (yyy)
rrr <= 0;
else
rrr <= rrr + 1;
Если посмотреть на RTL схему от этой конструкции, то можно увидеть, что yyy подается на вход асинхронного сброса (или асинхронной установки) счетчика, а xxx -- на тактирующий вход. Какой фронт используется у обоих сигналов, значения не имеет.
В коде вертикальной развертки все просто -- одна из половинок делает асинхронную установку. А в горизонтальной написано так, что на оба фронта загружается не константа, выходит, что это не регистр с асинхронным сбросом, а что-то типа двухпортовой ячейки, или я даже не знаю что это. Наверное, Квартус тоже не понял.