DIOWn и DIORn может всёже предварительно пропустить через пару триггеров? always @(posedge CLK or negedge RESETn) if (~RESETn) begin DIOWn_d1 <= 1; DIOWn_d2 <= 1; DIORn_d1 <= 1; DIORn_d2 <= 1; end else begin DIOWn_d1 <= DIOWn; DIOWn_d2 <= DIOWn_d1; DIORn_d1 <= DIORn; DIORn_d2 <= DIORn_d1; end и далее работать с ..._d2 . Ну и сответсвенно проделать такую буферизацию со всей входной шиной.
Ошибочная запись может происходить при инициализации. В зависимости от активного уровня сигнала инициализацию надо делать не только в ноль.