Запись значения в ОЗУ — это небольшая часть моего проекта, все работает, но я не могу объяснить одну вещь, связанную с ОЗУ/цифровым таймингом.
Я напишу описание в отношении изображения, которое я добавил.
Насколько я имел представление об оперативной памяти, она пишет прямо по переднему фронту такта. Таким образом, данные, видимые на data_in по переднему фронту тактового сигнала, будут записаны в ОЗУ. Даже если data_in изменится на тех же тактах, что и write_gos, старые данные будут записаны. Тогда почему в моем случае оперативка пишет -36 а не -10.
Теперь я попытался изменить значение data_in на значение часов (0/1), и теперь оно работает так, как должно. Что происходит? ram_in — это data_in ОЗУ в данном случае.
macc_out == ram_in == data_in
Поскольку ваш тактовый сигнал не показан, я предполагаю, что это связано с изменением других сигналов.
Исходя из этого, первый, кажется, работает правильно, поскольку запись работает только на нарастающем фронте тактового сигнала и высоком логическом уровне сигнала *write_en*. Итак, вот почему вы видите, что данные записываются только в одном цикле после того, как сигнал разрешения становится высоким.
Что касается второй симки, кажется, что тактовый сигнал напрямую связан с сигналом *ram_in*. Это бы объяснило. Данные фиксируются по переднему фронту тактового сигнала. В этом случае единственными данными, которые когда-либо фиксируются, является 0. На нарастающем фронте *ram_io* всегда равен 0.
Фотон
Артурс Ванцанс