process (clk, reset_n) begin if (reset_n = '0') then mresp_data <= x"0000000000000000" after TCQ;
elsif (tx_cs = TX_GET_D0) then mresp_data(0 to 31) <= mgt_rx_data after TCQ;
elsif (tx_cs = TX_GET_D1) then mresp_data(32 to 63) <= mgt_rx_data after TCQ; end if; end process;
次のように変更します。
process (clk, reset_n) begin if (reset_n = '0') then mresp_data_int <= x"0000000000000000" after TCQ;
elsif rising_edge(clk) then if (tx_cs = TX_GET_D0) then mresp_data_int(0 to 31) <= mgt_rx_data after TCQ; mresp_data_int(32 to 63) <= mresp_data_int2(32 to 63) after TCQ;
elsif (tx_cs = TX_GET_D1) then mresp_data_int(0 to 31) <= mresp_data_int2(0 to 31) after TCQ; mresp_data_int(32 to 63) <= mgt_rx_data after TCQ; end if; end if; end process;
always @(sel_bus_q or mgt_di_phy or mgt_di_usr or mgt_di_log) begin case (sel_bus_q) 3'b011: mgt_rx_data = mgt_di_phy; 3'b101: mgt_rx_data = mgt_di_log; 3'b110: mgt_rx_data = mgt_di_usr; default: mgt_rx_data = mgt_rx_data; endcase end
次のように変更します。
always @(sel_bus_q or mgt_di_phy or mgt_di_usr or mgt_di_log) begin case (sel_bus_q) 3'b011: mgt_rx_data = mgt_di_phy; 3'b101: mgt_rx_data = mgt_di_log; 3'b110: mgt_rx_data = mgt_di_usr; default: mgt_rx_data = 32'hx; endcase end