Forum Discussion
Tri-state bus data bus delayed
Thanks for your reply,
So below is the VHDL code at the upper level
Signal usbDmuxOUT, usbDreadSMout_withbufferedZEROES :std_logic_vector(31 downto 0);
.....
usbDreadSMout is my "read cycle" output data from an internal state machine defined as :-
usbDreadSMout :out std_logic_vector(7 downto 0);
......
usbDreadCYCLEchanSELen is my open enable for usbDreadSMout from the same internal state machine
......
usbDWRSMout is my "write cycle" output data from an internal state machine defined as :-
usbDWRSMout :out std_logic_vector(31 downto 0);
......
usbDen is my open enable for usbDWRSMout from the same internal state machine
My Bi-directional bus USBD [ usbDWRSMout :out std_logic_vector(31 downto 0); ] is implemented as follows :-
usbDreadSMout_withbufferedZEROES(7 downto 0) <= usbDreadSMout; -- DEBUG USB429
usbDreadSMout_withbufferedZEROES(31 downto
usbDmuxOUT <= usbDreadSMout_withbufferedZEROES when usbDreadCYCLEchanSELen = '1' else usbDWRSMout; -- DEBUG USB429
USBD <= usbDmuxOUT when usbDen = '1' or usbDreadCYCLEchanSELen = '1' else (others => 'Z');
Below I have attached the RTL implementation of the above
Below I have added a shot of the Technology Map Viewer and in fact there does appear to be a latch on the usbDmuxOUT signals for some reason ???
- SDavi93 years ago
Occasional Contributor
And in fact when I clicked on one of these Latches and asked for its location in the RTL view I in fact got the following