这是控制代码
process(current_GPIF_STATE,usb_rd_empty,usb_wr_full)
begin
--next_GPIF_STATE <= current_GPIF_STATE;
case current_GPIF_STATE is
when USB_RD_IDEL =>
next_GPIF_STATE <= USB_RD_W1;
--usb interface------------------
usb_cs_buf <= act_off_usb;
usb_wr_buf <= act_off_usb;
usb_rd_buf <= act_off_usb;
usb_oe_buf <= act_off_usb;
usb_pkt_buf <= act_off_usb;
----PC write cmd
usb_a0_buf <= '0';
usb_a1_buf <= '0';
when USB_RD_W1 =>
next_GPIF_STATE <= USB_RD_W2;
usb_a0_buf <= '1';
usb_a1_buf <= '1';
when USB_RD_W2 =>
next_GPIF_STATE <= USB_RD_W3;
usb_a0_buf <= '1';
usb_a1_buf <= '1';
when USB_RD_W3 =>
next_GPIF_STATE <= USB_RD_CS;
usb_a0_buf <= '1';
usb_a1_buf <= '1';
when USB_RD_CS =>
next_GPIF_STATE <= USB_RD_OE;
usb_cs_buf <= act_on_usb;
usb_a0_buf <= '1';
usb_a1_buf <= '1';
when USB_RD_OE =>
next_GPIF_STATE <= USB_RD_START_STATE;
usb_cs_buf <= act_on_usb;
usb_a0_buf <= '1';
usb_a1_buf <= '1';
usb_oe_buf <= act_on_usb;
when USB_RD_START_STATE =>
usb_cs_buf <= act_on_usb;
usb_a0_buf <= '1';
usb_a1_buf <= '1';
usb_oe_buf <= act_on_usb;
usb_rd_buf <= act_on_usb;
if usb_rd_empty = act_off_usb then
next_GPIF_STATE <= USB_RD_START_STATE;
else
next_GPIF_STATE <= USB_RD_CS;
end if;
end case;
end process;
|